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

Installation et configuration de la réplication SQL Server

La réplication SQL Server est l'une des fonctionnalités de synchronisation des données qui est utilisée pour copier et distribuer les objets et les données de la base de données SQL Server entre les bases de données situées dans la même instance SQL Server ou dans différentes instances et les synchroniser entre ces bases de données pour les conserver de manière cohérente. état.

Composants de réplication SQL Server

La réplication SQL Server se compose des composants principaux ci-dessous :

  • Articles :La table de la base de données, les procédures stockées ou les vues qui sont considérées comme l'unité de base de la réplication SQL Server.
  • Distributeur :L'instance SQL Server qui contient la Distribution base de données, qui stocke les métadonnées et l'historique de la réplication. Tenez compte du fait que l'éditeur ne peut être attribué qu'à un seul distributeur, mais que le distributeur peut desservir plusieurs éditeurs.
  • Éditeur :L'instance SQL Server qui contient la base de données source et rend les données disponibles pour être distribuées aux autres emplacements.
  • Abonné  :l'instance SQL Server qui reçoit les données de réplication SQL du ou des éditeurs et les applique à la base de données cible, puis retransmet les modifications de données à l'éditeur dans certains types de réplication.
  • Agent d'instantané de réplication  :cet agent est responsable de la synchronisation initiale dans tous les types de réplication qui fournit une copie complète des articles de la base de données de l'éditeur à l'abonné.
  • Agent de lecture du journal :Cet agent permet de répliquer les transactions du Publisher vers l'Abonné en continu dans la Réplication Transactionnelle, en lisant le journal des transactions de la base source.
  • Agent de distribution :cet agent est utilisé pour appliquer l'instantané initial à la base de données cible et suivre et appliquer les modifications continues des données à la base de données cible. Cet agent est utilisé uniquement avec les réplications Transactionnelles et Snapshot.
  • Agent de fusion :cet agent est chargé de copier les modifications de l'abonné vers l'éditeur, puis de copier toutes les modifications de l'éditeur vers l'abonné, dans les deux sens. Cet agent est utilisé uniquement avec la réplication Merge.

Types de réplication SQL Server

SQL Server nous fournit différents types de réplication pouvant être utilisés pour la distribution des données, en fonction des exigences de synchronisation des données. Tous les types de réplication SQL démarrent la synchronisation initiale entre l'éditeur et l'abonné en copiant un instantané de toutes les données de l'éditeur vers l'abonné. Ces types de réplication SQL Server incluent :

  • Réplication transactionnelle  :dans ce type de réplication, toutes les modifications effectuées du côté de l'éditeur seront livrées et appliquées directement du côté de l'abonné. Un exemple de réplication transactionnelle est le scénario d'intégration de données entre différents sites.
  • Réplication d'instantanés :Dans ce type de réplication, un instantané est extrait de l'éditeur et appliqué une seule fois à l'abonné, sans distribuer les modifications continues après l'instantané, jusqu'à la prochaine synchronisation, au cours de laquelle un nouvel instantané sera copié et appliqué à nouveau à l'abonné.
  • Fusionner la réplication :Dans ce type de réplication, les modifications peuvent être effectuées et synchronisées côté éditeur et abonné et synchronisées lorsque l'abonné est connecté au réseau. Un exemple d'utilisation de la réplication de fusion est l'échange de données entre les utilisateurs de l'application Point de vente.
  • Réplication poste à poste  :un type spécial de réplication transactionnelle dans lequel l'éditeur distribue les modifications de données à plusieurs abonnés en même temps.
  • Réplication bidirectionnelle  :Un autre type spécial de réplication transactionnelle dans lequel les deux serveurs agissent en tant qu'éditeur et abonné et échangent des données entre eux.

Exigences de réplication SQL Server

Avant d'installer et de configurer le site de réplication SQL, nous devons nous assurer que les points suivants sont vérifiés :

  • Le composant de réplication SQL Server est installé sur tous les serveurs participants, l'éditeur, l'abonné et le distributeur. Celui-ci doit être installé lors de l'installation de l'instance SQL Server ou ajouté ultérieurement à l'instance SQL existante, à l'aide de l'assistant d'installation de SQL Server, comme ci-dessous :
  • Il y a suffisamment d'espace sur les serveurs pour la création d'instantanés, les données de base de données publiées dans l'abonné et la croissance du journal des transactions de la base de données de l'éditeur.
  • L'Agent SQL Server est opérationnel, afin que les agents de réplication du serveur SQL puissent créer les tâches de l'Agent SQL associées et que les tâches s'exécutent sans aucun problème.
  • La bande passante réseau est suffisante entre les instances SQL Server participantes.
  • Les instances de l'éditeur, du distributeur et de l'abonné peuvent communiquer entre elles, et les ports TCP que ces instances SQL écoutent sont ouverts dans les règles de pare-feu. En d'autres termes, nous pouvons nous connecter à chaque instance SQL à partir des autres instances sans aucun problème de réseau ou de connectivité.
  • Les articles de la base de données de l'éditeur qui seront répliqués doivent avoir une contrainte de clé primaire préalablement définie, afin de maintenir l'unicité des données.
  • Le compte qui sera utilisé pour créer le site de réplication et exécuter les agents de réplication doit être au moins un membre du rôle de base de données fixe db_owner sur les bases de données Publisher, Distributor et Subscriber, en plus de l'autorisation de lecture et d'écriture sur le dossier d'instantanés.

Mise en route

Dans cet article, nous allons montrer comment utiliser le type Réplication Transactionnelle, pour répliquer les tables de la base de données AdventureWorks2017 entre deux instances SQL Server; SQL1 instance qui agira en tant que distributeur et éditeur, et le SQL2 instance qui agira en tant qu'abonné.

La réplication transactionnelle SQL Server sera configurée en trois étapes :

  • Configurer le distributeur.
  • Configurer l'éditeur.
  • Configurer l'abonné

Discutons de ces étapes en détail.

Configurer le distributeur

Pour configurer le Distributor, connectez-vous au "SQL1 " Instance SQL Server qui agira en tant que distributeur, qui est la même instance d'éditeur dans notre exemple ici, parcourez le nœud de réplication dans l'explorateur d'objets SSMS, cliquez avec le bouton droit sur la réplication nœud et choisissez le Configurer la distribution … option, comme indiqué ci-dessous :

La première fenêtre qui s'affichera dans l'assistant de configuration de la distribution est l'assistant de démarrage, qui résumera la liste des actions qui seront effectuées dans cet assistant. Cliquez sur Suivant pour continuer :

Dans la fenêtre suivante, il vous sera demandé de sélectionner l'instance SQL Server qui agira en tant que distributeur. Il vous offre la possibilité de sélectionner l'instance actuelle de SQL Server en tant que distributeur et de créer la base de données du système de distribution sur cette instance ou de spécifier une autre instance de SQL Server à utiliser en tant que distributeur. Dans ce scénario, nous utiliserons l'instance SQL1 actuelle en tant que distributeur. Sélectionnez l'option qui correspond à votre plan de conception, puis cliquez sur Suivant pour continuer :

Comme le service SQL Server Agent joue un rôle vital dans le processus de réplication SQL Server, où un travail d'agent SQL Server sera créé pour chaque agent de réplication, il est recommandé de changer le mode de démarrage si le service SQL Server Agent de Manuel (par défaut ) pour être Automatique. Pour qu'il s'exécute automatiquement au redémarrage de SQL Server, sans avoir le risque d'oublier de le démarrer manuellement. Cet assistant vous permet de modifier automatiquement le mode de démarrage du service SQL Server Agent, en tenant compte du fait que le compte de service SQL Server dispose de privilèges d'administrateur sur ce serveur pour effectuer cette action. Dans notre cas, nous effectuerons ce changement manuellement. Cliquez sur Suivant pour continuer :

Après cela, l'assistant vous demandera de spécifier le dossier dans lequel l'instantané de synchronisation initial sera créé. Spécifiez un dossier sur le lecteur de disque disposant de suffisamment d'espace, puis cliquez sur Suivant pour continuer :

Dans la fenêtre suivante, il vous sera demandé de spécifier le nom de la base de données de distribution et l'emplacement où stocker les données et les fichiers journaux de cette base de données. Spécifiez votre nom et votre emplacement personnalisés ou conservez les paramètres par défaut, puis cliquez sur Suivant pour continuer :

Après cela, vous devez sélectionner la liste des instances SQL Server qui agiront en tant qu'éditeurs et stocker ses métadonnées dans cette base de données de distribution. Si vous avez une topologie prédéfinie, ajoutez tous les éditeurs candidats, puis cliquez sur Suivant pour continuer :

Dans la fenêtre suivante, choisissez les actions qui seront effectuées par cet assistant, que ce soit pour configurer la distribution directement, générer un fichier de script pour les étapes de configuration mentionnées ou les deux. Dans notre scénario, nous allons configurer la distribution directement. Cliquez sur Suivant pour continuer :

Dans la fenêtre Terminer l'assistant, passez en revue toutes les sélections que vous avez effectuées précédemment et assurez-vous qu'aucune modification ne doit être effectuée sur ces sélections, puis cliquez sur Terminer pour lancer le processus de configuration :

Lorsque le processus de configuration de la distribution s'est terminé avec succès, l'assistant vous avertit par une coche verte à côté de chaque action. Si un problème est rencontré, un message d'erreur significatif s'affichera afin de le résoudre et de répéter à nouveau la configuration. Toutes les actions étant terminées avec succès, Fermer l'assistant de configuration :

Si vous développez le nœud Bases de données système, dans l'explorateur d'objets SSMS, vous verrez qu'une nouvelle base de données du système de distribution est créée et sera utilisée pour stocker les métadonnées de réplication SQL Server, comme indiqué ci-dessous :

Configurer l'éditeur

Après avoir configuré le distributeur, l'étape suivante consiste à configurer l'éditeur qui agit comme source de données pour les autres sites.

Pour configurer le Publisher, connectez-vous à l'instance SQL Server qui contient la base de données à publier, parcourez le nœud SQL Server Replication sous l'Explorateur d'objets puis cliquez avec le bouton droit sur le nœud Publications locales et choisissez Nouvelle publication… option, comme ci-dessous :

La première fenêtre de l'assistant de nouvelle publication est la page de démarrage, qui affiche la liste des actions qui seront exécutées sous cet assistant. Après avoir lu comment cet assistant vous aidera, cliquez sur Suivant pour continuer :

Sur la page suivante, il vous sera demandé de sélectionner la base de données qui sera publiée pour les abonnés, qui est la base de données AdventureWorks2017 dans notre démo ici. Cliquez sur Suivant pour continuer :

Après cela, il vous sera demandé de sélectionner le type de publication que vous parvenez à utiliser. Nous avons abordé précédemment dans cet article la liste des types de réplication SQL Server fournis dans SQL Server. Dans cette démo, nous utiliserons la publication transactionnelle taper. Cliquez sur Suivant pour continuer :

Dans la page Articles, vous pouvez sélectionner la liste des objets de base de données que vous prévoyez de répliquer sur les Abonnés. Vous avez le choix de choisir tous les objets disponibles sous chaque type ou de développer le type d'objet et de sélectionner la liste des objets à répliquer. Dans cette démo, nous allons répliquer toutes les tables de la base de données sur les Abonnés. Après avoir examiné la sélection de l'objet, cliquez sur Suivant pour continuer :

SQL Server vous permet également d'ajouter des filtres pour les objets de base de données sélectionnés et de répliquer uniquement les données qui répondent aux critères des filtres ajoutés. Si vous envisagez de répliquer l'intégralité des lignes du tableau, ignorez cette page en cliquant sur Suivant bouton :

Dans la page Agent d'instantané, indiquez si vous prévoyez de créer l'instantané de synchronisation initial immédiatement, de planifier son exécution ultérieure ou de l'exécuter manuellement lorsque vous avez terminé la configuration de la réplication. Dans cette démo, je vais créer un instantané après avoir terminé la configuration de la réplication SQL Server. Cliquez sur Suivant pour continuer :

Après cela, il vous sera demandé de configurer le compte qui sera utilisé pour exécuter l'Agent d'instantané et les Agents de lecture du journal. Cet utilisateur doit avoir au moins l'autorisation db_owner sur la base de données Publisher, Distributor et Subscriber, en plus des autorisations Read et Write sur le dossier d'instantanés. Vous pouvez également utiliser le compte SQL Agent Service pour exécuter ces agents de réplication SQL Server, ce qui n'est pas recommandé du point de vue de la sécurité. Indiquez le compte autorisé et cliquez sur Suivant pour continuer :

Dans la page Actions de l'assistant, sélectionnez les actions qui seront exécutées après avoir terminé cet assistant, notamment la création de la publication et la génération d'un fichier de script pour créer la publication ultérieurement ou utiliser ce script comme modèle pour d'autres serveurs. Dans cette démo, nous choisirons de Créer la publication , puis cliquez sur Suivant pour continuer :

La dernière page est la fin de l'assistant, dans laquelle vous devez fournir le nom de la publication et revoir vos choix dans cet assistant, puis cliquez sur Terminer pour procéder à la création de la Publication :

Une fois l'assistant de création de publication terminé, il affichera le résultat du processus de création de publication et si le processus s'est terminé avec succès avec des coches vertes ou a échoué à une étape spécifique avec un message d'erreur significatif. Dans cette démo, la publication est créée avec succès sans problème, comme indiqué ci-dessous :

Pour vérifier si la publication est créée avec succès, développez le nœud Publications locales sous le nœud Réplication SQL Server de l'Explorateur d'objets SSMS et vérifiez la publication nouvellement créée. Vous pouvez également consulter et modifier les paramètres de publication à partir de cette page Propriétés de publication. La publication ressemblera à :

Configurer l'abonné

Pour l'instant, nous avons configuré avec succès l'éditeur et le distributeur, il est temps de configurer l'abonné, qui agit comme cible de données et reçoit les données de l'abonné.

Pour configurer l'abonné, à partir de la même instance d'éditeur, développez le nœud de réplication SQL Server sous l'explorateur d'objets SSMS, cliquez avec le bouton droit sur le nœud des abonnements locaux et sélectionnez Nouveaux abonnements … option, comme indiqué ci-dessous :

La première fenêtre affichée dans l'assistant de nouvel abonnement est la page de démarrage, qui montre comment cet assistant vous aidera à configurer l'abonné. Cliquez sur Suivant pour continuer :

La première étape de la configuration de l'Abonné consiste à sélectionner l'éditeur pour lequel l'Abonné sera créé et la base de données de publication qui servira de source de données pour cet Abonné. Sélectionnez la base de données de publication parmi les bases de données répertoriées, puis cliquez sur Suivant pour continuer :

Après cela, il vous sera demandé de spécifier si vous souhaitez exécuter tous les agents du côté distributeur et transmettre les modifications à l'abonné, en fournissant une administration centralisée pour le processus de synchronisation de la réplication ou exécuter chaque agent sur son propre abonné qui extraira les modifications de l'éditeur. , réduisant la surcharge de traitement côté distributeur et permettant à chaque synchronisation d'abonné d'être administrée séparément. Dans cette démo, nous choisirons l'abonnement push et cliquerons sur Suivant pour continuer :

Dans la fenêtre suivante, vous devez ajouter l'instance de l'abonné SQL Server et la base de données cible de l'abonnement, avec la possibilité de créer cette base de données si elle n'existe pas, comme indiqué ci-dessous :

Dans la page Sécurité de l'Agent de distribution, spécifiez le compte sous lequel l'Agent de distribution s'exécutera pour effectuer le processus de synchronisation et le compte qui sera utilisé pour se connecter aux instances de serveur SQL Server du distributeur et de l'abonné. Il est recommandé de fournir un compte de domaine autorisé disposant d'une autorisation à la fois sur le distributeur et l'abonné, avec la possibilité d'utiliser le compte de service de l'agent SQL pour se connecter au distributeur et à l'abonné, ce qui n'est pas recommandé du point de vue de la sécurité. Après avoir fourni le compte de sécurité autorisé, cliquez sur Suivant pour continuer :

Sur la page suivante de l'assistant Nouvel abonnement, spécifiez le calendrier de synchronisation pour chaque agent. Conservez le paramètre par défaut si vous souhaitez que la synchronisation s'exécute en continu, puis cliquez sur Suivant pour continuer :

Après cela, vous pouvez spécifier si vous souhaitez initialiser les abonnements avec un instantané de la publication et quand effectuer ce processus d'initialisation. Dans cette démo, nous choisissons d'initialiser l'abonnement à la première synchronisation, comme indiqué ci-dessous :

Dans la fenêtre Actions de l'assistant, vous pouvez choisir les actions à effectuer à la fin de cet assistant. Par exemple, cet assistant vous offre la possibilité de créer les abonnements configurés et de générer un fichier de script pour créer les abonnements ultérieurement ou dans une autre instance SQL Server, comme suit :

Après cela, l'assistant vous fournira un résumé de toutes les configurations que vous avez sélectionnées dans cet assistant pour le vérifier avant de commencer la configuration de l'abonnement. Si toutes les sélections sont correctes, cliquez sur Terminer pour lancer le processus de configuration :

Si l'opération de création d'abonnement s'est terminée avec succès, l'assistant nous notifiera une coche verte pour chaque action terminée ou nous fournira un message d'erreur significatif en cas d'échec, comme indiqué ci-dessous :

Pour vérifier que l'abonnement est créé avec succès, sous le nœud Réplication de l'explorateur d'objets SSMS, développez la publication précédemment créée et vous verrez tous les abonnements connectés à cet éditeur et recevrez des données de celui-ci, comme indiqué ci-dessous :

Créer un instantané de synchronisation initial

Si vous n'avez pas choisi de créer un instantané de synchronisation initial lors de la création de l'éditeur, vous pouvez toujours créer l'instantané après avoir configuré les composants de réplication.

Pour créer un instantané de synchronisation initial, cliquez avec le bouton droit sur la publication créée et choisissez Afficher le statut de l'agent d'instantané option. Dans la fenêtre ouverte, cliquez sur le bouton Démarrer pour exécuter l'agent d'instantané et créer l'instantané de synchronisation initial. Vous pouvez également surveiller la progression du processus de création d'instantané jusqu'à ce que l'instantané de tous les articles soit créé avec succès, comme ci-dessous :

Surveiller la synchronisation

Une fois l'instantané des articles répliqués créé, le processus de synchronisation avec l'Abonné démarre automatiquement, en écrivant tous les articles de cet instantané sur l'Abonné. Pour surveiller le processus de synchronisation, cliquez avec le bouton droit sur l'abonnement sous SQL Server Réplication nœud de l'explorateur d'objets SSMS et choisissez Afficher l'état de la synchronisation option, où il vous montrera le nombre de transactions et de commandes effectuées sur l'abonné, comme indiqué ci-dessous :

De plus, vous pouvez surveiller l'état de tous les agents de réplication et le nombre de commandes en attente côté distributeur et non appliquées côté abonné, en cliquant avec le bouton droit sur le nom de la publication et en choisissant la fenêtre Lancer le moniteur de réplication, comme indiqué ci-dessous :

Pour vérifier que le site de réplication fonctionne bien, ajoutons un nouvel enregistrement à l'un des articles répliqués, table "Employé", côté Editeur, qui n'est pas disponible côté Abonné, puis vous verrez depuis le moniteur de réplication fenêtre qu'un nouvel enregistrement est livré de l'Editeur au Distributeur puis à l'Abonné. Après cela, vous verrez que le nouvel enregistrement est disponible dans la table des employés du côté de l'abonné, comme indiqué clairement ci-dessous :

Avec des étapes claires et simples, nous avons construit un site complet de réplication transactionnelle qui est synchronisé et fonctionne bien. Dans le prochain article, nous verrons comment dépanner un site de réplication SQL Server existant. Restez à l'écoute.