强制故障转移(FORCE_FAILOVER_ALLOW_DATA_LOSS)及故障转移后的恢复
SQL ServerAlways On 与高可用命令
-- 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;作用
主副本完全丢失时,接受数据丢失将 DR 副本提升为主副本;随后恢复其他副本上挂起的数据移动,并在旧主副本恢复后创建快照,以检查未到达新主副本的事务。
适用场景
主数据中心宕机、只剩异步副本,或同步副本不是 SYNCHRONIZED 状态但仍必须故障转移时。
注意
数据丢失:最后一个已固化 LSN 之后的事务会丢失。先获得业务方对 RPO 的认可。强制故障转移后所有辅助数据库都处于 SUSPENDED 状态;在 HADR RESUME 之前日志不会截断并持续增长。若 WSFC 仲裁丢失,先以强制仲裁启动群集(PowerShell:Start-ClusterNode -FixQuorum),否则命令会失败。在旧主副本上执行 HADR RESUME 会永久丢弃丢失的事务;未创建快照前不要恢复。