Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: Azure SQL Database
Na geo-replicação ativa, a réplica geo-secundária recebe e aplica continuamente registos de registo de transações do primário. Quando a réplica secundária não consegue aplicar logs tão rapidamente quanto o primário os gera, acumula-se um backlog (fila de redo) e o intervalo de tempo aumenta (redo lag). Esta situação pode afetar a atualização em modo somente leitura no servidor secundário e aumentar o tempo de failover.
- Fila de refazer: O volume de registos de transações que a geo-replicação envia para o secundário, mas ainda não se aplica.
- Redo lag: O tempo decorrido entre o commit da transação na primária e a conclusão da replay na secundária.
A geo-replicação é assíncrona. O lag de refazer na réplica secundária não causa esperas na primária, mas o lag de refazer pode resultar em dados desatualizados na secundária.
Sintomas
- Dados obsoletos no secundário para cargas de trabalho apenas de leitura (relatórios, análises ou leituras descarregadas).
- Tempo de failover mais longo, que aumenta o Objetivo de Tempo de Recuperação (RTO).
- Pressão sustentada de recursos sobre o sistema secundário, reduzindo a sua capacidade de recuperar terreno.
- Confirme o atraso de refazer no sys.dm_database_replica_states do DMV, se
redo_queue_size > 0estiver a crescer esecondary_lag_secondsestiver a aumentar.
Porque é que o atraso de refazer aumenta
Embora a base de dados secundária seja apenas de leitura, mantém ainda um registo de transações para operações internas, incluindo a reprodução dos registos do primário. Quando a fila de refazer cresce, o secundário tem de reter mais dados de registo de transações.
Esta situação pode levar a:
- Crescimento do log de transações no sistema secundário.
- Maior consumo de armazenamento, o que pode afetar custos e desempenho.
- Cenários potenciais de limitação quando os limiares são ultrapassados.
Impacto do desajuste de tamanho das réplicas
Deve configurar a réplica primária e geo-secundária com o mesmo objetivo de nível de serviço (SLO), redundância de armazenamento de backup, nível de computação (provisionado ou serverless) e tamanho de computação (DTUs ou vCores).
Se configurar uma base de dados secundária com um tamanho de computação inferior ao da base de dados principal, poderá experienciar:
- Conflito de recursos no secundário (CPU, I/O), que atrasa as operações de redo.
- Incapacidade de acompanhar a taxa de geração de registos de transações do primário.
- Aumento do tamanho da fila de revisão, o que agrava a latência e reduz a eficácia da replicação.
Recommendations
Para reduzir o atraso de refazer e manter a saúde da replicação e o uso eficiente dos logs no secundário:
Alinhar o SLO e calcular os tamanhos. Garantir que a base de dados secundária tem o mesmo nível de desempenho que a primária.
- Configurar geo-secundária: Geo-replicação ativa
- Escalar uma única base de dados: Escalar recursos de base de dados únicos em Azure SQL Database
- Escalar um pool elástico: Escalar recursos do pool elástico em Azure SQL Database
- Considerações de custo: Planeia e gere custos para Azure SQL Database
Monitorize regularmente. Utilize vistas de gestão dinâmica (DMVs) como sys.dm_database_replica_states para acompanhar o atraso de recuperação e o tamanho da fila. O atraso de refazer é confirmado quando
redo_queue_size > 0está a aumentar esecondary_lag_secondstambém está a aumentar.Otimize as cargas de trabalho:
- Reduzir transações de longa duração no secundário e picos elevados de geração de logs no primário.
- Evite grandes reconstruções de índice durante os horários de pico. As rebuilds podem adquirir bloqueios de modificação de esquema (SCH-M), que podem bloquear o trabalho de redo no secundário e contribuir para o acúmulo na fila de redo.
- Reduzir transações de longa duração no secundário e picos elevados de geração de logs no primário.