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

강제 페일오버 (FORCE_FAILOVER_ALLOW_DATA_LOSS) 및 페일오버 후 복구

SQL ServerAlways On 및 HA

명령어

-- 1) On each candidate secondary: pick the most current one (highest end_of_log_lsn)
SELECT ag.name AS ag_name, DB_NAME(drs.database_id) AS db,
       drs.synchronization_state_desc, drs.end_of_log_lsn, drs.last_commit_time
FROM   sys.dm_hadr_database_replica_states drs
  JOIN sys.availability_groups ag ON ag.group_id = drs.group_id
WHERE  drs.is_local = 1;

-- 2) On the chosen replica (while the primary is unreachable):
ALTER AVAILABILITY GROUP [AG_Musteri] FORCE_FAILOVER_ALLOW_DATA_LOSS;

-- 3) On the other secondaries, resume the suspended data movement:
ALTER DATABASE [Musteri] SET HADR RESUME;

-- 4) When the old primary returns (now a SUSPENDED secondary):
--    take a snapshot first to inspect the lost transactions, then resume
CREATE DATABASE [Musteri_lost_snap]
  ON (NAME = N'Musteri', FILENAME = N'D:\Data\Musteri_lost_snap.ss')
  AS SNAPSHOT OF [Musteri];
ALTER DATABASE [Musteri] SET HADR RESUME;

하는 일

primary를 완전히 잃었을 때 데이터 손실을 감수하고 DR replica를 primary로 만든다. 이후 다른 replica에서 중단된 데이터 이동을 재개하고, 이전 primary가 돌아오면 새 primary에 도달하지 못한 트랜잭션을 검사하기 위해 스냅샷을 만든다.

사용 시점

primary 데이터 센터가 다운되었거나, 비동기 replica만 남았거나, 동기 replica가 SYNCHRONIZED가 아닌데도 페일오버가 필요할 때.

주의

데이터 손실: 마지막 hardened LSN 이후의 트랜잭션이 손실된다. 먼저 업무 측에서 RPO 승인을 받는다. 강제 페일오버 후 모든 secondary 데이터베이스는 SUSPENDED 상태가 되며, HADR RESUME 전까지 로그가 truncate되지 않고 계속 커진다. WSFC quorum을 잃었다면 먼저 forced quorum으로 클러스터를 시작한다(PowerShell: Start-ClusterNode -FixQuorum). 그렇지 않으면 명령이 실패한다. 이전 primary에서 HADR RESUME을 실행하면 손실된 트랜잭션이 영구 폐기되므로 스냅샷을 만들기 전에는 재개하지 않는다.

DBAtlas에서 열기 →

관련 항목