AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 63835
Accepted
paulH
paulH
Asked: 2014-04-25 06:11:22 +0800 CST2014-04-25 06:11:22 +0800 CST 2014-04-25 06:11:22 +0800 CST

Alerta de transação não enviada mais antiga para o Grupo de Disponibilidade

  • 772

No SQL Server 2008, ao usar o espelhamento de banco de dados, era possível configurar alertas quando a transação não enviada mais antiga excedia um determinado limite. Poderíamos verificar o estado de qualquer espelhamento de banco de dados usando o comando de menu Launch Database Mirroring Monitor.

No SQL Server 2012 agora temos Grupos de Disponibilidade. Parece-me que existe o mesmo problema potencial que, se as transações não puderem ser enviadas para o servidor secundário, o espelhamento será suspenso e, potencialmente, os logs de transações preencherão todo o nosso espaço em disco. No entanto, a ferramenta Database Mirroring Monitor não parece reconhecer os bancos de dados em Availability Groups como sendo espelhados.

Existe uma maneira de configurar um alerta se a transação não enviada mais antiga exceder um determinado valor? Existe uma maneira de definir esse determinado valor?

sql-server-2012 availability-groups
  • 1 1 respostas
  • 1373 Views

1 respostas

  • Voted
  1. Best Answer
    Kin Shah
    2014-04-25T13:28:35+08:002014-04-25T13:28:35+08:00

    Pergunta muito interessante..

    Com base no meu entendimento, tentarei responder a isso.

    Outros especialistas podem me corrigir sempre que eu estiver errado.


    AlwaysON é diferente do espelhamento de banco de dados, especialmente ao enviar os blocos de log para a(s) réplica(s) secundária(s).

    A diferença é como o bloco de log é enviado para a instância espelhada (para espelhamento) ou réplica (para AlwaysON).

    Para espelhamento de banco de dados

    • ele libera o bloco de log para o disco e, uma vez concluído localmente, envia o bloco de log para o servidor secundário.

    Para AlwaysON

    • ele libera os blocos de log em paralelo ao secundário usando um scanner de log secundário no primário.
    • A beleza é que o secundário pode ter blocos de log endurecidos mesmo antes que a E/S primária seja concluída, o que aumenta o desempenho e reduz a janela NOT IN SYNC .
    • Agora a parte interessante é que para monitorar o cenário acima, existem mensagens de progresso . O secundário envia mensagens ao primário indicando o nível de LSN protegido . O primário usa essas informações para ajudar a determinar o estado de sincronização.

    Portanto, não há nenhum mecanismo de alerta como o espelhamento para realmente poder saber a transação não enviada mais antiga. A única maneira de saber é usando DMVs. e possivelmente Eventos Estendidos.

    Como observação, você pode usar o gerenciamento baseado em políticas para monitorar a integridade do AlwaysON .

    Abaixo está a consulta que estou usando para monitorar meu ambiente AlwaysON:

    /************************************************************************************************
    Author      :   Kin Shah
    Purpose     :   Find "How far is secondary behind primary"
    
                    Written for DBA.STACKEXCHANGE.COM
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    Disclaimer  :   Any scripts found on internet you must irst
                        - understand what it is doing
                        - then test it if it suits your requirements
                    I am not responsible for any data loss or any blue screen that you might get.
                         ^^^
                    *** USE THIS AS PER YOUR OWN RISK ****
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    *************************************************************************************************/
    
    SELECT AGS.NAME AS AGGroupName
        ,AR.replica_server_name AS InstanceName
        ,HARS.role_desc
        ,Db_name(DRS.database_id) AS DBName
        ,DRS.database_id
        ,is_ag_replica_local = CASE 
            WHEN DRS.is_local = 1
                THEN N'LOCAL'
            ELSE 'REMOTE'
            END
        ,AR.availability_mode_desc AS SyncMode
        ,DRS.synchronization_state_desc AS SyncState
        ,DRS.last_hardened_lsn
        ,DRS.end_of_log_lsn
        ,DRS.last_redone_lsn
        ,DRS.last_hardened_time
        ,DRS.last_redone_time
        ,DRS.log_send_queue_size
        ,DRS.redo_queue_size AS 'Redo_Queue_Size(KB)'
        /*
        if the last_hardened_lsn from the primary server == last_hardened_lsn from secondary server
        then there is NO LATENCY
        */
        ,DATEDIFF(SECOND, DRS.last_redone_time, DRS.last_hardened_time)
    FROM sys.dm_hadr_database_replica_states DRS
    LEFT JOIN sys.availability_replicas AR ON DRS.replica_id = AR.replica_id
    LEFT JOIN sys.availability_groups AGS ON AR.group_id = AGS.group_id
    LEFT JOIN sys.dm_hadr_availability_replica_states HARS ON AR.group_id = HARS.group_id
        AND AR.replica_id = HARS.replica_id
    ORDER BY Db_name(DRS.database_id)
        ,is_ag_replica_local
    

    Referências :

    • Como funciona: sempre ativado – quando meu failover secundário está pronto?
    • Grupos de disponibilidade AlwaysOn Exibições e funções de gerenciamento dinâmico
    • 4

relate perguntas

  • SQL Server 2012 Criar índice com Sort In TempDb On - Gains False?

  • Transparência de failover do SQL Server AlwaysOn

  • Por que as sequências Denali devem ter um desempenho melhor do que as colunas de identidade?

  • O SQL Server não deveria oferecer suporte a RANGE?

  • O que é SQL Server "Denali"? O que há de novo?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve