Introduction

Dans cet article, nous allons mettre en place la réplication sur SQL Server 2008 R2. La réplication consiste en un transfert des données d’un serveur vers un ou plusieurs autres serveurs SQL.

Figure 1

Ce schéma du site msdn.microsoft.com illustre la réplication de type transactionnelle. En effet, il existe plusieurs types de publication :

· Réplication de capture instantanée : réplique à un instant t la totalité des données

· Réplication transactionnelle : réplique uniquement les transactions, soit les modifications effectuées aux bases à répliquer.

· Réplication de fusion : ce mode permet aux abonnés de modifier les données en local sur une copie des bases bien à eux. Par la suite, ils ont la possibilité de fusionner ces bases avec celle du serveur de publication.

Notons donc que la réplication de capture instantanée peut surcharger le réseau inutilement en répliquant des données qui n’ont pas été modifiées. Alors que la réplication transactionnelle elle, préserve l’utilisation du réseau et préviens les surcharges réseaux.

Les réplications de capture instantanée et transactionnelle offrent deux options :

· Mise à jour immédiate : les abonnés ont la possibilité de modifier les données du serveur de publication. Ces données sont immédiatement appliquées au serveur de publication.

· Mise à jour en attente : dans ce cas, les modifications sont mise en attente, jusqu’à la prochaine réplication.

De manière générale, la réplication nécessite trois éléments clefs (fonction du type de réplication désiré) :

· Un serveur de publication : serveurs qui rendent leur donnée accessible à la réplication

· Un serveur de distribution : serveurs qui distribuent les données à répliquer

· Et des abonnées bien sûr : les serveurs de destinations des données répliquées.

Prérequis

Pour mettre en place la réplication, il suffit de disposer de deux hôtes dans un réseau. En ce qui nous concerne, nous utiliserons deux OS Windows Server 2008R2 sur lesquelles nous installerons SQL Server 2008 R2.

Installation d’un contrôleur de domaine et création de compte de service

Commençons par attribuer des adresses IP fixes à notre serveur nous choisirons pour notre exemple :

IP : 192.168.30.130

Masque de sous réseau : 255.255.255.0

La passerelle par défaut : 192.168.30.2

DNS 1: 127.0.0.1

DNS 2: 192.168.30.130

Une fois terminez nous allons créer un fichier de réponse permettant d’installer un active directory. Il ressemblera à ceci :

[DCINSTALL] ReplicaOrNewDomain=Domain NewDomain=forest InstallDNS=yes NewDomainDNSName= CaraibeMS.lan DomainNetbiosName=CARMS ForestLevel=3 DomainLevel=3 SiteName= Site1 DatabasePath=%systemroot%\ntds LogPath=%systemroot%\ntds SYSVOLPath=%systemroot%\sysvol SafeModeAdminPassword=azer-972 RebootOnCompletion=Yes

Création d’une nouvelle forêt et installation d’un serveur Dns avec comme nom de domaine CaraibeMS.lan et comme nom NetBIOS CARMS. Le niveau fonctionnel du domaine et de la forêt sera 2008 (valeur 3). Vous spécifier le chemin de sauvegarde du répertoire sysvol et ntds contenant la base de données votre Active directory le mot de passe du mode maintenance et redémarrer le serveur

Afin de lancer l’installation de l’active directory, tapez la commande dcpromo /unattend :<chemin du fichier>

Figure 3

Figure 4

NB : Afin de permettre une meilleure résolution du nom IP vers domaine créer une zone inversée.

Figure 5

Une fois que votre Active directory est bien installé nous allons créer 4 comptes AD. Le premier SQLserv sera le compte de service et donc les processus SQL serveur s’exécuterons en tant que SQLserv. Des comptes administrateurs de base de données Ti-Jules, Mystikryz, Shadow972 qui seront administrateur de la base de données.

Nous allons créer ces comptes via l’outil dsadd pour générer ces comptes.

dsadd ou « OU=Martinique,DC=caraibems,DC=lan »

dsadd user « cn=sqlsrv,OU=Martinique,DC=caraibems,DC=lan » -pwd plop-972 -pwdneverexpires yes -disabled no

dsadd user « cn=ti-jules,OU=Martinique,DC=caraibems,DC=lan » -pwd plop-972 -pwdneverexpires yes -disabled no

dsadd user « cn=mystikryz,OU=Martinique,DC=caraibems,DC=lan » -pwd plop-972 -pwdneverexpires yes -disabled no

dsadd user « cn=shadow972,OU=Martinique,DC=caraibems,DC=lan » -pwd plop-972 -pwdneverexpires yes -disabled no

Figure 6

Vérifions que les comptes ont bien été créés dans le domaine :

Figure 7

Maintenant vous pouvez intégrer votre 2ème serveur au domaine. Via la commande :

 netdom join <nom du serveur> /domain : <domain> /userd :<administrateur du domaine> /passwordd :<mot de pass>

Et redémarrer votre serveur avec la commande : shutdown /r /t 0

Figure 8

Cela reviendrait à effectuer l’opération suivante :

Clique droit sur ordinateur – Nom de l’ordinateur – Modifier – domaine : CARMS =>

Figure 9

Maintenant que nous avons fait en sorte que nos serveurs soit dans le même domaine nous pouvons passer à l’installation d’SQL Serveur 2008 R2 sur nos 2 serveurs.

Installation de SQL Serveur 2008R2

Nous allons installer le serveur SQL maitre de réplication. Lancez le setup.exe de l’application pour débuter une nouvelle configuration.

Figure 10

Rendez-vous dans la section installation afin de démarrer une nouvelle installation ou ajout de fonctionnalités à une installation existante.

Figure 11

Dès lors, une première vérification est effectuer cliquez sur ok.

Figure 12

Si vous possédez une licence, saisissez-la et cliquez sur suivant. Sinon, utilisez la version gratuite

Figure 13

Acceptez les termes de la licence et cliquez sur suivant.

Figure 14

Maintenant l’assistant installera les fichiers support de SQL serveur et cliquez sur installer.

Figure 15

Après une nouvelle analyse vous devriez avoir ceci :

Figure 16

Les 2 warnings qui apparaissent nous expliquent notre pare-feu pourrait bloquer les connexions entrantes. Pour y remédier, il vous faudra autoriser les deux pour suivant :

1433 en TCP et 1434 en UDP via la console du pare-feu avancer. Ou via le cmd :

netsh firewall set portopening TCP 1433 « SQLServer »

netsh firewall set portopening TCP 1434 « SQL Admin Connection »

Figure 17

Cliquez sur suivant.

Laissez le choix par défaut. Et cliquez sur suivant.

Figure 18

Sélectionnez l’ensemble des outils d’administration cependant pour les fonctionnalités de l’instance on prendra tous sauf analysis services et reporting services qui ne nous sera pas du tout utiles pour ce tutoriel. Veillez à ce que la case réplication SQL serveur soit coché. Cliquez sur suivant.

Figure 19

Une nouvelle vérification est effectuée. Cliquez sur suivant.

Figure 20

Spécifier un nom d’instance pour SQL serveur

Cliquez sur suivant.

Figure 21

Ici nous avons un récapitulatif permettant de vérifier qu’il nous reste suffisamment de place sur le serveur pour installer cette instance. Cliquez sur suivant.

Figure 22

Ici nous allons configurer les services et leur mode de démarrages vérifiés que l’Agent SQL server et SQL Browser sont en démarrage automatique. Ces configurations sont essentielles ! Cliquez sur suivant.

Figure 23

Spécifier les administrateurs de l’instance de base de données.

Figure 24

Une nouvelle vérification est effectuée et cliquez sur suivant.

Figure 25

Voici un petit récapitulatif de l’installation et cliquez sur installer.

Figure 26

NB : Récupérez le fichier .ini cela vous permettra de réaliser des installations automatiques.

L’installation commencera. Patientez.

Figure 27

Cliquez sur fermer. Installer aussi une instance SQL serveur sur le 2eme serveur.

Figure 28

Maintenant que nous avons vu comment installer un serveur SQL nous allons configurer la réplication.

Configuration de la réplication

Maintenant nous allons configurer la réplication, rendez-vous dans l’outil de management de SQL serveur « Microsoft SQL Server Management Studio » (présent dans le menu démarrer).

Figure 29

Assurez-vous que dans votre instance qu’il y est une table sur laquelle vous pourrez effectuer vos tests.

Figure 30

Voici le script SQL permettant de créer la base de données.

USE [master] GO CREATE DATABASE [TESTReplication] ON PRIMARY ( NAME = N’TESTReplication’, FILENAME = N’C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\TESTReplication.mdf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N’TESTReplication_log’, FILENAME = N’C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\TESTReplication_log.ldf’ , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO USE [TESTReplication] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[User]( [id] [int] IDENTITY(1,1) NOT NULL, [nom] [nvarchar](max) NULL, [description] [nvarchar](max) NULL ) ON [PRIMARY] GO

Maintenant que nous avons une base donnée viable, nous allons configurer sa réplication.

Configuration de la publication

Dans un premier temps, il faudra décider de quel type de réplication que nous voulons effectuer. Ci-dessous, un rappel sur les types de réplications vu à l’introduction :

·Publication d’instantané :

Le serveur de publication envoie un cliché instantané des données publiées aux Abonnés, à des intervalles planifiés.

·Publication transactionnelle :

Le serveur de publication diffuse un cliché instantané aux abonnés puis ne réplique que les transactions.

·Publication transactionnelle avec abonnements pouvant être mis à jour :

Le serveur de publication diffuse les transactions aux Abonnés SQL Server une fois qu’ils ont reçu un instantané initial des données publiées. Les transactions en provenance des Abonnés sont appliquées sur le serveur de publication.

·Publication de fusion :

Le serveur de publication et les Abonnés peuvent mettre à jour les données publiées de manière indépendante, une fois que les Abonnés ont reçu le cliché instantané initial des données a publier. Les modifications sont fusionnées périodiquement si l’utilisateur le souhaite. Microsoft SQL Server Compact Edition ne peut s’abonner qu’aux publications de fusion.

Nous allons commencer par créer une publication faite un clic droit sur Réplication > publication locale.

Figure 31

L’assistant de création d’une nouvelle publication démarrera, cliquez sur suivant

Figure 32

Sélectionnez l’option par défaut le serveur srv-sql-01 sera le serveur de publication.

Figure 33

Créer un répertoire partagé en prenant soin de donner les droits en lecture et écriture au compte de service du moteur SQL. Et rentrez le chemin du partage réseau.

Figure 34

Sélectionnez la base de données à répliquer. Et cliquez sur suivant

Figure 35

Sélectionnez le type de publication, nous choisirons la réplication instantanée et cliquez sur suivant.

Figure 36

Sélectionnez les objets à répliquer. Et cliquez sur suivant.

Figure 37

Vous pourrez créer vos filtres, mais cela ne nous intéresse pas vraiment pour notre exemple. Cliquez sur suivant.

Figure 38

Cochez les deux cases suivantes cela vous permettra de créer vos plages horaires de réplication.

Figure 39

Spécifier le compte de service pour la réplication. Cliquez sur suivant.

Figure 40

Figure 41

Cochez la case permettant de créer cette réplication et cliquez sur suivant.

Figure 42

Un récapitulatif s’affichera cliquez sur terminez.

Figure 43

L’assistant de création à créer votre publication cliquez sur fermer.

Figure 44

Voici le résultat :

Figure 45

Après avoir créé la Publication, il ne reste plus qu’à abonner notre serveur cible à cette publication.

Configuration de l’abonnement

Maintenant nous allons créer l’abonnement. Faites un clic droit sur la nouvelle publication que nous venons de créer.

Figure 46

L’assistant de création de nouvel abonnement se lance. Cliquez sur suivant

Figure 47

Sélectionnez la publication à répliquer. Cliquez sur suivant.

Figure 48

Sélectionnez la méthode de mise à jour. Push permet au maitre de réplication d’envoyer des notifications de mise à jour aux nouveaux abonnés. Pull, il s’agit des esclaves qui demandent s’il y a des mises à jour disponibles.

Figure 49

Ajoutez un nouveau serveur. Qui fera office de client de réplication.

Figure 50

Créer la base de données de réplication.

Figure 51

Attribuer lui un nom et cliquez sur OK.

Figure 52

Cliquez sur suivant.

Figure 53

Saisir le compte qui fera office d’agent de réplication.

Figure 54

Figure 55

Choisir le mode de réplication, nous choisirons en continu.

Figure 56

Sélectionnez le moment d’initialisation des abonnements.

Figure 57

Cochez la case « Créer le ou les abonnements ». Cliquez sur suivant.

Figure 58

Cliquez sur terminer après avoir lu le récapitulatif.

Figure 59

La création de l’abonnement s’effectue. Cliquez sur fermer

Figure 60

Nous pourrons apercevoir l’abonnement.

Figure 61

Figure 62

Pour des raisons de latence due à nos machines virtuelles, voici le résultat d’une réplication sur le même serveur SQL (SRV-SQL-01). La base de donnée cible est : « ty ».

Figure 63

Figure 64

Après quelque minutes les tables (dans notre cas, la table : dbo.User) sont créer ainsi que ces enregistrements.

Figure 65

Conclusion

En ce qui concerne l’expérience que nous tirons de cet article, nous avons fait en sorte de faire certaines choses différemment que d’habitude et donc d’aborder la mise en place d’une structure autrement. C’est pourquoi nous créons l’active directory via le fichier de réponse, des utilisateurs avec l’outil « add » en ligne de commande. De même, nous créons la base à l’aide d’un script.

Pour conclure, mettre en place la Réplication SQL dans un réseau est un outil extrêmement important pour assurer la consistance de ses données. De même, on augmente la disponibilité des bases en utilisant différentes bases. Toujours en cas de crash d’un des serveurs SQL, dans le cas où il faudrait mettre en place un Plan de Reprise sur Incident, la réplication s’avère être l’outil auquel il faut penser.