Lag de replicação / replicação parada
Sintoma
O standby/réplica está ficando para trás ou parou completamente; as réplicas de leitura mostram dados desatualizados.
1. Qual o tamanho do atraso, e ele está crescendo ou estável
Qual é o atraso em segundos/bytes? É uma defasagem estável ou cresce continuamente? Se cresce, a réplica não acompanha a aplicação; se está estável, houve uma parada momentânea.
Oracle
SELECT name, value, unit FROM v$dataguard_stats WHERE name LIKE '%lag%';PostgreSQL
SELECT client_addr, state, write_lag, flush_lag, replay_lag FROM pg_stat_replication;MySQL
SHOW REPLICA STATUS\G -- Seconds_Behind_SourceSQL Server
SELECT ar.replica_server_name, drs.redo_queue_size, drs.log_send_queue_size FROM sys.dm_hadr_database_replica_states drs JOIN sys.availability_replicas ar ON drs.replica_id=ar.replica_id;Redis
INFO replication # master_repl_offset vs slave offset2. A replicação está rodando, há erros
Qual é o estado das threads IO/SQL, do processo de aplicação, a conexão caiu? Se houver um erro (ex.: linha conflitante, tabela ausente), a aplicação parou; leia a mensagem de erro.
MySQL
SHOW REPLICA STATUS\G -- Replica_IO_Running / Replica_SQL_Running / Last_ErrorPostgreSQL
SELECT status, last_msg_receipt_time, latest_end_lsn FROM pg_stat_wal_receiver; -- on the standbyOracle
SELECT process, status, sequence#, thread# FROM v$managed_standby WHERE process LIKE 'MRP%' OR process LIKE 'RFS%';3. Encontre o gargalo
Por que não consegue acompanhar? Aplicação em thread única mais uma carga pesada de escrita (PG/MySQL aplicam majoritariamente em série), um gargalo de I/O no standby, a rede, ou uma consulta longa bloqueando a aplicação (PG hot_standby_feedback / recovery conflict)?
4. Feche o atraso
Acelere a aplicação: ative a aplicação paralela (MySQL replica_parallel_workers — slave_parallel_workers antes da 8.0.26; o PG não tem, mas há configurações de recovery), melhore o I/O do standby, resolva a consulta que bloqueia a aplicação. Se parou com erro: corrija o erro (resolva a linha conflitante manualmente) e retome a replicação.
5. Reconstrua se estiver quebrada
Se a réplica estiver muito atrasada/quebrada, ressincronizar é o mais limpo: reconstrua o standby a partir de um backup recente (PG pg_basebackup, MySQL clone/xtrabackup, Oracle RMAN duplicate). Crítico: descubra a causa antes de reconstruir, ou vai acontecer de novo.