Temos um Grupo de Disponibilidade SQL 2014 com 3 réplicas de nosso banco de dados primário - 2 em nosso data center principal e 1 em nosso centro de DR.
Fizemos uma grande reconstrução de índice no primário, que obviamente precisa ser replicado nos secundários. Acredito que esta replicação já terminou. Quando eu corro:
select redo_queue_size, log_send_queue_size
from sys.dm_hadr_database_replica_states
where database_id = 28
Eu recebo:
redo_queue_size |log_send_queue_size
0 | 0
0 | 0
NULL | NULL
O que me sugere que a replicação terminou. No entanto, quando eu corro
select log_reuse_wait, log_reuse_wait_desc from sys.databases where database_id = 28
Eu recebo:
log_reuse_wait | log_reuse_wait_desc
6 | REPLICATION
Encontrei esta consulta:
select *
from sys.dm_hadr_database_replica_cluster_states
where database_name = DB_NAME()
que mostra o estado da replicação que novamente sugere que tudo é replicado, mas não pode ser truncado por algum motivo:
is_failover_ready | is_pending_secondary_suspend | recovery_lsn | truncation_lsn
1 | 0 | 4294967295429496729500001 | 793156000000001600001
1 | 0 | 4294967295429496729500001 | 793156000000001600001
1 | 0 | 4294967295429496729500001 | 793156000000001600001
As tarefas de backup do log de transações estão sendo executadas e feitas backup conforme o esperado, mas a porcentagem do arquivo de log usado continua a crescer devido ao tráfego normal. Como faço para que o SQL reutilize o arquivo de log de transações?
Parece que a execução do trabalho CDC Capture parou. Reiniciar isso (o que demorou um pouco) limpou o log e permitiu que ele fosse reescrito.