DBAtlas · 데이터베이스 운영 아틀라스

복제 상태 및 지연 조회

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의 주요 지연 지표다. standby에서 실행한다.

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'는 동기 replica를 뜻한다.

MySQL

SHOW REPLICA STATUS\G
-- Before 8.0.22: SHOW SLAVE STATUS\G

Seconds_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가 크면 secondary replica가 뒤처지고 있다는 뜻이다.

MongoDB

rs.printSecondaryReplicationInfo()
// Detailed status: rs.status()

각 secondary가 primary보다 몇 초 뒤처져 있는지 보여 준다. optimeDate 값을 비교한다.

Redis

INFO replication
# Check the role, connected_slaves, master_repl_offset,
# and slaveN:...,offset=... lines

master_repl_offset과 slave offset의 차이가 지연이다. master_link_status는 'up'이어야 한다.

DBAtlas에서 열기 →