Réplication transactionnelle d’égal à égalPeer-to-Peer - Transactional Replication

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

La réplication d'égal à égal offre une solution avec montée en puissance parallèle et haute disponibilité en conservant des copies de données sur plusieurs instances de serveur, également appelées nœuds.Peer-to-peer replication provides a scale-out and high-availability solution by maintaining copies of data across multiple server instances, also referred to as nodes. Conçue sur la base de la réplication transactionnelle, la réplication d'égal à égal propage les modifications quasiment en temps réel de manière transactionnelle.Built on the foundation of transactional replication, peer-to-peer replication propagates transactionally consistent changes in near real-time. Les applications qui requièrent la montée en puissance parallèle des opérations de lecture peuvent ainsi distribuer les lectures effectuées par les clients sur plusieurs nœuds.This enables applications that require scale-out of read operations to distribute the reads from clients across multiple nodes. Dans la mesure où les données sont conservées sur les nœuds quasiment en temps réel, la réplication d'égal à égal génère une redondance des données, ce qui améliore leur disponibilité.Because data is maintained across the nodes in near real-time, peer-to-peer replication provides data redundancy, which increases the availability of data.

Prenons l'exemple d'une application Web.Consider a Web application. Celle-ci peut tirer parti de la réplication d'égal à égal de différentes manières :This can benefit from peer-to-peer replication in the following ways:

  • Les requêtes de catalogue et autres lectures sont réparties sur plusieurs nœuds.Catalog queries and other reads are spread across multiple nodes. Les performances ne sont pas affectées par l'augmentation des lectures.This enables performance to remain consistent as reads increase.

  • Si l'un des nœuds du système échoue, une couche d'application peut rediriger les écritures pour ce nœud vers un autre nœud.If one of the nodes in the system fails, an application layer can redirect the writes for that node to another node. La disponibilité est ainsi assurée.This maintains availability.

  • Si un nœud doit subir une maintenance ou si le système entier doit être mis à niveau, chaque nœud peut être mis hors connexion, puis de nouveau ajouté au système sans affecter la disponibilité de l'application.If a node requires maintenance or the whole system requires an upgrade, each node can be taken offline and added back to the system without affecting the availability of the application.

Bien que la réplication d'égal à égal permette la montée en puissance parallèle des opérations de lecture, les performances en écriture de cette topologie sont identiques à celles d'un nœud unique.Although peer-to-peer replication enables scaling out of read operations, write performance for the topology is like that for a single node. En effet, toutes les insertions, mises à jour et suppressions sont propagées à l'ensemble des nœuds.This is because ultimately all inserts, updates, and deletes are propagated to all nodes. La réplication reconnaît si une modification a été appliquée à un nœud donné et empêche les modifications de boucler plusieurs fois dans les nœuds.Replication recognizes when a change has been applied to a given node and prevents changes from cycling through the nodes more than one time. Nous vous recommandons vivement de limiter les opérations d'écriture pour chaque ligne à un seul nœud pour les raisons suivantes :We strongly recommend that write operations for each row be performed at only node, for the following reasons:

  • Si une ligne est modifiée au niveau de plusieurs nœuds, elle peut provoquer un conflit, voire la perte de la mise à jour, lorsque la ligne est propagée à d'autres nœuds.If a row is modified at more than one node, it can cause a conflict or even a lost update when the row is propagated to other nodes.

  • Une certaine latence rentre toujours en jeu lors la réplication des modifications.There is always some latency involved when changes are replicated. Dans le cas d'applications exigeant que les toutes dernières modifications soient immédiatement visibles, l'équilibrage de charge dynamique de l'application sur plusieurs nœuds peut poser un problème.For applications that require the latest change to be seen immediately, dynamically load balancing the application across multiple nodes can be problematic.

La réplication d'égal à égal comprend une option permettant d'activer la détection des conflits dans une topologie d'égal à égal.Peer-to-peer replication includes the option to enable conflict detection across a peer-to-peer topology. Cette option permet d'éviter les problèmes issus de conflits non détectés, notamment le comportement incohérent des applications et les mises à jour perdues.This option helps prevent the issues that are caused from undetected conflicts, including inconsistent application behavior and lost updates. Lorsqu'elle est activée, une modification en conflit est considérée par défaut comme une erreur critique qui provoque l'échec de l'Agent de distribution.By enabling this option, by default a conflicting change is treated as a critical error that causes the failure of the Distribution Agent. En cas de conflit, la topologie reste dans un état incohérent jusqu'à la résolution manuelle du conflit et au rétablissement de la cohérence des données dans la topologie.In the event of a conflict, the topology remains in an inconsistent state until the conflict is resolved manually and the data is made consistent across the topology. Pour plus d’informations, voir Conflict Detection in Peer-to-Peer Replication.For more information, see Conflict Detection in Peer-to-Peer Replication.

Notes

Pour éviter l'incohérence potentielle des données, faites-en sorte d'éviter les conflits dans une topologie d'égal à égal, même si la détection des conflits est activée.To avoid potential data inconsistency, make sure that you avoid conflicts in a peer-to-peer topology, even with conflict detection enabled. Afin de garantir que les opérations d'écriture pour une ligne particulière soient réalisées au niveau d'un seul nœud, les applications qui accèdent aux données et les modifient doivent partitionner les opérations d'insertion, de mise à jour et de suppression.To ensure that write operations for a particular row are performed at only one node, applications that access and change data must partition insert, update, and delete operations. Ce partitionnement garantit que les modifications apportées à une ligne donnée provenant d'un nœud sont synchronisées avec tous les autres nœuds de la topologie avant que cette ligne ne soit modifiée par un autre nœud.This partitioning ensures that modifications to a given row originating at one node are synchronized with all other nodes in the topology before the row is modified by a different node. Si une application requiert des fonctionnalités avancées de détection et de résolution des conflits, utilisez la réplication de fusion.If an application requires sophisticated conflict detection and resolution capabilities, use merge replication. Pour plus d’informations, consultez Réplication de fusion et Détecter et résoudre des conflits de réplication de fusion.For more information, see Merge Replication and Detect and Resolve Merge Replication Conflicts.

Topologies d'égal à égalPeer-to-Peer Topologies

Les scénarios suivants illustrent des utilisations standard de la réplication d'égal à égal.The following scenarios illustrate typical uses for peer-to-peer replication.

Topologie comprenant deux bases de données participantesTopology That Has Two Participating Databases

Réplication d’égal à égal, deux nœudsPeer-to-peer replication, two nodes

Les deux illustrations ci-dessus montrent deux bases de données participantes dont le trafic utilisateur est dirigé vers les bases de données par le biais d'un serveur d'applications.Both of the preceding illustrations show two participating databases, with user traffic directed to the databases through an application server. Cette configuration peut être utilisée avec de nombreuses applications (des sites Web aux applications de groupe de travail) et présente les avantages suivants :This configuration can be used for a variety of applications, from Web sites to workgroup applications, and provides the following benefits:

  • amélioration des performances de lecture due à la répartition des lectures sur les deux serveurs ;Improved read performance, because reads are spread out over two servers.

  • disponibilité plus élevée si la maintenance est requise ou en cas de panne sur un nœud.Higher availability if maintenance is required or in case of failure at one node.

Dans les deux illustrations, l'activité de lecture est équilibrée entre les bases de données participantes, mais les mises à jour sont gérées autrement :In both illustrations, read activity is load-balanced between the participating databases, but updates are handled differently:

  • À gauche, les mises à jour sont partitionnées entre les deux serveurs.On the left, updates are partitioned between the two servers. Si la base de données contenait un catalogue de produits, une application personnalisée pourrait par exemple diriger vers le nœud A les mises à jour des produits dont le nom commence par les lettres A à M et vers le nœud B les mises à jour des produits dont le nom commence par les lettres N à Z. Les mises à jour sont ensuite répliquées sur l'autre nœud.If the database contained a product catalog, you could, for example, have a custom application direct updates to node A for product names that start with A through M, and direct updates to node B for product names that start with N through Z. Updates are then replicated to the other node.

  • À droite, toutes les mises à jour sont dirigées vers le nœud B. De là, les mises à jour sont répliquées sur le nœud A. Si le nœud B est hors connexion (pour cause de maintenance, par exemple), le serveur d’applications peut diriger toutes les activités vers le nœud A. Lorsque le nœud B revient en ligne, il peut de nouveau recevoir les mises à jour ; le serveur d’applications peut alors retransférer toutes les mises à jour vers B ou continuer à les diriger vers A.On the right, all updates are directed to node B. From there, updates are replicated to node A. If B is offline (for example, for maintenance), the application server can direct all activity to A. When B is back online, updates can flow to it, and the application server can move all updates back to B or keep directing them to A.

Si la réplication d'égal à égal prend en charge les deux méthodes, l'exemple de mise à jour centralisée à droite est également souvent utilisé avec la réplication transactionnelle standard.Peer-to-peer replication can support either approach, but the central update example on the right is also often used with standard transactional replication.

Topologie comprenant au moins trois bases de données participantesTopologies That Have Three or More Participating Databases

Réplication d’égal à égal vers des emplacements dispersésPeer-to-peer replication to dispersed locations

L'illustration ci-dessus montre trois bases de données participantes qui fournissent des données à une entreprise internationale d'assistance technique de logiciels dont les bureaux se trouvent à Los Angeles, Londres et Taipei.The preceding illustration shows three participating databases that provide data for a worldwide software support organization, with offices in Los Angeles, London, and Taipei. Les ingénieurs de support enregistrent les appels clients dans chaque bureau et ils entrent et mettent à jour les informations sur chaque appel client.The support engineers at each office take customer calls and enter and update information about each customer call. Les fuseaux horaires des trois bureaux ayant huit heures d'écart, il n'y a pas de chevauchement pendant une journée de travail :The time zones for the three offices are eight hours apart, so there is no overlap in the workday. lorsque le bureau de Taipei ferme, le bureau de Londres ouvre.As the Taipei office closes, the London office is opening for the day. Si un appel n'est pas terminé à la fermeture d'un bureau, il est transféré à un conseiller client dans un autre bureau qui ouvre.If a call is still in progress as one office is closing, the call is transferred to a representative at the next office to open.

Chaque bureau possède un serveur de base de données et un serveur d'applications dont se servent les ingénieurs de support lorsqu'ils entrent et mettent à jour les informations sur les appels clients.Each location has a database and an application server, which are used by the support engineers as they enter and update information about customer calls. La topologie est partitionnée selon l'horaire.The topology is partitioned by time. Les mises à jour n'ont donc lieu que sur le nœud actuellement ouvert, puis elles sont acheminées aux autres bases de données participantes.Therefore, updates occur only at the node that is currently open for business, and then the updates flow to the other participating databases. Cette topologie présente les avantages suivants :This topology provides the following benefits:

  • indépendance sans isolement : chaque bureau peut insérer, mettre à jour ou supprimer des données indépendamment, mais aussi les partager du fait de leur réplication sur toutes les bases de données participantes ;Independence without isolation: Each office can insert, update, or delete data independently but can also share the data because it is replicated to all other participating databases.

  • disponibilité élevée en cas de panne ou de maintenance sur une ou plusieurs bases de données participante.Higher availability in case of failure or to allow maintenance at one or more of the participating databases.

    Réplication d’égal à égal, trois et quatre nœudsPeer-to-peer replication, three and four nodes

L'illustration ci-dessus montre l'ajout d'un nœud dans la topologie qui en compte déjà trois.The preceding illustration shows the addition of a node to the three-node topology. Un nœud pourrait être ajouté dans ce scénario pour les raisons suivantes :A node could be added in this scenario for the following reasons:

  • parce qu'un autre bureau est ouvert ;Because another office is opened.

  • pour fournir une disponibilité élevée afin de prendre en charge la maintenance ou augmenter la tolérance de panne en cas de défaillance de disque ou d'un autre grave problème.To provide higher availability to support maintenance or increase fault tolerance if a disk failure or other major failure occurs.

Remarquez que dans les topologies à trois nœuds et à quatre nœuds, toutes les bases de données publient et s'abonnent à toutes les autres bases de données.Notice that in both the three- and four-node topologies, all databases publish and subscribe to all other databases. Cela permet d'assurer une disponibilité maximale en cas de maintenance ou d'échec d'un ou plusieurs nœuds.This provides maximum availability in case of maintenance needs or failure of one or more nodes. Lors de l'ajout de nœuds, veillez à équilibrer les besoins en disponibilité et en évolutivité par rapport aux performances et à la complexité du déploiement et de l'administration.As nodes are added, you must balance availability and scalability needs against performance and the complexity of deployment and administration.

Configuration d'une réplication d'égal à égalConfiguring Peer-to-Peer Replication

La configuration d'une topologie de réplication d'égal à égal est très semblable à celle d'une série de publications et d'abonnements transactionnels standard.Configuring a peer-to-peer replication topology is very similar to configuring a series of standard transactional publications and subscriptions. Les procédures décrites dans les rubriques qui suivent montrent comment configurer un système à trois nœuds, similaire à la configuration illustrée à gauche dans l'illustration précédente qui montrait une topologie d'égal à égal.The steps described in the following topics show the configuration of a three-node system, similar to the configuration shown on the left in the previous illustration that shows peer-to-peer topology.

Considérations sur l'utilisation de la réplication d'égal à égalConsiderations for Using Peer-to-Peer Replication

Cette section fournit des informations et des consignes à considérer lors de l'utilisation de la réplication d'égal à égal.This section provides information and guidelines to consider when you use peer-to-peer replication.

Considérations généralesGeneral Considerations

  • La réplication d'égal à égal est disponible uniquement dans les versions Enterprise de SQL ServerSQL Server.Peer-to-peer replication is available only in Enterprise versions of SQL ServerSQL Server.

  • Toutes les bases de données qui participent à la réplication d'égal à égal doivent contenir un schéma et des données identiques :All databases that participate in peer-to-peer replication should contain identical schema and data:

    • Les noms d'objets, le schéma d'objet et les noms de publication doivent être identiques.Object names, object schema, and publication names should be identical.

    • Les publications doivent autoriser la réplication des modifications de schéma.Publications must allow schema changes to be replicated. (Pour cela la propriété de publication replicate_ddl doit avoir la valeur 1, ce qui est le paramètre par défaut.) Pour plus d’informations, consultez Modifier le schéma dans les bases de données de publication.(This is a setting of 1 for the publication property replicate_ddl, which is the default setting.) For more information, see Make Schema Changes on Publication Databases.

    • Le filtrage des lignes et des colonnes n'est pas pris en charge.Row and column filtering are not supported.

  • Il est recommandé que chaque nœud utilise sa propre base de données de distributionWe recommend that each node use its own distribution database. afin d'éviter le risque d'avoir un point d'échec unique.This eliminates the potential of having a single point of failure.

  • Les tables et autres objets ne peuvent pas être inclus dans plusieurs publications d'égal à égal au sein d'une base de données de publication unique.Tables and other objects cannot be included in multiple peer-to-peer publications in a single publication database.

  • Une publication doit être activée pour la réplication d'égal à égal avant la création des abonnements.A publication must be enabled for peer-to-peer replication before any subscriptions are created.

  • Les abonnements doivent être initialisés à l'aide d'une sauvegarde ou de l'option Prise en charge de la réplication uniquement .Subscriptions must be initialized by using a backup or with the 'replication support only' option. Pour plus d’informations, consultez Initialiser un abonnement transactionnel sans instantané.For more information, see Initialize a Transactional Subscription Without a Snapshot.

  • L'utilisation de colonnes d'identité est déconseillée.We do not recommend the use of identity columns. Avec les identités, vous devez gérer manuellement les plages affectées aux tables sur chaque base de données participante.When using identities, you must manually manage the ranges assigned to the tables at each participating database. Pour plus d’informations, consultez la section « Affectation de plages pour la gestion manuelle de plages d’identité » dans Répliquer des colonnes d’identité.For more information, see the section "Assigning Ranges for Manual Identity Range Management" in Replicate Identity Columns.

Restrictions liées aux fonctionnalitésFeature Restrictions

La réplication d'égal à égal prend en charge les principales fonctionnalités de la réplication transactionnelle, mais ne prend pas en charge les options suivantes :Peer-to-peer replication supports the core features of transactional replication, but does not support the following options:

  • initialisation et réinitialisation avec instantané ;Initialization and reinitialization with a snapshot.

  • filtres de lignes et de colonnes ;Row and column filters.

  • colonnes d'horodatage ;Timestamp columns.

  • serveurs de publication et Abonnés non-SQL ServerSQL Server ;Non-SQL ServerSQL Server Publishers and Subscribers.

  • abonnements mis à jour immédiatement ou en attente ;Immediate updating and queued updating subscriptions.

  • abonnements anonymes ;Anonymous subscriptions.

  • abonnements partiels ;Partial subscriptions.

  • abonnements pouvant être attachés et abonnements transformables.Attachable subscriptions and transformable subscriptions. (Ces deux options sont déconseillées dans SQL Server 2005 (9.x)SQL Server 2005 (9.x)) ;(Both of these options were deprecated in SQL Server 2005 (9.x)SQL Server 2005 (9.x).)

  • Agents de distribution partagés ;Shared Distribution Agents.

  • paramètre de l'Agent de Distribution -SubscriptionStreams et paramètre de l'Agent de lecture du journal -MaxCmdsInTran;The Distribution Agent parameter -SubscriptionStreams and the Log Reader Agent parameter -MaxCmdsInTran.

  • propriétés d’article @destination_owner et @destination_table.The article properties @destination_owner and @destination_table.

  • La réplication transactionnelle d’égal à égal ne prend pas en charge la création d’un abonnement transactionnel à sens unique à une publication d’égal à égal.Peer-to-Peer transactional replication does not support creating a one-way transactional subscription to a Peer-to-Peer publication

Les propriétés suivantes présentent des considérations spéciales :The following properties have special considerations:

  • La propriété de publication @allow_initialize_from_backup doit avoir la valeur true.The publication property @allow_initialize_from_backup requires a value of true.

  • La propriété d’article @replicate_ddl doit avoir la valeur true ; @identityrangemanagementoption doit avoir la valeur manual, et @status nécessite la définition de l’option 24.The article property @replicate_ddl requires a value of true; @identityrangemanagementoption requires a value of manual; and @status requires that option 24 is set.

  • Les propriétés d’article @ins_cmd, @del_cmd et @upd_cmd ne peuvent pas être définies sur SQL.The value for article properties @ins_cmd, @del_cmd, and @upd_cmd cannot be set to SQL.

  • La propriété d’abonnement @sync_type doit avoir la valeur none ou automatic.The subscription property @sync_type requires a value of none or automatic.

Considérations sur la maintenanceMaintenance Considerations

Certaines actions nécessitent la suspension du système.Some actions require the system to be quiescent. Ce qui signifie que toute activité sur les tables publiées doit être interrompue au niveau de tous les nœuds et que la réception par chacun des nœuds de toutes les modifications provenant des autres nœuds doit être vérifiée.This means stopping activity on published tables at all nodes and making sure that each node has received all changes from all other nodes.

Homologues SQL Server 2005 uniquement ou combinaison d’homologues SQL Server 2005 et d’homologues SQL Server 2008 ou version ultérieureSQL Server 2005 peers only or mix of SQL Server 2005 peers with SQL Server 2008 peers and higher Homologues SQL Server 2005 uniquement ou combinaison d’homologues SQL Server 2005 et d’homologues SQL Server 2008 ou version ultérieureSQL Server 2005 peers only or mix of SQL Server 2005 peers with SQL Server 2008 peers and higher Homologues SQL 2008 ou version ultérieureSQL2008 peers and higher Homologues SQL 2008 ou version ultérieureSQL2008 peers and higher
Ajout d’un nœud à la topologieAdding a node to the topology 2 nœuds dans la topologie complète : aucune suspension requise.2 nodes in complete topology: No quiescing required. Utilisez plutôt sync_type = 'initialize with backup'Use sync_type = 'initialize with backup'. Plus de 2 nœuds : suspension requise.More than 2 nodes: Quiescing required. sync_type = 'replication support only': suspension requise.sync_type = 'replication support only': Quiescing required. sync_type = 'initialize with backup' et 'initialize from lsn' : aucune suspension requise.sync_type = 'initialize with backup' and 'initialize from lsn': No quiescing required.

Les modifications de schéma de topologie (ajout ou suppression d’un article) nécessitent une suspension.Topology schema changes (adding or dropping an article) requires quiescing. Pour plus d’informations, consultez Administrer une topologie d’égal à égal (programmation Transact-SQL de la réplication).For more information, see Administer a Peer-to-Peer Topology (Replication Transact-SQL Programming).

La suppression d’un nœud de la topologie ne nécessite jamais de suspension.Removing a node from the topology never requires quiescing.

La modification des propriétés d’article à l’aide de sp_changearticle ne nécessite jamais de suspension.Changing the article properties by using sp_changearticle never requires quiescing. Les modifications autorisées (pour une topologie d’égal à égal) concernent les propriétés description, ins_cmd, upd_cmdet del_cmd .Allowable changes (for P2P) are the description, ins_cmd, upd_cmd, and del_cmd properties.

Les modifications de schéma d’article (ajout/suppression de colonnes) ne nécessitent jamais de suspension.Article Schema changes (adding/dropping column) never requires quiescing.

  • Ajout d’article : pour l’ajout d’un article à une configuration existante, nous devons suspendre le système, exécuter l’instruction CREATE TABLE, charger les données initiales dans chaque nœud de la topologie, puis ajouter le nouvel article à chacun de ces nœuds.Adding article: For adding an article to an existing configuration- we need to quiesce the system, execute CREATE TABLE statement & load initial data at each node in the topology and add the new article at each node in the topology.

  • Suppression d’article : si nous voulons que tous les nœuds présentent un état cohérent, nous devons suspendre la topologie.Dropping article: If we want a consistent state on all nodes, we need to quiesce the topology

Pour plus d’informations, consultezSuspendre une topologie de réplication (programmation Transact-SQL de la réplication) et Administrer une topologie d’égal à égal (programmation Transact-SQL de la réplication).For more information, see Quiesce a Replication Topology (Replication Transact-SQL Programming) and Administer a Peer-to-Peer Topology (Replication Transact-SQL Programming).

  • Si vous ajoutez un nouveau nœud à une topologie d'égal à égal, n'utilisez pour la restauration que des sauvegardes créées après l'ajout de ce nœud.If you add a new node to a peer-to-peer topology, you should restore only from backups that were created after the new node was added.

  • Vous ne pouvez pas réinitialiser les abonnements dans une topologie d'égal à égal.You cannot reinitialize subscriptions in a peer-to-peer topology. Si vous devez faire en sorte qu'un nœud dispose d'une nouvelle copie des données, restaurez une sauvegarde sur le nœud.If you have to ensure that a node has a new copy of the data, restore a backup at the node.

Voir aussiSee Also

Administrer une topologie d’égal à égal (programmation Transact-SQL de la réplication) Administer a Peer-to-Peer Topology (Replication Transact-SQL Programming)
Stratégies de sauvegarde et de restauration de la réplication transactionnelle et d’instantané Strategies for Backing Up and Restoring Snapshot and Transactional Replication
Réplication transactionnelleTransactional replication