显示复制状态和延迟
Oracle
-- Role and mode:
SELECT database_role, open_mode FROM v$database;
-- Data Guard lag:
SELECT name, value, unit FROM v$dataguard_stats
WHERE name LIKE '%lag%';Apply lag 和 transport lag 是 Data Guard 的主要延迟指标;在备库上执行。
PostgreSQL
-- On the PRIMARY:
SELECT client_addr, state, sync_state,
write_lag, flush_lag, replay_lag
FROM pg_stat_replication;
-- On the STANDBY:
SELECT now() - pg_last_xact_replay_timestamp() AS replay_lag;replay_lag 是回放延迟;sync_state = 'sync' 表示同步副本。
MySQL
SHOW REPLICA STATUS\G
-- Before 8.0.22: SHOW SLAVE STATUS\GSeconds_Behind_Source 给出延迟;Replica_IO_Running 和 Replica_SQL_Running 必须为 'Yes'。SHOW SLAVE STATUS 在 8.0.22–8.3 中是别名,并已在 8.4 中移除。
SQL Server
SELECT ar.replica_server_name, drs.synchronization_state_desc,
drs.log_send_queue_size, drs.redo_queue_size
FROM sys.dm_hadr_database_replica_states drs
JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id;适用于 Always On。redo_queue_size 较大表示辅助副本正在落后。
MongoDB
rs.printSecondaryReplicationInfo()
// Detailed status: rs.status()显示每个从节点落后主节点多少秒;比较的是 optimeDate 值。
Redis
INFO replication
# Check the role, connected_slaves, master_repl_offset,
# and slaveN:...,offset=... linesmaster_repl_offset 与 slave offset 之差即为延迟;master_link_status 必须为 'up'。