Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Configurer l'envoi de journaux SQL Server

Cet article explique le processus de déploiement étape par étape de l'envoi de journaux SQL Server. Il s'agit de la solution de reprise après sinistre au niveau de la base de données, facile à configurer et à entretenir.

L'envoi de journaux comporte trois étapes :

  1. Générer la sauvegarde du journal sur la base de données principale.
  2. Copiez la sauvegarde vers l'emplacement réseau ou le répertoire spécifique sur le serveur secondaire.
  3. Restaurez la sauvegarde du journal sur le serveur secondaire.

La technologie d'envoi de journaux exécute les étapes décrites ci-dessus à l'aide des travaux de l'agent SQL Server. Au cours du processus de configuration, l'assistant d'envoi de journaux crée ces travaux sur les serveurs principal et secondaire.

L'envoi de journaux peut être en deux modes opérationnels.

  • Mode de restauration . Le Job SQL restaure les sauvegardes du journal des transactions sur la base de données secondaire. L'état de la base de données est RESTORING , et il n'est pas accessible.
  • Mode veille . Le Job SQL restaure les sauvegardes du journal des transactions sur la base de données secondaire, mais la base de données peut rester en mode lecture seule. Par conséquent, les utilisateurs peuvent effectuer des opérations de lecture dessus. Par cette option, nous pouvons décharger l'application de reporting.

Remarque :le mode Standby présente un inconvénient :la base de données n'est pas disponible pendant l'exécution de la tâche de restauration. Tous les utilisateurs connectés à la base de données doivent se déconnecter pendant ce processus. Sinon, la tâche de restauration peut être retardée .

Le principal inconvénient de l'envoi de journaux est l'absence de prise en charge automatique du basculement. Pour effectuer un basculement, vous devez exécuter les étapes suivantes :

  1. Générez une sauvegarde du journal de fin et copiez-la sur un serveur de base de données secondaire.
  2. Arrêtez toutes les tâches d'envoi de journaux sur le serveur principal.
  3. Restaurer le journal sur le serveur secondaire.

Ce processus peut retarder la disponibilité de la base de données secondaire.

Passons maintenant à l'examen du processus de déploiement étape par étape. Tout d'abord, nous avons préparé le poste de travail en le paramétrant de la manière suivante :

Nom du serveur Rôle
SQL01 Serveur principal
SQL02 Serveur secondaire
iSCSI\SQL2017 Serveur de surveillance
\\domain\Sauvegardes d'envoi de journaux Partage réseau pour copier les sauvegardes

Configurer le serveur principal

Le SQL01 agit comme un serveur primaire et la base de données. Nous allons configurer l'envoi de journaux entre la base de données AdventureWorks2017.

Pour configurer le Log shipping, connectez-vous à l'instance SQL01 :

  1. Ouvrir SQL Server Management Studio
  2. Développer la base de données
  3. Cliquez avec le bouton droit sur AdventureWorks2017
  4. Passez la souris sur les tâches
  5. Cliquez sur Expédier les journaux des transactions.

Les Propriétés de la base de données boîte de dialogue s'ouvre.

Pour activer l'envoi de journaux, cliquez sur Activer ceci en tant que base de données principale dans une configuration d'envoi de journaux option.

Pour configurer le calendrier de sauvegarde du journal des transactions pour l'envoi de journaux, cliquez sur Paramètres de sauvegarde .

Une boîte de dialogue, "Paramètre de sauvegarde du journal des transactions" s'ouvre.

Dans la boîte de dialogue, spécifiez le partage réseau sur lequel vous souhaitez copier les sauvegardes du journal des transactions - le chemin réseau vers le dossier de sauvegarde zone de texte. Vous pouvez déterminer la période de conservation des sauvegardes dans Supprimer les fichiers antérieurs à indiqué dans la zone de texte. Si le travail de sauvegarde échoue ou si le fichier de sauvegarde ne se produit pas pendant la durée spécifiée dans la zone de texte, SQL Server déclenche une alerte.

Dans l'envoi de journaux, SQL Server copie les sauvegardes du fichier journal sur le partage réseau. L'assistant crée automatiquement une tâche de sauvegarde pendant le processus de déploiement. Il crée également un calendrier automatiquement, mais vous pouvez le modifier en cliquant sur le bouton Calendrier.

Dans mon cas, j'ai changé le nom du travail de sauvegarde pour l'identifier. Le nom de la tâche est LogShipping_Backup_AdventureWorks2017 .

Je n'ai apporté aucune modification à la planification des tâches et aux paramètres de compression des sauvegardes.

Configurer le serveur secondaire

Pour ajouter le serveur secondaire et la base de données, cliquez sur "Ajouter" sur les Propriétés de la base de données boîte de dialogue.

Une boîte de dialogue nommée Paramètres de la base de données secondaire ouvrira. Nous devons nous connecter au serveur de base de données secondaire. Pour ce faire, cliquez sur "Ajouter".

Une boîte de dialogue s'ouvre. Entrez le nom du serveur et cliquez sur Se connecter :

Configuration des paramètres de la base de données secondaire

Initialiser la base de données secondaire

Dans l'onglet Initialiser la base de données secondaire, vous pouvez configurer l'une des trois options suivantes pour restaurer la base de données :

  1. Si la base de données n'existe pas sur le serveur secondaire, vous pouvez générer une sauvegarde complète et la restaurer sur le serveur secondaire. Dans ce scénario, vous pouvez utiliser la première option.
  2. S'il existe une sauvegarde complète d'une base de données générée par d'autres tâches de sauvegarde, ou si vous en avez déjà une, vous pouvez la restaurer sur le serveur secondaire. Dans ce scénario, vous pouvez choisir la deuxième option.
  3. Si vous avez restauré la base de données secondaire avec l'état NORECOVERY, vous pouvez choisir la troisième option.

Copier des fichiers

Sur le Copier les fichiers , vous pouvez spécifier le répertoire de destination pour l'emplacement des fichiers de sauvegarde copiés. La durée de conservation y est également définie.

L'assistant crée un Job SQL pour copier les fichiers dans le répertoire de destination. Le dossier de destination de la sauvegarde est \\domain\Log Shipping Backups. Le nom de la tâche de copie est LogShipping_Copy_SQL01_AdventureWorks2017 .

Restaurer le journal des transactions

Dans le Restaurer le journal des transactions , vous pouvez spécifier le mode de base de données. Si vous souhaitez conserver la base de données en mode lecture seule, sélectionnez Mode veille ou choisissez le mode Pas de récupération .

Dans cette démo, nous gardons l'état de la base de données comme NORECOVERY. Vous pouvez spécifier le délai de restauration de la sauvegarde et configurer des alertes pour les sauvegardes non restaurées dans un intervalle spécifié. Dans notre cas, nous n'utilisons pas les paramètres par défaut.

Le nom de la tâche de restauration est LogShipping_Restore_SQL01_AdventureWorks2017.

Une fois la configuration prête, cliquez sur OK pour enregistrer les modifications.

Comme vous le voyez, le serveur secondaire et la base de données ont été ajoutés dans "Grille des instances de serveur secondaire et des bases de données ” sur les Propriétés de la base de données écran.

Configurer l'instance de surveillance

Si vous souhaitez configurer l'instance de serveur Monitor, cochez la case Utiliser une instance de serveur Monitor . Pour ajouter l'instance de moniteur, cliquez sur Paramètres .

Nous allons utiliser l'instance iscsi\SQL2017 comme serveur de surveillance de l'envoi de journaux.

Dans le Paramètre du moniteur d'envoi de journaux boîte de dialogue, spécifiez le nom dans l'instance de serveur Monitor zone de texte.

Nous utilisons le sa compte pour surveiller l'envoi de journaux. Par conséquent, vous devez fournir sa comme nom d'utilisateur et mot de passe. Vous pouvez également spécifier la période de conservation des alertes et de l'historique de surveillance.

Ici, nous utilisons les paramètres par défaut. Le nom de la tâche d'alerte est LogShipping_Alert_iscsi\sql2017 .

Cliquez sur OK pour enregistrer la configuration et fermer la boîte de dialogue.

Vous pouvez générer un script T-SQL pour l'ensemble de la configuration en cliquant sur Configuration du script bouton. Copiez le script de configuration dans le presse-papiers ou le fichier ou ouvrez-le dans une nouvelle fenêtre d'éditeur de requête.

Nous ne voulons pas scripter l'action. Vous pouvez ignorer cette étape.

Cliquez sur OK pour enregistrer la configuration de l'envoi de journaux et le processus démarrera :

Une fois l'envoi de journaux configuré, vous pouvez voir la boîte de dialogue de réussite :

Tester le scénario de basculement

USE [AdventureWorks2017]
GO
CREATE TABLE [Person](
	[BusinessEntityID] [int] NOT NULL,
	[PersonType] [nchar](2) NOT NULL,
	[NameStyle] [dbo].[NameStyle] NOT NULL,
	[Title] [nvarchar](8) NULL,
	[FirstName] [dbo].[Name] NOT NULL,
	[MiddleName] [dbo].[Name] NULL,
	[LastName] [dbo].[Name] NOT NULL,
	[Suffix] [nvarchar](10) NULL,
	[EmailPromotion] [int] NOT NULL,
	[ModifiedDate] [datetime] NOT NULL,
 CONSTRAINT [PK_Person_BusinessEntityID] PRIMARY KEY CLUSTERED 
(
	[BusinessEntityID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

Exécutez la requête suivante pour insérer des données de démonstration :

insert into [Person]([BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName] ,[MiddleName],[LastName] ,[Suffix] ,[EmailPromotion],[ModifiedDate]) 
select top 10 [BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName] ,[MiddleName],[LastName] ,[Suffix] ,[EmailPromotion],[ModifiedDate] 
from Person.Person

Pour effectuer un basculement, effectuez une sauvegarde de fin de journal de la base de données adventureworks2017. Exécutez la requête suivante :

Backup Log adventureworks2017 to disk='\\domain\LogShippingBackups\Tail_Log_Backup.trn' with norecovery

Connectez-vous au SQL02 (serveur secondaire) et restaurez la sauvegarde du journal de fin à l'aide de RESTORE WITH RECOVERY. Exécutez le code suivant :

RESTORE LOG [AdventureWorks2017] FROM  DISK = N'\\domain\LogShippingBackups\Tail_Log_Backup.trn' WITH  RECOVERY

Une fois la sauvegarde du journal final restaurée avec succès, exécutez la requête pour vérifier que les données sont copiées sur le serveur secondaire :

Select * from person

Résultat de la requête :

Comme vous le voyez, les données sont restaurées sur le serveur secondaire.

Conclusion

Dans cet article, nous avons expliqué le processus d'envoi de journaux SQL Server et comment le configurer. Nous avons également démontré le processus de basculement étape par étape de l'envoi de journaux.