Mise en miroir de bases de données et réplication (SQL Server)Database Mirroring and Replication (SQL Server)

Cette rubrique s’applique à : OuiSQL Serveraucunbase de données SQL AzureaucunAzure SQL Data Warehouse aucun Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse La mise en miroir des bases de données peut avoir lieu en parallèle à la réplication afin d’améliorer la disponibilité de la base de données de publication. Database mirroring can be used in conjunction with replication to improve availability for the publication database. La mise en miroir des bases de données consiste à avoir deux exemplaires d'une même base de données qui résident généralement sur des ordinateurs différents.Database mirroring involves two copies of a single database that typically reside on different computers. À un moment donné précis, les clients ne peuvent accéder qu'à un seul exemplaire de la base de données.At any given time, only one copy of the database is currently available to clients. Cet exemplaire s'appelle la base de données principale.This copy is known as the principal database. Les mises à jour apportées par les clients sur la base de données principale sont appliquées à l'autre exemplaire de la base de données, appelé base de données miroir.Updates made by clients to the principal database are applied on the other copy of the database, known as the mirror database. La mise en miroir consiste à répercuter dans la base de données miroir chaque insertion, mise à jour ou suppression apportée à la base de données principale.Mirroring involves applying the transaction log from every insertion, update, or deletion made on the principal database onto the mirror database.

Le basculement de réplication vers un miroir est entièrement pris en charge pour les bases de données de publication, avec la prise en charge limitée des bases de données d'abonnement.Replication failover to a mirror is fully supported for publication databases, with limited support for subscription databases. La mise en miroir de bases de données n'est pas prise en charge pour la base de données de distribution.Database mirroring is not supported for the distribution database. Pour plus d’informations sur la façon de récupérer une base de données de distribution ou d’abonnement sans avoir à reconfigurer la réplication, consultez Sauvegarder et restaurer des bases de données répliquées.For information about recovering a distribution database or subscription database without any need to reconfigure replication, see Back Up and Restore Replicated Databases. Pour plus d'informations sur la mise en miroir de la base de données de l'abonné, consultezFor information about mirroring the subscriber database, see the

Note

Après un basculement, le miroir devient la base de données principale.After a failover, the mirror becomes the principal. Dans cette rubrique, les termes « principale » et « miroir » renvoient toujours aux bases de données principale et miroir d'origine.In this topic, "principal" and "mirror" always refer to the original principal and mirror.

Conditions requises et éléments à prendre en compte pour procéder à une réplication avec mise en miroir des bases de donnéesRequirements and Considerations for Using Replication with Database Mirroring

Tenez compte des exigences et des points suivants lors d'une réplication avec mise en miroir des bases de données :Be aware of the following requirements and considerations when using replication with database mirroring:

  • Les bases de données principale et miroir doivent partager un serveur de distribution.The principal and mirror must share a Distributor. Nous vous conseillons de choisir un serveur de distribution à distance qui offre une plus grande tolérance de panne en cas de basculement inopiné du serveur de publication.We recommend that this be a remote Distributor, which provides greater fault tolerance if the Publisher has an unplanned failover.

  • La réplication prend en charge la mise en miroir des bases de données de publication pour les réplications de fusion et les réplications transactionnelles mettant en jeu des Abonnés en lecture seule ou des Abonnés avec mise à jour en file d'attente.Replication supports mirroring the publication database for merge replication and for transactional replication with read-only Subscribers or queued updating Subscribers. Les Abonnés avec mise à jour immédiate, les serveurs de publication Oracle et les serveurs de publication d'une topologie d'égal à égal ne sont pas pris en charge.Immediate updating Subscribers, Oracle Publishers, Publishers in a peer-to-peer topology, and republishing are not supported.

  • Les métadonnées et les objets qui existent en dehors de la base de données, c'est-à-dire connexions, travaux, serveurs liés, etc. ne sont pas copiés vers le miroir.Metadata and objects that exist outside the database are not copied to the mirror, including logins, jobs, linked servers, and so on. Si vous voulez faire figurer les métadonnées et les objets dans le miroir, vous devez les copier manuellement.If you require the metadata and objects at the mirror, you must copy them manually. Pour plus d’informations, consultez Gestion des connexions et des travaux après un basculement de rôle (SQL Server).For more information, see Management of Logins and Jobs After Role Switching (SQL Server).

Configuration de la réplication avec mise en miroir des bases de donnéesConfiguring Replication with Database Mirroring

La configuration de la réplication et de la mise en miroir des bases de données se fait en cinq étapes.Configuring replication and database mirroring involves five steps. Chaque étape est décrite plus en détail dans les sections qui suivent.Each step is described in more detail in the following section.

  1. Configurez le serveur de publication.Configure the Publisher.

  2. Configurez la mise en miroir des bases de données.Configure database mirroring.

  3. Configurez la base de données miroir de façon à ce qu'elle utilise le même serveur de distribution que la base de données principale.Configure the mirror to use the same Distributor as the principal.

  4. Configurez les agents de réplication pour le basculement.Configure replication agents for failover.

  5. Ajoutez les bases de données principale et miroir dans le Moniteur de réplication.Add the principal and mirror to Replication Monitor.

    Les étapes 1 et 2 peuvent être inversées.Steps 1 and 2 can also be performed in the opposite order.

Pour configurer la mise en miroir d'une base de données de publicationTo configure database mirroring for a publication database

  1. Configurez le serveur de publication :Configure the Publisher:

    1. Nous vous conseillons d'utiliser un serveur de distribution distant.We recommend using a remote Distributor. Pour plus d’informations sur la configuration de la distribution, consultez Configuration de la distribution.For more information about configuring distribution, see Configure Distribution.

    2. Vous pouvez activer une base de données en vue de publications d'instantanés, de publications transactionnelles et/ou de publications de fusion.You can enable a database for snapshot and transactional publications and/or merge publications. Pour les bases de données mises en miroir contenant plusieurs types de publications, vous devez activer la base de données pour les différents types au niveau du même nœud à l’aide de sp_replicationdboption.For mirrored databases that will contain more than one type of publication, you must enable the database for both types at the same node using sp_replicationdboption. Vous pourriez, par exemple, appeler la procédure stockée suivante sur le principal :For example, you could execute the following stored procedure calls at the principal:

      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='publish', @value=true;  
      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='mergepublish', @value=true;  
      

      Pour plus d’informations sur la création de publications, consultez Publier des données et des objets de base de données.For more information about creating publications, see Publish Data and Database Objects.

  2. Configurez la mise en miroir des bases de données.Configure database mirroring. Pour plus d’informations, consultez Établir une session de mise en miroir de bases de données au moyen de l’authentification Windows (SQL Server Management Studio) et Configuration de la mise en miroir d’une base de données (SQL Server).For more information, see Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio) and Setting Up Database Mirroring (SQL Server).

  3. Configurez la distribution pour le miroir.Configure distribution for the mirror. Spécifiez le nom du miroir comme serveur de publication, puis spécifiez le serveur de publication et le dossier d'instantanés que le principal utilise.Specify the mirror name as the Publisher, and specify the same Distributor and snapshot folder that the principal uses. Par exemple, si vous configurez la réplication par le biais de procédures stockées, exécutez sp_adddistpublisher sur le serveur de distribution, puis sp_adddistributor sur le miroir.For example, if you are configuring replication with stored procedures, execute sp_adddistpublisher at the Distributor; and then execute sp_adddistributor at the mirror. Pour sp_adddistpublisher:For sp_adddistpublisher:

    • Donnez au paramètre @publisher le nom de réseau du miroir.Set the value of the @publisher parameter to the network name of the mirror.

    • Donnez au paramètre @working_directory le nom du dossier d’instantanés utilisé par le principal.Set the value of the @working_directory parameter to the snapshot folder used by the principal.

  4. Spécifiez le nom du miroir pour le paramètre d’agent –PublisherFailoverPartner .Specify the mirror name for the –PublisherFailoverPartner agent parameter. Agent Ce paramètre est obligatoire ; il permet aux agents suivants d'identifier le miroir après le basculement :Agent This parameter is required for the following agents to identify the mirror after failover:

    • Agent d'instantané (pour toutes les publications)Snapshot Agent (for all publications)

    • Agent de lecture du journal (pour toutes les publications transactionnelles)Log Reader Agent (for all transactional publications)

    • Agent de lecture de la file d'attente (pour les publications transactionnelles prenant en charge les abonnements avec mise à jour en file d'attente)Queue Reader Agent (for transactional publications that support queued updating subscriptions)

    • Agent de fusion (pour les abonnements de fusion)Merge Agent (for merge subscriptions)

    • SQL ServerSQL Server Écouteur de réplication (replisapi.dll : pour les abonnements de fusion synchronisés via la synchronisation web) replication listener (replisapi.dll: for merge subscriptions synchronized using Web synchronization)

    • Contrôle ActiveX SQL Merge (pour les abonnements de fusion synchronisés à l'aide du contrôle)SQL Merge ActiveX Control (for merge subscriptions synchronized with the control)

      L'agent de distribution et le contrôle ActiveX SQL Distribution n'ont pas ce paramètre puisqu'ils ne se connectent pas au serveur de publication.The Distribution Agent and Distribution ActiveX Control do not have this parameter because they do not connect to the Publisher.

      Les modifications apportées aux paramètres prennent effet au prochain démarrage de l'Agent.Agent parameter changes take effect the next time the agent is started. Si l'Agent fonctionne en continu, vous devez l'arrêter, puis le redémarrer.If the agent runs continuously, you must stop and restart the agent. Les paramètres peuvent être définis dans les profils d'agent et à l'invite de commandes.Parameters can be specified in agent profiles and from the command prompt. Pour plus d'informations, consultez :For more information, see:

    • Afficher et modifier des paramètres d’invite de commandes d’un Agent de réplication (SQL Server Management Studio)View and Modify Replication Agent Command Prompt Parameters (SQL Server Management Studio)

    • Concepts des exécutables de l'agent de réplicationReplication Agent Executables Concepts

      Nous vous conseillons d’ajouter le paramètre –PublisherFailoverPartner à un profil d’agent, puis de spécifier le nom du miroir dans le profil.We recommend adding the –PublisherFailoverPartner to an agent profile, and then specifying the mirror name in the profile. Par exemple, si vous configurez la réplication à l'aide de procédures stockées :For example, if you are configuring replication with stored procedures:

    -- Execute sp_help_agent_profile in the context of the distribution database to get the list of profiles.  
    -- Select the profile id of the profile that needs to be updated from the result set.  
    -- In the agent_type column returned by sp_help_agent_profile:   
    -- 1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 4 = Merge Agent; 9 = Queue Reader Agent.  
    
    exec sp_help_agent_profile;  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Snapshot Agent profile (profile 1).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Merge Agent profile (profile 6).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 6, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
  5. Ajoutez les bases de données principale et miroir dans le Moniteur de réplication.Add the principal and mirror to Replication Monitor. Pour plus d’informations, consultez Ajouter et supprimer des serveurs de publication à partir du moniteur de réplication.For more information, see Add and Remove Publishers from Replication Monitor.

Gestion d'une base de données de publication mise en miroirMaintaining a Mirrored Publication Database

La gestion d'une base de données de publication reste quasiment identique qu'elle soit mise en miroir ou non, mais quelques précautions sont toutefois à prendre :Maintaining a mirrored publication database is essentially the same as maintaining a non-mirrored database, with the following considerations:

  • L'administration et la surveillance doivent se faire au niveau du serveur actif.Administration and monitoring must occur at the active server. Dans SQL Server Management StudioSQL Server Management Studio, les publications apparaissent sous le dossier Publications locales uniquement pour le serveur actif.In SQL Server Management StudioSQL Server Management Studio, publications appear under the Local Publications folder only for the active server. En cas de basculement sur le miroir, par exemple, les publications s'affichent sur le miroir et plus sur le principal.For example, if you failover to the mirror, the publications are displayed at the mirror and are no longer displayed at the principal. Si la base de données bascule sur le miroir, vous aurez à actualiser manuellement Management StudioManagement Studio et le moniteur de réplication pour répercuter les modifications.If the database fails over to the mirror, you might need to manually refresh Management StudioManagement Studio and Replication Monitor for the change to be reflected.

  • Le moniteur de réplication affiche les nœuds de serveur de publication dans l'arborescence des objets de la base de données principale et de la base de données miroir.Replication Monitor displays Publisher nodes in the object tree for both the principal and the mirror. Si la base de données principale est le serveur actif, les informations de publication sont affichées uniquement sous le nœud de base de données principale dans le moniteur de réplication.If the principal is the active server, publication information is displayed only under the principal node in Replication Monitor.

    Si la base de données miroir est le serveur actif :If the mirror is the active server:

    • Si un agent possède une erreur, celle-ci est indiquée sur le nœud de base de données principale, pas sur le nœud de base de données miroir.If an agent has an error, the error is indicated only on the principal node, not on the mirror node.

    • Si la base de données principale n'est pas disponible, les nœuds de base de données principale et miroir affichent des listes identiques de publications.If the principal is unavailable, the principal and mirror nodes display identical lists of publications. La surveillance doit être réalisée sur les publications sous le nœud de base de données miroir.Monitoring should be performed on the publications under the mirror node.

  • Si vous faites appel aux procédures stockées ou aux Replication Management Objects pour gérer la réplication sur le miroir, vous devez spécifier comme serveur de publication le nom de l'instance où la base de données est activée pour la réplication.When using stored procedures or Replication Management Objects (RMO) to administer replication at the mirror, for cases in which you specify the Publisher name, you must specify the name of the instance on which the database was enabled for replication. Pour déterminer le nom approprié, utilisez la fonction publishingservername.To determine the appropriate name, use the function publishingservername.

    En cas de mise en miroir d'une base de données de publication, les métadonnées de réplication stockées dans la base de données miroir sont identiques à celles de la base de données principale.When a publication database is mirrored, the replication metadata stored in the mirrored database is identical to the metadata stored in the principal database. Par conséquent, en cas de bases de données de publication activées pour la réplication sur le principal, le nom d'instance du serveur de publication stocké dans les tables système du miroir est celui du principal, et non du miroir.Consequently, for publication databases enabled for replication at the principal, the Publisher instance name stored in system tables at the mirror is the name of the principal, not the mirror. Cela affecte la configuration et l'administration de la réplication si la base de données de publication bascule sur le miroir.This affects replication configuration and maintenance if the publication database fails over to the mirror. Supposons, par exemple, que vous configuriez la réplication à l’aide de procédures stockées sur le miroir, une fois le basculement réalisé, et que vous vouliez ajouter un abonnement par extraction de données à une base de données de publication activée au niveau du principal, vous devez alors utiliser le nom principal et non le nom miroir dans le paramètre @publisher de sp_addpullsubscription ou sp_addmergepullsubscription.For example, if you are configuring replication with stored procedures on the mirror after a failover, and you want to add a pull subscription to a publication database that was enabled at the principal, you must specify the principal name rather than the mirror name for the @publisher parameter of sp_addpullsubscription or sp_addmergepullsubscription.

    Si vous activez une base de données de publication au niveau du miroir, une fois le basculement vers le miroir réalisé, le nom d’instance du serveur de publication stocké dans les tables système est le nom du miroir. Dans ce cas, vous devez utiliser le nom du miroir dans le paramètre @publisher .If you enable a publication database at the mirror after failover to the mirror, the Publisher instance name stored in system tables is the name of the mirror; in this case, you would use the name of the mirror for the @publisher parameter.

    Note

    Dans certains cas, comme sp_addpublication, le paramètre @publisher n’est pris en charge que pour les serveurs de publication non- SQL ServerSQL Server . Il ne sert alors à rien en cas de mise en miroir des bases de données SQL ServerSQL Server .In some cases, such as sp_addpublication, the @publisher parameter is supported only for non- SQL ServerSQL Server Publishers; in these cases, it is not relevant for SQL ServerSQL Server database mirroring.

  • Pour synchroniser un abonnement dans Management StudioManagement Studio après un basculement : synchronisez les abonnements par extraction à partir de l'Abonné, puis synchronisez les abonnements par émission de données à partir du serveur de publication actif.To synchronize a subscription in Management StudioManagement Studio after a failover: synchronize pull subscriptions from the Subscriber; and synchronize push subscriptions from the active Publisher.

Comportement de la réplication en cas de suppression de la mise en miroirReplication Behavior if Mirroring is Removed

Gardez les points suivants à l'esprit si la mise en miroir des bases de données est retirée d'une base de données publiée :Keep the following issues in mind if database mirroring is removed from a published database:

  • Si la base de données de publication du principal n'est plus mise en miroir, la réplication se poursuit comme si de rien n'était vis-à-vis du principal d'origine.If the publication database at the principal is no longer mirrored, replication continues to work unchanged against the original principal.

  • Si la base de données de publication bascule du principal vers le miroir et que la relation de mise en miroir est par la suite désactivée ou supprimée, les agents de réplication ne pourront pas travailler avec le miroir.If the publication database fails over from the principal to the mirror and the mirroring relationship is subsequently disabled or removed, replication agents will not function against the mirror. Si la base de données principale est définitivement perdue, désactivez, puis reconfigurez la réplication avec le miroir choisi comme serveur de publication.If the principal is permanently lost, disable and then reconfigure replication with the mirror specified as the Publisher.

  • Si la mise en miroir des bases de données est totalement supprimée, la base de données miroir passe en état de récupération et doit être restaurée pour devenir fonctionnelle.If database mirroring is removed completely, the mirror database is in a recovery state and must be restored in order to become functional. Le comportement de la base de données récupérée à l'égard de la réplication varie selon que l'option KEEP_REPLICATION est ou non activée.The behavior of the recovered database with respect to replication depends on whether the KEEP_REPLICATION option is specified. Cette option oblige l'opération de restauration à conserver les paramètres de réplication lors de la restauration d'une base de données publiée sur un serveur autre que celui sur lequel elle a été créée.This option forces the restore operation to preserve replication settings when restoring a published database to a server other than that on which the backup was created. N'utilisez l'option KEEP_REPLICATION que si l'autre base de données de publication n'est pas disponible.Use the KEEP_REPLICATION option only when the other publication database is unavailable. L'option n'est pas prise en charge si l'autre base de données de publication est intacte et en cours de réplication.The option is not supported if the other publication database is still intact and replicating. Pour plus d’informations sur KEEP_REPLICATION, consultez RESTORE (Transact-SQL).For more information about KEEP_REPLICATION, see RESTORE (Transact-SQL).

Comportement de l'Agent de lecture du journalLog Reader Agent Behavior

Le tableau suivant décrit la façon dont se comporte l'Agent de lecture du journal dans les différents modes d'opération de la mise en miroir des bases de données.The following table describes Log Reader Agent behavior for the various operating modes of database mirroring.

Mode d'opérationOperating mode Comportement de l'Agent de lecture du journal en cas d'indisponibilité du miroirLog Reader Agent behavior if the mirror is unavailable
Mode haute sécurité avec basculement automatiqueHigh-safety mode with automatic failover Si le miroir n'est pas disponible, l'Agent de lecture du journal propage les commandes vers la base de données de distribution.If the mirror is unavailable, the Log Reader Agent propagates commands to the distribution database. Le principal ne peut pas basculer sur le miroir tant que ce dernier n'est pas connecté et que toutes les transactions du principal n'y figurent pas.The principal cannot failover to the mirror until the mirror is back online and has all transactions from the principal.
Mode hautes performancesHigh-performance mode Si le miroir n'est pas disponible, la base de données principale s'exécute sans filet (elle n'est pas mise en miroir).If the mirror is unavailable, the principal database is running exposed (that is, unmirrored). Toutefois, l'Agent de lecture du journal réplique les transactions renforcées sur le miroir.However, the Log Reader Agent only replicates those transactions that are hardened on the mirror. Si le service est forcé et que le serveur miroir joue le rôle de principal, l'Agent de lecture du journal travaille en fonction du miroir et commence à collecter les nouvelles transactions.If service is forced and the mirror server assumes the role of the principal, the Log Reader Agent will work against the mirror and start picking up the new transactions.

Sachez que la durée de latence de la réplication augmente si le miroir se trouve derrière le principal.Be aware that replication latency will increase if the mirror falls behind the principal.
Mode haute sécurité sans basculement automatiqueHigh-safety mode without automatic failover Toutes les transactions validées sont renforcées sur le disque dur du miroir.All committed transactions are guaranteed to be hardened to disk on the mirror. L'Agent de lecture du journal ne réplique que les transactions renforcées du miroir.The Log Reader Agent replicates only those transactions that are hardened on the mirror. Si le miroir n'est pas disponible, le principal empêche toute autre activité dans la base de données. L'Agent de lecture du journal n'a plus aucune transaction à répliquer.If the mirror is unavailable, the principal disallows further activity in the database; therefore the Log Reader Agent has no transactions to replicate.

Voir aussiSee Also

Fonctionnalités et tâches de réplication Replication Features and Tasks
Copie des journaux de transaction et réplication (SQL Server)Log Shipping and Replication (SQL Server)