DBAtlas · Atlas de operaciones de bases de datos

Failover forzado (FORCE_FAILOVER_ALLOW_DATA_LOSS) y recuperación posterior

SQL ServerAlways On y HA

Comando

-- 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;

Qué hace

Convierte una réplica de DR en primario, aceptando pérdida de datos, cuando el primario se ha perdido por completo; luego reanuda el movimiento de datos suspendido en las demás réplicas y, cuando vuelve el antiguo primario, toma un snapshot para inspeccionar las transacciones que nunca llegaron al nuevo primario.

Cuándo usarlo

Cuando el centro de datos primario está caído, solo queda una réplica asíncrona, o una réplica síncrona no está SYNCHRONIZED y aun así se requiere un failover.

Precaución

PÉRDIDA DE DATOS: se pierden las transacciones posteriores al último LSN endurecido (hardened). Obtenga primero la aprobación del RPO por parte del negocio. Tras un failover forzado todas las bases de datos secundarias quedan SUSPENDED; el log no se trunca y sigue creciendo hasta HADR RESUME. Si se pierde el quorum de WSFC, inicie primero el clúster con quorum forzado (PowerShell: Start-ClusterNode -FixQuorum); de lo contrario el comando falla. HADR RESUME en el antiguo primario descarta de forma permanente las transacciones perdidas; no reanude sin tomar el snapshot.

Abrir en DBAtlas →

Relacionado