[SQL Server] Failover en log shipping

Ce billet présente une approche élémentaire de failover manuel du log shipping.

SQL Server n’offre pas de solution native de failover (basculement) automatique du log shipping en cas de sinistre ou d’indisponibilité de la base de données principale. En cas de nécessité de failover de la base principale vers la base secondaire, suivez les étapes suivantes pour mener à bien l’opération :

1. Travail préliminaire :

a. Si la base principale est accessible (via SQL Server Management Studio, par exemple), essayez de réaliser une dernière sauvegarde transactionnelle (appelons-la ifc_suite_last_trn.trn) de la base principale avec l’option NORECOVERY :

USE distribution
GO
BACKUP LOG IFC_SUITE TO DISK=N'S:\SQL Backups\TRN\IFC_SUITE\LSBackup_IFC_SUITE\ifc_suite_last_trn.trn'
WITH NORECOVERY
GO

L’objectif est de récupérer les toutes dernières modifications éventuelles de la base principale n’ayant pas été copiées vers la base secondaire.

b. Si ce n’est pas le cas, passez directement à l’étape 2b).

2. Restauration de la base secondaire avec l’option RECOVERY.

a. Si la dernière sauvegarde transactionnelle faite à l’étape 1a) s’est bien déroulée, copiez-la vers le dossier de votre choix au sein du serveur secondaire (S:\SQL Backups\TRN\IFC_SUITE\LSCopy_IFC_SUITE, dans notre exemple), puis restaurez la base secondaire à partir de cette même sauvegarde avec l’option RECOVERY:

USE distribution
RESTORE LOG IFC_SUITE FROM DISK=N'S:\SQL Backups\TRN\IFC_SUITE\LSCopy_IFC_SUITE\ifc_suite_last_trn.trn'
WITH RECOVERY
GO

b. Si l’étape 1a) n’est pas satisfaite ou impossible à satisfaire, restaurez directement la base secondaire :

RESTORE DATABASE IFC_SUITE WITH RECOVERY
GO

Il n’est pas garanti que la base secondaire soit suffisamment à jour par rapport à la base principale.

3. Traitement des users orphelins :

a. Si vous avez appliqué, pour tous les logins SQL concernés par la base principale sur le serveur de la base secondaire, la méthode de mapping automatique d’utilisateurs orphelins avec le procédure stockée sp_autofix_users (voir annexe), vous pouvez ignorer cette étape.

b. Dans le cas échéant, exécutez la procédure stockée usp_autofix_users suivante :

–- Sur le serveur secondaire
USE IFC_SUITE
GO
EXEC usp_autofix_users
GO

4. Désactivation des jobs associés au log shipping, si ce n’est déjà fait. Ou si vous souhaitez rétablir le log shipping, mais avec la base secondaire comme nouvelle base principale, vous pouvez suivre le modus operandi de mise-en-place du log shipping
ici ou .

Annexe

Cette procédure stockée permet d’effectuer un rattachement d’utilisateurs orphelins à leur base de données d’origine. Elle est à déployer (au moins) sur le serveur où se trouve la base vers lequel doit se faire le failover.

USE master
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE usp_autofix_users
AS
/*
Auteur : Mohamed CHERIF – MCP, MCTS, MCITP SQL Server DBA
Mode d'utilisation:
 –- pour chaque BD: SP_MSFOREACHDB "USE ? GO; EXEC sp_autofix_users;"
 –- pour une BD: USE laBD GO; EXEC sp_autofix_users;
*/
-- Déclaration de variables
SET NOCOUNT ON
DECLARE @login SYSNAME
PRINT DB_NAME()
PRINT '–-–-–-–-'
DECLARE user_update_cursor CURSOR FAST_FORWARD
FOR
   SELECT DISTINCT name
   FROM sysusers
   WHERE issqluser = 1 AND name NOT IN ('dbo', 'guest', 'sys', 'INFORMATION_SCHEMA')
   ORDER BY name
OPEN user_update_cursor
   –- Lancement des opérations
   FETCH NEXT
   FROM user_update_cursor INTO @login
WHILE @@FETCH_STATUS = 0
BEGIN
   PRINT @login
   EXEC sp_change_users_login 'update_one', @login, @login
   –- Tant qu'il n'y a pas d'erreurs bloquantes...
   FETCH NEXT
   FROM user_update_cursor INTO @login
END
CLOSE user_update_cursor
DEALLOCATE user_update_cursor
GO
Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s