Un guide sur la réplication de base de données

Répétez, mais à chaque fois d'une nouvelle maniÚre - n'est-ce pas cet art?



Stanislav Jerzy Lec, du livre "Uncombed Thoughts"


Le dictionnaire dĂ©finit la rĂ©plication comme le processus de maintien de deux (ou plus) ensembles de donnĂ©es dans un Ă©tat cohĂ©rent. Qu'est-ce que «l'Ă©tat cohĂ©rent des ensembles de donnĂ©es» est une grande question distincte, reformulons donc la dĂ©finition de maniĂšre plus simple: le processus de modification d'un ensemble de donnĂ©es, appelĂ© rĂ©plica, en rĂ©ponse aux modifications d'un autre ensemble de donnĂ©es, appelĂ© le maĂźtre. Les dĂ©cors ne sont pas forcĂ©ment les mĂȘmes.







La prise en charge de la réplication de bases de données est l'une des tùches les plus importantes d'un administrateur: presque toutes les bases de données, quelle que soit leur importance, ont une réplique, voire plusieurs.



Les tùches de réplication incluent au moins



  • prise en charge de la base de donnĂ©es de sauvegarde en cas de perte de la principale;
  • rĂ©duire la charge sur la base due au transfert d'une partie des requĂȘtes vers les rĂ©pliques;
  • transfert de donnĂ©es vers des systĂšmes d'archivage ou d'analyse.


Dans cet article, je parlerai des types de réplication et des tùches que chaque type de réplication résout.



Il existe trois approches de réplication:



  • Bloquer la rĂ©plication au niveau du systĂšme de stockage;
  • RĂ©plication physique au niveau du SGBD;
  • RĂ©plication logique au niveau du SGBD.


Bloquer la réplication



Avec la réplication par blocs, chaque opération d'écriture est effectuée non seulement sur le disque principal, mais également sur la sauvegarde. Ainsi, un volume sur une baie correspond à un volume en miroir sur une autre baie, répétant le volume principal avec une précision d'octet:







les avantages d'une telle réplication comprennent la facilité de configuration et la fiabilité. Une matrice de disques ou quelque chose (un périphérique ou un logiciel) entre l'hÎte et le disque peut écrire des données sur un disque distant.



Les baies de disques peuvent ĂȘtre complĂ©tĂ©es par des options permettant d'activer la rĂ©plication. Le nom de l'option dĂ©pend du fabricant de la baie:



Fabricant Marque déposée

CEM SRDF (Symmetrix Remote Data Facility)
IBM Metro Mirror - réplication synchrone

Global Mirror - réplication asynchrone
Hitachi Vraie copie
Hewlett-Packard AccĂšs continu
Huawei HyperRĂ©plication


Si la matrice de disques n'est pas capable de rĂ©pliquer les donnĂ©es, un agent peut ĂȘtre installĂ© entre l'hĂŽte et la matrice, qui Ă©crit sur deux baies Ă  la fois. Un agent peut ĂȘtre un pĂ©riphĂ©rique autonome (EMC VPLEX) ou un composant logiciel (HPE PeerPersistence, Windows Server Storage Replica, DRBD). Contrairement Ă  une matrice de disques, qui ne peut fonctionner qu'avec la mĂȘme matrice, ou au moins avec une matrice du mĂȘme fabricant, un agent peut travailler avec des pĂ©riphĂ©riques de disque complĂštement diffĂ©rents.



L'objectif principal de la réplication de bloc est de fournir une tolérance aux pannes. Si la base de données est perdue, vous pouvez la redémarrer à l'aide du volume en miroir.



La réplication en bloc est excellente pour sa polyvalence, mais la polyvalence a un prix.



PremiĂšrement, aucun serveur ne peut gĂ©rer un volume en miroir, car son systĂšme d'exploitation ne peut pas contrĂŽler les Ă©critures sur celui-ci; du point de vue de l'observateur, les donnĂ©es sur le volume en miroir apparaissent spontanĂ©ment. En cas de sinistre (panne du serveur principal ou de l'ensemble du centre de donnĂ©es oĂč se trouve le serveur principal), vous devez arrĂȘter la rĂ©plication, dĂ©monter le volume principal et monter le volume en miroir. DĂšs que possible, vous devez redĂ©marrer la rĂ©plication dans la direction opposĂ©e.



Dans le cas de l'utilisation d'un agent, toutes ces actions seront effectuées par l'agent, ce qui simplifie la configuration, mais ne réduit pas le temps de commutation.



DeuxiĂšmement, le SGBD lui-mĂȘme sur le serveur de secours ne peut ĂȘtre dĂ©marrĂ© qu'aprĂšs le montage du disque. Dans certains systĂšmes d'exploitation, par exemple sous Solaris, la mĂ©moire du cache est balisĂ©e lors de l'allocation et le temps de marquage est proportionnel Ă  la quantitĂ© de mĂ©moire allouĂ©e, c'est-Ă -dire que le dĂ©marrage de l'instance ne sera pas instantanĂ©. De plus, le cache sera vide aprĂšs le redĂ©marrage.



TroisiĂšmement, aprĂšs avoir dĂ©marrĂ© sur le serveur de sauvegarde, le SGBD dĂ©couvrira que les donnĂ©es sur le disque sont incohĂ©rentes et que vous devez passer beaucoup de temps Ă  rĂ©cupĂ©rer Ă  l'aide des fichiers de journalisation: tout d'abord, rĂ©pĂ©tez ces transactions, dont les rĂ©sultats ont Ă©tĂ© enregistrĂ©s dans le journal, mais n'ont pas eu le temps d'ĂȘtre enregistrĂ©s dans les fichiers de donnĂ©es, puis annulez les transactions qui n'avaient pas eu le temps de se terminer au moment de l'Ă©chec.



La rĂ©plication de bloc ne peut pas ĂȘtre utilisĂ©e pour l'Ă©quilibrage de charge et un schĂ©ma similaire est utilisĂ© pour mettre Ă  niveau la banque de donnĂ©es avec le volume en miroir sur la mĂȘme baie que la principale. EMC et HP appellent ce schĂ©ma BCV, seul EMC signifie Business Continuance Volume, et HP Business Copy Volume. IBM n'a pas de marque spĂ©ciale pour ce cas, ce schĂ©ma est appelĂ© "volume en miroir".







Deux volumes sont crĂ©Ă©s dans la baie et les opĂ©rations d'Ă©criture sont effectuĂ©es de maniĂšre synchrone sur les deux (A). A un certain moment, le miroir se brise (B), c'est-Ă -dire que les volumes deviennent indĂ©pendants. Le volume en miroir est montĂ© sur un serveur dĂ©diĂ© aux mises Ă  niveau de stockage et une instance de base de donnĂ©es est gĂ©nĂ©rĂ©e sur ce serveur. L'instance prendra autant de temps que pour une restauration de rĂ©plication par bloc, mais ce temps peut ĂȘtre considĂ©rablement rĂ©duit en cassant le miroir pendant les pĂ©riodes creuses. Le fait est que briser le miroir dans ses consĂ©quences Ă©quivaut Ă  une terminaison anormale du SGBD, et le temps de rĂ©cupĂ©ration en cas de terminaison anormale dĂ©pend significativement du nombre de transactions actives au moment du crash. La base de donnĂ©es destinĂ©e au dĂ©chargement est disponible Ă  la fois en lecture et en Ă©criture. Tous les identifiants de bloc,les miroirs modifiĂ©s aprĂšs la pause, Ă  la fois sur le volume principal et sur le volume en miroir, sont enregistrĂ©s dans une zone spĂ©ciale de Block Change Tracking - BCT.



AprÚs la fin du téléchargement, le volume en miroir est démonté (C), le miroir est restauré et aprÚs un certain temps, le volume en miroir rattrape à nouveau le volume principal et devient sa copie.



RĂ©plication physique



Les journaux (journal de rétablissement ou journal à écriture anticipée) contiennent toutes les modifications apportées aux fichiers de base de données. L'idée derriÚre la réplication physique est que les modifications des journaux sont ré-validées dans une autre base de données (réplique), et donc les données dans la réplique répliquent les données dans l'octet par octet maßtre.



La possibilité d'utiliser les journaux de base de données pour mettre à jour une réplique est apparue dans la version d'Oracle 7.3, qui a été publiée en 1996, et déjà dans la version d'Oracle 8i, la livraison des journaux de la base de données principale à la réplique était automatisée et s'appelait DataGuard. La technologie s'est avérée si demandée qu'aujourd'hui le mécanisme de réplication physique est présent dans presque tous les SGBD modernes.



SGBD Option de réplication

Oracle DataGuard actif
IBM DB2 HADR
Microsoft SQL Server Expédition de journaux / Toujours activé
PostgreSQL Envoi de journaux / réplication en streaming
MySQL RĂ©plication InnoDB physique d'Alibaba


L'expérience montre que si le serveur est utilisé uniquement pour maintenir la réplique à jour, environ 10% de la puissance de traitement du serveur sur lequel s'exécute la base principale est suffisante pour cela.



Les journaux de SGBD ne sont pas destinĂ©s Ă  ĂȘtre utilisĂ©s en dehors de cette plate-forme, leur format n'est pas documentĂ© et peut changer sans prĂ©avis. D'oĂč l'exigence tout Ă  fait naturelle que la rĂ©plication physique ne soit possible qu'entre instances de la mĂȘme version du mĂȘme SGBD. Par consĂ©quent, il existe des limitations possibles sur le systĂšme d'exploitation et l'architecture du processeur, qui peuvent Ă©galement affecter le format du journal.



Naturellement, la rĂ©plication physique n'impose aucune restriction sur les modĂšles de stockage. De plus, les fichiers de la base de donnĂ©es rĂ©plique peuvent ĂȘtre localisĂ©s d'une maniĂšre complĂštement diffĂ©rente de celle de la base de donnĂ©es source - il vous suffit de dĂ©crire la correspondance entre les volumes sur lesquels ces fichiers se trouvent.



Oracle DataGuard vous permet de supprimer certains des fichiers de la base de données de répliques - dans ce cas, les modifications des journaux liés à ces fichiers seront ignorées.



La réplication de base de données physique présente de nombreux avantages par rapport à la réplication de stockage:



  • la quantitĂ© de donnĂ©es transfĂ©rĂ©es est moindre en raison du fait que seuls les journaux sont transfĂ©rĂ©s, mais pas les fichiers de donnĂ©es; les expĂ©riences montrent une diminution de 5 Ă  7 fois du trafic;
  • : - , ; , ;
  • , . , .


La capacité de lire des données à partir d'une réplique a été introduite en 2007 avec la sortie d'Oracle 11g, comme indiqué par l'épithÚte «active» ajoutée au nom de la technologie DataGuard. D'autres SGBD ont également la possibilité de lire à partir d'un réplica, mais cela n'est pas reflété dans le nom.



L'écriture de données sur une réplique est impossible, car les modifications lui sont apportées octet par octet et la réplique ne peut pas fournir une exécution compétitive de ses demandes. Oracle Active DataGuard dans les versions récentes permet d'écrire sur la réplique, mais ce n'est rien de plus que du «sucre»: en fait, les modifications sont effectuées sur la base principale et le client attend qu'elles soient transférées vers la réplique.



Si un fichier de la base de donnĂ©es principale est endommagĂ©, vous pouvez simplement copier le fichier correspondant de la rĂ©plique (lisez attentivement le manuel de l'administrateur avant de le faire avec votre base de donnĂ©es!). Le fichier sur la rĂ©plique peut ne pas ĂȘtre identique au fichier de la base de donnĂ©es principale: le fait est que lorsque le fichier est dĂ©veloppĂ©, les nouveaux blocs ne sont pas remplis de quoi que ce soit pour accĂ©lĂ©rer, et leur contenu est accidentel. La base peut ne pas utiliser tout l'espace du bloc (par exemple, il peut y avoir de l'espace libre dans le bloc), mais le contenu de l'espace utilisĂ© correspond Ă  l'octet.



La rĂ©plication physique peut ĂȘtre synchrone ou asynchrone. Avec la rĂ©plication asynchrone, il existe toujours un certain ensemble de transactions qui se sont terminĂ©es sur la base principale, mais qui n'ont pas encore atteint la base de secours, et en cas de transition vers la base de secours si la base principale Ă©choue, ces transactions seront perdues. Dans la rĂ©plication synchrone, l'achĂšvement de l'opĂ©ration de validation signifie que tous les enregistrements de journal liĂ©s Ă  cette transaction ont Ă©tĂ© validĂ©s dans le rĂ©plica. Il est important de comprendre que l'obtention d'un rĂ©plica de journal ne signifie pas que les modifications sont appliquĂ©es aux donnĂ©es. Si la base de donnĂ©es principale est perdue, les transactions ne seront pas perdues, mais si l'application Ă©crit des donnĂ©es dans la base de donnĂ©es principale et les lit Ă  partir de la rĂ©plique, elle a alors une chance d'obtenir l'ancienne version de ces donnĂ©es.



Dans PostgreSQL, il est possible de configurer la rĂ©plication de sorte que la validation ne se termine qu'aprĂšs l'application des modifications aux donnĂ©es de rĂ©plique (option synchronous_commit = remote_apply), tandis que dans Oracle, vous pouvez configurer la rĂ©plique entiĂšre ou des sessions individuelles afin que les requĂȘtes ne soient exĂ©cutĂ©es que si la rĂ©plique n'est pas en retard par rapport Ă  la base de donnĂ©es principale ( STANDBY_MAX_DATA_DELAY=0). Cependant, il est toujours prĂ©fĂ©rable de concevoir l'application de maniĂšre Ă  ce que l'Ă©criture dans la base de donnĂ©es principale et la lecture Ă  partir des rĂ©pliques soient effectuĂ©es dans diffĂ©rents modules.



Lorsqu'ils cherchent une réponse à la question de savoir quel mode choisir, synchrone ou asynchrone, les spécialistes du marketing Oracle viennent à notre aide. DataGuard propose trois modes, chacun maximisant l'un des paramÚtres - sécurité des données, performances, disponibilité - au détriment des autres:



  • Performances maximales: la rĂ©plication est toujours asynchrone;
  • Maximum protection: ; , commit ;
  • Maximum availability: ; , , , .


Malgré les avantages indéniables de la réplication de base de données par rapport à la réplication par blocs, les administrateurs de nombreuses entreprises, en particulier celles qui ont de vieilles traditions de fiabilité, sont toujours trÚs réticents à abandonner la réplication par blocs. Il y a deux raisons à cela.



PremiÚrement, dans le cas d'une réplication à l'aide d'une matrice de disques, le trafic ne passe pas par le réseau de transmission de données (LAN), mais par le réseau de stockage. Souvent, dans les infrastructures construites il y a longtemps, les SAN sont beaucoup plus fiables et performants que les réseaux de données.



DeuxiÚmement, la réplication synchrone au moyen d'un SGBD est devenue fiable relativement récemment. Dans Oracle, la percée s'est produite dans la version 11g, sortie en 2007, et dans d'autres SGBD, la réplication synchrone est apparue encore plus tard. Bien sûr, 10 ans selon les standards de la sphÚre informatique, ce n'est pas si court, mais en matiÚre de sécurité des données, certains administrateurs sont toujours guidés par le principe du «quoi qu'il arrive» ...



RĂ©plication logique



Toutes les modifications apportĂ©es Ă  la base de donnĂ©es se produisent Ă  la suite d'appels Ă  son API, par exemple Ă  la suite de l'exĂ©cution de requĂȘtes SQL. L'idĂ©e d'exĂ©cuter la mĂȘme sĂ©quence de requĂȘtes sur deux bases diffĂ©rentes semble trĂšs tentante. Pour la rĂ©plication, vous devez respecter deux rĂšgles:



  1. , , . D, A B.
  2. , , . B , , C.


La réplication des commandes (réplication basée sur des instructions) est implémentée, par exemple, dans MySQL. Malheureusement, ce schéma simple n'aboutit pas à des ensembles de données identiques pour deux raisons.



PremiĂšrement, toutes les API ne sont pas dĂ©terministes. Par exemple, si une requĂȘte SQL contient la fonction now () ou sysdate () qui renvoie l'heure actuelle, elle renverra des rĂ©sultats diffĂ©rents sur diffĂ©rents serveurs car les requĂȘtes ne sont pas exĂ©cutĂ©es simultanĂ©ment. En outre, diffĂ©rents Ă©tats des dĂ©clencheurs et des fonctions stockĂ©es, diffĂ©rents paramĂštres rĂ©gionaux affectant l'ordre de tri, et bien plus encore, peuvent entraĂźner des diffĂ©rences.



DeuxiĂšmement, la rĂ©plication basĂ©e sur des commandes parallĂšles ne peut pas ĂȘtre interrompue et redĂ©marrĂ©e normalement.







Si la rĂ©plication est arrĂȘtĂ©e au moment T1, la transaction B doit ĂȘtre abandonnĂ©e et annulĂ©e. Lorsque vous redĂ©marrez la rĂ©plication, l'exĂ©cution de la transaction B peut amener la rĂ©plique Ă  un Ă©tat diffĂ©rent de l'Ă©tat de la base de donnĂ©es source: Ă  la source, la transaction B a commencĂ© avant la fin de la transaction A, ce qui signifie qu'elle n'a pas vu les modifications apportĂ©es par la transaction A.

La rĂ©plication des demandes peut ĂȘtre arrĂȘtĂ©e et redĂ©marrĂ© uniquement au moment T2, lorsqu'il n'y a pas de transactions actives dans la base de donnĂ©es. Bien sĂ»r, il n'y a pas de tels moments sur une base industrielle trĂšs chargĂ©e.



En rĂšgle gĂ©nĂ©rale, la rĂ©plication logique utilise des requĂȘtes dĂ©terministes. Le dĂ©terminisme de la requĂȘte est assurĂ© par deux propriĂ©tĂ©s:



  • la requĂȘte met Ă  jour (ou insĂšre, ou supprime) un seul enregistrement, l'identifiant par sa clĂ© primaire (ou unique);
  • tous les paramĂštres de demande sont explicitement dĂ©finis dans la demande elle-mĂȘme.


Contrairement à la réplication basée sur des instructions, cette approche est appelée réplication basée sur les lignes.



Supposons que nous ayons une table d'employés avec les données suivantes:



ID Nom DĂ©partement Un salaire

3817 Ivanov Ivan Ivanovitch 36 1800
2274 Petrov Petr Petrovich 36 1600
4415 Kuznetsov Semyon Andreevich 41 2100


L'opération suivante a été effectuée sur cette table:



update employee set salary = salary*1.2 where dept=36;




Afin de rĂ©pliquer correctement les donnĂ©es, les requĂȘtes suivantes seront exĂ©cutĂ©es dans le rĂ©plica:



update employee set salary = 2160 where id=3817;
update employee set salary = 1920 where id=2274;


Les requĂȘtes produisent le mĂȘme rĂ©sultat que sur la base d'origine, mais elles ne sont pas Ă©quivalentes aux requĂȘtes exĂ©cutĂ©es.



La base de rĂ©pliques est ouverte et disponible non seulement pour la lecture, mais aussi pour l'Ă©criture. Cela permet au rĂ©plica d'ĂȘtre utilisĂ© pour exĂ©cuter une partie des requĂȘtes, y compris pour crĂ©er des rapports nĂ©cessitant la crĂ©ation de tables ou d'index supplĂ©mentaires.



Il est important de comprendre qu'une réplique logique sera équivalente à la base d'origine uniquement si aucune modification supplémentaire n'y est apportée. Par exemple, si dans l'exemple ci-dessus, dans la réplique, le département de Sidorov est ajouté à 36, il ne recevra pas de promotion, et si Ivanov est transféré du département 36, il recevra une promotion, quoi qu'il arrive.



La réplication logique fournit un certain nombre de fonctionnalités introuvables dans d'autres types de réplication:



  • mise en place d'un ensemble de donnĂ©es rĂ©pliquĂ©es au niveau de la table (pour la rĂ©plication physique - au niveau du fichier et de l'espace table, pour la rĂ©plication de bloc - au niveau du volume);
  • crĂ©ation de topologies de rĂ©plication complexes - par exemple, consolidation de plusieurs bases de donnĂ©es en une rĂ©plication unique ou bidirectionnelle;
  • diminution de la quantitĂ© de donnĂ©es transmises;
  • rĂ©plication entre diffĂ©rentes versions d'un SGBD ou mĂȘme entre des SGBD de diffĂ©rents fabricants;
  • traitement des donnĂ©es pendant la rĂ©plication, y compris la restructuration, l'enrichissement, la prĂ©servation de l'histoire.


Il existe Ă©galement des inconvĂ©nients qui empĂȘchent la rĂ©plication logique de remplacer la rĂ©plication physique:



  • toutes les donnĂ©es rĂ©pliquĂ©es doivent avoir des clĂ©s primaires;
  • la rĂ©plication logique ne prend pas en charge tous les types de donnĂ©es - par exemple, il peut y avoir des problĂšmes avec les BLOB.
  • : , ;
  • ;
  • , , – , .


Les deux derniers inconvĂ©nients limitent considĂ©rablement l'utilisation d'une rĂ©plique logique comme outil de tolĂ©rance aux pannes. Si une requĂȘte dans la base de donnĂ©es principale modifie plusieurs lignes Ă  la fois, le rĂ©plica peut ĂȘtre considĂ©rablement retardĂ©. Et la possibilitĂ© de changer de rĂŽle nĂ©cessite des efforts remarquables de la part des dĂ©veloppeurs et des administrateurs.



Il existe plusieurs façons d'implémenter la réplication logique, et chacune de ces méthodes implémente une partie des capacités et n'implémente pas l'autre:



  • rĂ©plication par dĂ©clencheurs;
  • en utilisant les journaux de SGBD;
  • utilisation du logiciel CDC (Change Data Capture);
  • rĂ©plication appliquĂ©e.


Réplication de déclenchement



Le déclencheur est une procédure stockée qui est automatiquement exécutée lors de toute action de modification des données. Le déclencheur, qui est appelé lorsque chaque enregistrement change, a accÚs à la clé de cet enregistrement, ainsi qu'aux anciennes et nouvelles valeurs de champ. Si nécessaire, le déclencheur peut enregistrer les nouvelles valeurs de ligne dans une table spéciale, à partir de laquelle un processus spécial cÎté réplique les lira. La quantité de code dans les déclencheurs est importante, il existe donc un logiciel spécial qui génÚre de tels déclencheurs, par exemple, «réplication de fusion» - un composant de Microsoft SQL Server ou Slony-I - un produit distinct pour la réplication PostgreSQL.



Points forts de la réplication des déclencheurs:



  • indĂ©pendance des versions de la base principale et de la rĂ©plique;
  • capacitĂ©s Ă©tendues de conversion de donnĂ©es.


DĂ©savantages:



  • charge sur la base principale;
  • latence de rĂ©plication Ă©levĂ©e.


Utilisation des journaux du SGBD



Le SGBD lui-mĂȘme peut Ă©galement fournir des capacitĂ©s de rĂ©plication logique. Les journaux sont la source des donnĂ©es, tout comme pour la rĂ©plication physique. Les informations sur le changement d'octet sont Ă©galement ajoutĂ©es aux informations sur les champs modifiĂ©s (journalisation supplĂ©mentaire dans Oracle, wal_level = logicaldans PostgreSQL), ainsi que sur la valeur de la clĂ© unique, mĂȘme si elle ne change pas. En consĂ©quence, le volume de journaux de base de donnĂ©es augmente - selon diverses estimations, de 10 Ă  15%.



Les capacités de réplication dépendent de l'implémentation dans un SGBD particulier - si vous pouvez créer une veille logique dans Oracle, dans PostgreSQL ou Microsoft SQL Server, vous pouvez déployer un systÚme complexe d'abonnements mutuels et de publications à l'aide des outils de plateforme intégrés. De plus, le SGBD fournit une surveillance et un contrÎle intégrés de la réplication.



Les inconvĂ©nients de cette approche incluent une augmentation du volume de journaux et une augmentation possible du trafic entre les nƓuds.



Utilisation du CDC



Il existe toute une classe de logiciels conçus pour organiser la réplication logique. Ce logiciel s'appelle CDC, modifier la capture de données. Voici une liste des plateformes les plus connues de cette classe:



  • Oracle GoldenGate (acquis par GoldenGate en 2009);
  • IBM InfoSphere Data Replication (anciennement InfoSphere CDC; encore plus tĂŽt, DataMirror Transformation Server, acquis par DataMirror en 2007);
  • VisionSolutions DoubleTake / MIMIX (anciennement Vision Replicate1);
  • Plateforme d'intĂ©gration de donnĂ©es Qlik (anciennement Attunity);
  • CDC Informatica PowerExchange;
  • Debezium;
  • Collecteur de donnĂ©es StreamSets ...


La tĂąche de la plate-forme est de lire les journaux de la base de donnĂ©es, de transformer les informations, de transfĂ©rer les informations vers une rĂ©plique et de postuler. Comme dans le cas de la rĂ©plication au moyen du SGBD lui-mĂȘme, le journal doit contenir des informations sur les champs modifiĂ©s. L'utilisation d'une application supplĂ©mentaire vous permet d'effectuer des transformations complexes des donnĂ©es rĂ©pliquĂ©es Ă  la volĂ©e et de crĂ©er des topologies de rĂ©plication assez complexes.



Forces:



  • la capacitĂ© de rĂ©pliquer entre diffĂ©rents SGBD, y compris le chargement des donnĂ©es dans les systĂšmes de reporting;
  • les plus larges possibilitĂ©s de traitement et de transformation des donnĂ©es;
  • trafic minimal entre les nƓuds - la plate-forme coupe les donnĂ©es inutiles et peut compresser le trafic;
  • capacitĂ©s intĂ©grĂ©es pour surveiller l'Ă©tat de la rĂ©plication.


Il n'y a pas beaucoup d'inconvénients:



  • augmentation du volume de logs, comme pour la rĂ©plication logique au moyen d'un SGBD;
  • les nouveaux logiciels sont difficiles Ă  configurer et / ou avec des licences coĂ»teuses.


Ce sont les plates-formes CDC qui sont traditionnellement utilisées pour mettre à jour les entrepÎts de données d'entreprise en temps quasi réel.



Réplication appliquée



Enfin, un autre moyen de rĂ©plication est la formation de vecteurs de changement directement cĂŽtĂ© client. Le client doit Ă©mettre des requĂȘtes dĂ©terministes qui affectent un seul enregistrement. Ceci peut ĂȘtre rĂ©alisĂ© en utilisant une bibliothĂšque de base de donnĂ©es spĂ©ciale telle que le moteur de base de donnĂ©es Borland (BDE) ou l'ORM Hibernate.







Lorsque l'application termine la transaction, le plugin Hibernate ORM écrit le vecteur de modification dans la file d'attente et exécute la transaction sur la base de données. Un processus de réplication spécial soustrait les vecteurs de la file d'attente et effectue des transactions dans la base de répliques.

Ce mĂ©canisme est utile pour mettre Ă  jour les systĂšmes de rapports. Il peut Ă©galement ĂȘtre utilisĂ© pour fournir une tolĂ©rance aux pannes, mais dans ce cas, l'Ă©tat de rĂ©plication doit ĂȘtre surveillĂ© dans l'application.



Traditionnellement - forces et faiblesses de cette approche:



  • la capacitĂ© de rĂ©pliquer entre diffĂ©rents SGBD, y compris le chargement des donnĂ©es dans les systĂšmes de reporting;
  • la capacitĂ© de traiter et de transformer les donnĂ©es, la surveillance de l'Ă©tat, etc.
  • trafic minimal entre les nƓuds - la plate-forme coupe les donnĂ©es inutiles et peut compresser le trafic;
  • indĂ©pendance totale par rapport Ă  la base de donnĂ©es - Ă  la fois du format et des mĂ©canismes internes.


Les avantages de cette méthode sont indéniables, mais il y a deux inconvénients trÚs sérieux:



  • restrictions sur l'architecture des applications;
  • une Ă©norme quantitĂ© de code de rĂ©plication natif.


Alors, quel est le meilleur?



Il n'y a pas de réponse sans équivoque à cette question, ainsi qu'à bien d'autres. Mais j'espÚre que le tableau ci-dessous vous aidera à faire le bon choix pour chaque tùche spécifique:



Réplication de bloc de stockage Bloquer la réplication par agent Réplication physique Réplication de SGBD logique CDC

X X X/7..X/5 X/7..X/5 ≀X/10 ≀X/10 ≀X/10
5 
 5 
 1..10 1..10 1..2 1..2 1..2
+ + +++ + ∅ ∅ ∅
∅ ∅ RO R/W R/W R/W R/W
- -

broadcast
-

broadcast

-

broadcast



*

p2p*
-

broadcast



*

p2p*

-

broadcast



*

p2p*

-

broadcast



*

p2p*

∅ ∅ – – – – – – – – ∅
+ + + + + + + + + – + – – –
– – – – – – ∅ – – – ∅
∅ + + + + + + + + + + + + +


  • , ; .
  • , .
  • , .
  • .
  • , , .
  • CDC , / .
  • .



All Articles