Basculement de rôle durant une session de mise en miroir de bases de données (SQL Server)Role Switching During a Database Mirroring Session (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 Dans le contexte d’une session de mise en miroir de bases de données, le rôle principal et le rôle miroir sont généralement interchangeables lors d’un processus appelé basculement de rôle. Within the context of a database mirroring session, the principal and mirror roles are typically interchangeable in a process known as role switching. Dans une situation de basculement de rôle, le serveur miroir est le partenaire de basculement du serveur principal ; il adopte le rôle principal, en récupérant sa copie de la base de données et en la mettant en ligne en tant que nouvelle base de données principale.In role switching, the mirror server acts as the failover partner for the principal server, taking over the principal role, recovering its copy of the database and bringing it online as the new principal database. L'ancien serveur principal (s'il est disponible) joue le rôle de serveur miroir, et sa base de données devient la nouvelle base de données miroir.The former principal server, when available, assumes the mirror role, and its database becomes the new mirror database. Les rôles peuvent éventuellement basculer plusieurs fois, soit en réponse à plusieurs défaillances, soit pour des raisons administratives.Potentially, the roles can switch back and forth either in response to multiple failures or for administrative purposes.

Note

Cette rubrique suppose que vous connaissez bien les modes de fonctionnement de la mise en miroir de base de données.This topic assumes that you are familiar with the database mirroring operating modes. Pour en savoir plus, voir Database Mirroring Operating Modes.For more information, see Database Mirroring Operating Modes.

L’illustration suivante représente des serveurs partenaires de mise en miroir, Partner_A et Partner_B, qui s’échangent les rôles de serveur principal et serveur miroir lors d’une série de basculements automatiques ou manuels.The following illustration shows mirroring partners, Partner_A and Partner_B, switching the principal and mirror roles over a series of automatic or manual failovers.

Serveurs partenaires basculant à deux reprises entre des rôlesPartners switching twice between roles

Important

Après un basculement de rôle, les travaux qui s'exécutaient sur l'ancienne base de données principale doivent être recréés sur le nouveau serveur principal pour y être exécutés.After a role switch, jobs that ran on the former principal database must be recreated on the new principal server to run there. 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).

Il existe trois types de basculement de rôle : le basculement automatique, le basculement manuel et le service forcé (avec perte de données possible).Three types of role switching exist: automatic failover, manual failover, and forced service (with possible data loss). La prise en charge de chaque type de basculement dépend du mode de fonctionnement d'une session.Support for each form depends on the operating mode of the session.

Note

Si vous ne connaissez pas bien ces modes de fonctionnement, consultez Modes de fonctionnement de la mise en miroir de bases de données.If you are unfamiliar with these operating modes, see Database Mirroring Operating Modes.

  • Basculement manuelManual failover

    Le mode haute sécurité prend en charge le basculement manuel.High-safety mode supports manual failover. Chaque fois que la base de données est synchronisée, le propriétaire de la base de données peut entreprendre un basculement manuel.Whenever the database is synchronized, the database owner can initiate a manual failover.

    Le basculement manuel est adopté pour des raisons administratives.Manual failover is provided for administrative purposes. Pour plus d’informations, consultez Basculement manuel, plus loin dans cette rubrique.For more information, see Manual Failover, later in this topic.

  • Basculement automatiqueAutomatic failover

    En présence d'un témoin, le mode haute sécurité prend en charge le basculement automatique.In the presence of a witness, high-safety mode supports automatic failover. Celui-ci intervient suite à la perte du serveur principal, si les serveurs témoin et miroir sont toujours connectés entre eux et que la base de données est déjà synchronisée.Automatic failover occurs only on the loss of the principal server when the witness and mirror server are still connected to each other and the database is already synchronized. Pour plus d’informations, consultez Basculement automatique, plus loin dans cette rubrique.For more information, see Automatic Failover, later in this topic.

  • Service forcé (avec perte de données possible)Forced service (with possible data loss)

    Un service forcé est pris en charge en mode haute sécurité lorsqu'aucun témoin n'est défini en mode haute performance.Forcing service is supported in high-safety mode when no witness is set and in high-performance mode. Suite à la perte du serveur principal, le propriétaire de la base de données peut rendre la base de données disponible en forçant le service sur le serveur miroir (avec possibilité de perte de données).On the loss of the principal server, the database owner can make the database available by forcing service to the mirror server (with possible data loss).

    Note

    Nous vous recommandons de définir la propriété WITNESS sur OFF en mode haute performance.We recommend that the WITNESS property be set to OFF in high-performance mode. Sinon, pour mettre la base de données en ligne, le serveur miroir doit être connecté au témoin.Otherwise, to bring the database online, the mirror server must connected to the witness.

    Pour plus d’informations, consultez Service forcé (avec possible perte de données), plus loin dans cette rubrique.For more information, see Forced Service (with Possible Data Loss), later in this topic.

    Le tableau ci-dessous résume les types de basculement pris en charge dans chaque mode de fonctionnement.The following table summarizes which forms of failover are supported under each of the operating modes.

Hautes performancesHigh performance Mode haute performance sans témoinHigh-safety mode without a witness Mode haute performance avec témoinHigh-safety mode with a witness
Basculement automatiqueAutomatic failover NonNo NonNo OuiYes
Basculement manuelManual failover NonNo OuiYes OuiYes
Service forcéForced service OuiYes OuiYes NonNo

Après un basculement de rôle, certaines métadonnées doivent exister sur les deux partenaires pour garantir que tous les utilisateurs de base de données peuvent accéder à la nouvelle base de données principale.After a role switch, certain metadata must exist on both partners to ensure that all of the database users can access the new principal database. De plus, des travaux de sauvegarde doivent être créés sur le nouveau serveur principal pour garantir que la base de données continue d'être sauvegardée régulièrement.In addition, backup jobs must be created on the new principal server, to ensure that the database continues to be backed up on its regular schedule. 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).

Au cours d'un basculement de rôle, la durée pendant laquelle la mise en miroir de base de données sera hors service dépend du type de basculement de rôle et de sa raison.During a role switch, the amount of time that database mirroring will be out of service depends on the type of role switching and on the cause. Pour en savoir plus, voir Estimer l’interruption de service au cours d’un basculement de rôle (mise en miroir de bases de données).For more information, see Estimate the Interruption of Service During Role Switching (Database Mirroring).

Manual FailoverManual Failover

Le basculement manuel déconnecte les clients de la base de données et inverse les rôles des partenaires.Manual failover disconnects the clients from the database and reverses the roles of the partners. Seul le mode haute sécurité prend en charge le basculement manuel.Only high-safety mode supports manual failover.

Dans cette section :In This Section:

Maintien de la disponibilité lors des mises à niveauMaintaining Availability During Upgrades

L'administrateur de base de données peut recourir au basculement manuel pour mettre du matériel ou des logiciels à niveau sans sacrifier la disponibilité.The database administrator can use manual failover for upgrading hardware or software without sacrificing availability. Pour utiliser la mise en miroir de base de données dans le cadre de mises à niveau logicielles, le serveur miroir et/ou le système doivent déjà avoir été mis à niveau.To use database mirroring for software upgrades, the mirror server and/or system must have already received the upgrades.

Note

La fonction de mise en miroir de bases de données doit être en mesure d'effectuer une mise à niveau propagée mais sans le garantir puisque les modifications à apporter ultérieurement ne sont pas connues.Database mirroring should be able to do a rolling upgrade, but this is not guaranteed, because future changes are unknown. Pour plus d’informations, consultez Mise à niveau des instances en miroir.For more information, see Upgrading Mirrored Instances.

L'illustration suivante montre une instance qui utilise le basculement manuel pour maintenir la disponibilité d'une base de données pendant la mise à niveau d'une instance serveur de base de données.The following figure illustrates an instance of using manual failover to maintain database availability while you upgrade a database server instance. Lorsque la mise à niveau est terminée, un administrateur peut éventuellement basculer à nouveau vers l'instance serveur d'origine.When the upgrade is completed, an administrator may optionally fail over back to the original server instance. Ceci est utile lorsque l'administrateur veut arrêter la session de mise en miroir et utiliser le serveur de miroir ailleurs.This is useful when the administrator wants to stop the mirroring session and use the mirror server elsewhere. De cette façon, une instance serveur donnée peut être utilisée à plusieurs reprises lors de la mise à jour d'une série d'instances serveur de base de données.In this way, a single server instance can be used repeatedly when updating a series of database server instances.

Basculement manuel planifiéPlanned manual failover

Conditions requises pour un basculement manuelConditions Required for a Manual Failover

Le basculement manuel nécessite que la sécurité de transaction soit définie sur FULL (c'est-à-dire, mode haute sécurité).Manual failover requires transaction safety to be set to FULL (that is, high-safety mode). Lorsque les partenaires sont connectés et que la base de données est déjà synchronisée, un basculement manuel est possible.When the partners are connected and the database is already synchronized, manual failover is supported.

Fonctionnement du basculement manuelHow Manual Failover Works

Le basculement manuel initialise la série d'actions suivante :Manual failover initiates the following sequence of actions:

  1. Le serveur principal déconnecte les clients de la base de données principale, envoie la fin du journal au serveur miroir, puis définit l'état de la mise en miroir à SYNCHRONIZING pour se préparer à prendre le rôle miroir.The principal server disconnects clients from the principal database, sends the tail of the log to the mirror server, and, in preparation for switching to the mirror role, sets the mirroring state to SYNCHRONIZING.

  2. Le serveur miroir enregistre le numéro séquentiel dans le journal du dernier enregistrement journal reçu du principal en tant que numéro séquentiel de basculement.The mirror server records the log sequence number (LSN) of the last log record received from the principal as the failover LSN.

    Note

    Pour afficher ce numéro séquentiel dans le journal, sélectionnez la colonne mirroring_failover_lsn de sys.database_mirroring (Transact-SQL).To view this LSN, select the mirroring_failover_lsn column from sys.database_mirroring (Transact-SQL).

  3. Si un journal est en attente dans la file d'attente de restauration par progression, le serveur miroir termine la restauration par progression de la base de données miroir.If any log is waiting in the redo queue, the mirror server finishes rolling forward the mirror database. Le temps requis pour cette opération dépend de la vitesse du système, de la charge de travail récente et de la quantité de journal au sein de la file d'attente de restauration par progression.The amount of time required depends on the speed of the system, the recent workload, and the amount of log in the redo queue. Dans le cadre d'un mode de fonctionnement synchrone, le temps de basculement peut être régulé en limitant la taille de la file d'attente de restauration par progression.For a synchronous operating mode, the failover time can be regulated by limiting the size of the redo queue. Cependant, cela peut entraîner le serveur principal à ralentir pour permettre au serveur miroir de suivre.However, this can cause the principal server to slow down to allow the mirror server to keep up.

    Note

    Pour connaître la taille actuelle de la file d’attente de restauration par progression, utilisez le compteur de performance File d’attente de restauration par progression de l’objet de performance de mise en miroir de bases de données (pour plus d’informations, consultez Surveillance de la mise en miroir de bases de données (SQL Server)).To learn the current size of the redo queue, use the Redo Queue performance counter in the database mirroring performance object (for more information, see Monitoring Database Mirroring (SQL Server)).

  4. Le serveur miroir devient le nouveau serveur principal, et l'ancien serveur principal devient le nouveau serveur miroir.The mirror server becomes the new principal server, and the former principal server becomes the new mirror server.

  5. Le nouveau serveur principal restaure toute transaction non validée et met la copie de sa base de données en ligne, en tant que base de données principale.The new principal server rolls back any uncommitted transactions and brings its copy of the database online as the principal database.

  6. L'ancien principal prend le rôle de miroir et l'ancienne base de données principale devient la base de données miroir.The former principal takes on the mirror role, and the former principal database becomes the mirror database. Le nouveau serveur miroir resynchronise rapidement la nouvelle base de données miroir avec la nouvelle base de données principale.The new mirror server quickly resynchronizes the new mirror database with the new principal database.

    Note

    Dès que le nouveau serveur miroir a resynchronisé les bases de données, le basculement est de nouveau possible, mais dans le sens inverse.As soon as the new mirror server has resynchronized the databases, failover is again possible, but in the reverse direction.

    Après le basculement, les clients doivent se reconnecter à la base de données principale actuelle.After failover, clients must reconnect to the current principal database. Pour en savoir plus, voir Connecter des clients à une session de mise en miroir de bases de données (SQL Server).For more information, see Connect Clients to a Database Mirroring Session (SQL Server).

    Pour initialiser un basculement manuelTo initiate manual failover

Automatic FailoverAutomatic Failover

Le basculement automatique est pris en charge uniquement dans les sessions de mise en miroir de bases de données s’exécutant avec un témoin et en mode haute sécurité (mode haute sécurité avec basculement automatique).Automatic failover is supported only in database mirroring sessions running with a witness in high-safety mode (high-safety mode with automatic failover). En mode haute sécurité avec basculement automatique, une fois la base de données synchronisée, si la base de données principale devient non disponible, le basculement automatique se produit.In high-safety mode with automatic failover, once the database is synchronized, if the principal database becomes unavailable, an automatic failover occurs. Lors d'un basculement automatique, le serveur miroir assume le rôle de serveur principal et met en ligne sa copie de la base de données en tant que base de données principale.An automatic failover causes the mirror server to take over the role of principal server and bring its copy of the database online as the principal database. Exiger la synchronisation de la base de données empêche toute perte de données lors du basculement, car chaque transaction validée sur la base de données principale est également validée sur la base de données miroir.Requiring that the database be synchronized prevents data loss during failover, because every transaction committed on the principal database is also committed on the mirror database.

Important

Pour que le basculement automatique améliore la fiabilité, les bases de données miroir et principale doivent résider sur des ordinateurs distincts.For automatic failover to improve reliability, the mirror and principal databases must reside on different computers.

Dans cette section :In This Section:

Conditions requises pour un basculement automatiqueConditions Required for an Automatic Failover

Le basculement automatique nécessite les conditions suivantes :Automatic failover requires the following conditions:

  • La session de mise en miroir de bases de données doit s'exécuter en mode haute sécurité et doit posséder un témoin.The database mirroring session must be running in high-safety mode and must possess a witness. Pour en savoir plus, voir Database Mirroring Operating Modes.For more information, see Database Mirroring Operating Modes.

  • La base de données miroir doit déjà être synchronisée.The mirror database must already be synchronized. Ceci garantit que la totalité du journal envoyé au serveur miroir a été écrit sur le disque.This guarantees that all of the log sent to the mirror server has been written to disk.

  • Le serveur principal a perdu la communication avec le reste de la configuration de mise en miroir de base de données, tandis que le serveur miroir et le serveur témoin conservent le quorum.The principal server has lost communication with the rest of the database mirroring configuration, while the mirror and witness retain quorum. Toutefois, si toutes les instances de serveur perdent la communication et si le serveur témoin et le serveur miroir rétablissent ultérieurement la communication, le basculement automatique n'a pas lieu.If all server instances lose communication, however, and the witness and the mirror server later regain communication, automatic failover does not occur.

  • Le serveur miroir a détecté la perte du serveur principal.The mirror server has detected the loss of the principal server.

    La manière dont le serveur miroir détecte une défaillance du serveur principal est variable, selon qu'il s'agisse d'une défaillance matérielle ou logicielle.How the mirror server detects a failure of the principal server depends on whether it is a hard or soft failure. Pour plus d’informations, consultez Défaillances possibles pendant la mise en miroir d’une base de données.For more information, see Possible Failures During Database Mirroring.

Fonctionnement du basculement automatiqueHow Automatic Failover Works

Sous les conditions précédentes, le basculement automatique initialise la séquence d'actions suivante :Under the preceding conditions, automatic failover initiates the following sequence of actions:

  1. Si le serveur principal fonctionne toujours, il change l'état de la base de données principale en DISCONNECTED et déconnecte tous les clients de la base de données principale.If the principal server is still running, it changes the state of the principal database to DISCONNECTED and disconnects all clients from the principal database.

  2. Les serveurs témoin et miroir détectent que le serveur principal n'est pas disponible.The witness and mirror servers register that the principal server is unavailable.

  3. Si un journal est en attente dans la file d'attente de restauration par progression, le serveur miroir termine la restauration par progression de la base de données miroir.If any log is waiting in the redo queue, the mirror server finishes rolling forward the mirror database.

    Note

    Le temps nécessaire pour appliquer le journal dépend de la vitesse du système, de la charge de travail récente et de la quantité de journal au sein de la file d'attente de restauration par progression.The amount of time required to apply the log depends on the speed of the system, the recent work load, and the amount of log in the redo queue.

  4. L'ancienne base de données miroir passe en ligne en tant que nouvelle base de données principale, et la récupération nettoie toutes les transactions non validées en les restaurant le plus rapidement possible.The former mirror database moves online as the new principal database, and recovery cleans up all uncommitted transactions by rolling them back as quickly as possible. Des verrous isolent ces transactions.Locks isolate those transactions.

  5. Lorsque l'ancien serveur principal rejoint la session, il détecte que son partenaire de basculement possède maintenant le rôle principal.When the former principal server rejoins the session, it recognizes that its failover partner now owns the principal role. L'ancien serveur principal prend le rôle de miroir, faisant de sa base de données la base de données en miroir.The former principal server takes on the role of mirror, making its database the mirror database. Le nouveau serveur miroir synchronise la nouvelle base de données miroir avec la base de données principale le plus rapidement possible.The new mirror server synchronizes the new mirror database with the principal database as quickly as possible. Dès que le nouveau serveur miroir a resynchronisé les bases de données, le basculement est de nouveau possible, mais dans le sens inverse.As soon as the new mirror server has resynchronized the databases, failover is again possible, but in the reverse direction.

    La figure suivante illustre une instance unique de basculement automatique.The following illustration shows a single instance of automatic failover.

    Basculement automatiqueAutomatic failover

    Au départ, les trois serveurs sont connectés (la session bénéficie d'un quorum complet).Initially, all three servers are connected (the session has full quorum). Partner_A est le serveur principal, Partner_B le serveur miroir.Partner_A is the principal server and Partner_B is the mirror server. Partner_A (ou la base de données principale sur Partner_A) devient non disponible.Partner_A (or the principal database on Partner_A) becomes unavailable. Le témoin et Partner_B détectent tous les deux que le principal n’est plus disponible et la session conserve le quorum.The witness and Partner_B both recognize that the principal is no longer available the session retains quorum. Partner_B devient le serveur principal et rend sa copie de la base de données disponible en tant que nouvelle base de données principale.Partner_B becomes the principal server and makes its copy of the database available as the new principal database. Finalement, Partner_A se reconnecte à la session et découvre que Partner_B possède maintenant le rôle principal.Eventually, Partner_A reconnects to the session and discovers that Partner_B now owns the principal role. Partner_A prend alors le rôle miroir.Partner_A then takes on the mirror role.

    Après le basculement, les clients doivent se reconnecter à la base de données principale actuelle.After failover, clients must reconnect to the current principal database. Pour en savoir plus, voir Connecter des clients à une session de mise en miroir de bases de données (SQL Server).For more information, see Connect Clients to a Database Mirroring Session (SQL Server).

Note

Les transactions qui ont été préparées à l'aide du service MSDTC ( MicrosoftMicrosoft Distributed Transaction Coordinator) mais qui ne sont toujours pas validées au moment du basculement, sont considérées comme abandonnées après le basculement de la base de données.Transactions that have been prepared using the MicrosoftMicrosoft Distributed Transaction Coordinator but are still not committed when a failover occurs, are considered aborted after the database has failed over.

Pour désactiver le basculement automatique (SQL Server Management Studio)To Disable Automatic Failover (SQL Server Management Studio)

Ouvrez la page Mise en miroir de la boîte de dialogue Propriétés de la base de données, puis changez de mode de fonctionnement en sélectionnant l’une des options suivantes :Open the Database PropertiesMirroring page, and change the operating mode by selecting one of the following options:

  • Haute sécurité sans basculement automatique (synchrone)High safety without automatic failover (synchronous)

    Dans ce mode, la base de données continue d'être synchronisée et le basculement manuel reste possible.In this mode, the database continues to be synchronized, and manual failover remains possible.

  • Haute performance (asynchrone)High performance (asynchronous)

    Dans ce mode, la base de données miroir peut rester quelque peu en arrière de la base de données principale, de sorte que le basculement manuel ne sera plus possible.In this mode, the mirror database might lag somewhat behind the principal database, and manual failover is no longer possible.

Pour désactiver le basculement automatique (à l'aide de Transact-SQL)To Disable Automatic Failover (Using Transact-SQL)

À n'importe quel moment d'une session de mise en miroir de bases de données, le propriétaire de la base de données peut désactiver le basculement automatique en désactivant le témoin.At any point in a database mirroring session, the database owner can disable automatic failover by turning off the witness.

Pour désactiver le témoinTo turn off the witness

Forced Service (with Possible Data Loss)Forced Service (with Possible Data Loss)

La mise en miroir de bases de données fournit un service forcé (avec possibilité de perte de données) en guise de méthode de récupération d'urgence afin de vous permettre d'utiliser un serveur miroir en tant que serveur de secours actif.Database mirroring provides forcing service (with possible data loss) as a disaster recovery method to allow you to use a mirror server as a warm standby server. Le service forcé est possible uniquement si le serveur principal est déconnecté du serveur miroir lors d'une session de mise en miroir.Forcing service is possible only if the principal server is disconnected from the mirror server in a mirroring session. Le service forcé entraînant un risque de perte de données, il convient de l'utiliser avec prudence et parcimonie.Because forcing service risks possible data loss, it should be used cautiously and sparingly.

La prise en charge du service forcé dépend du mode de fonctionnement et de l'état de la session, comme suit :Support for forced service depends on the operating mode and the state of the session, as follows:

  • En général, le mode hautes performances prend en charge le service forcé lorsque le serveur principal est déconnecté.Typically, high-performance mode supports forcing service whenever the principal server is disconnected. Cependant, et bien que cela ne soit pas obligatoire, un témoin peut exister pour une session en mode hautes performances.However, though unnecessary, a witness can exist for a high-performance mode session. Dans ce cas, le service forcé exige que le serveur miroir et le témoin soient interconnectés.In this case, forcing service requires that the mirror server and witness are connected to each other.

  • Le mode haute sécurité avec basculement automatique prend en charge le service forcé lorsque le serveur principal est déconnecté.High-safety mode without automatic failover supports forcing service whenever the principal server is disconnected.

  • Le mode haute sécurité avec basculement automatique prend en charge le service forcé lorsque le serveur miroir et le témoin sont interconnectés et que ni l'un ni l'autre n'est connecté au serveur principal (tant que le serveur miroir n'était pas en train de restaurer la base de données miroir lorsqu'il était encore connecté au principal).High-safety mode with automatic failover supports forcing service whenever the mirror server and witness are connected to each other and neither is connected to the principal server (as long as the mirror server was not in the process of rolling back the mirror database when it was last connected to the principal).

    Nous recommandons de forcer le service uniquement si vous devez restaurer immédiatement le service sur la base de données et que vous êtes prêt à courir le risque de perdre des données.We recommend forcing service only if you must restore service to the database immediately and are willing to risk losing data. Le service forcé a un effet semblable à la suppression de la mise en miroir, hormis le fait qu'il facilite la resynchronisation des bases de données lors du rétablissement de la mise en miroir, au risque de perdre des données.The effect of forcing service is similar to removing mirroring, except that forcing service facilitates resynchronizing the databases when mirroring is resumed, at the risk of possible data loss. Le service forcé effectue une transition régulière du rôle principal vers la base de données miroir.Forcing service initiates a smooth transition of the principal role to the mirror database. Le serveur miroir joue le rôle de serveur principal et met immédiatement à la disposition des clients sa copie de la base de données.The mirror server assumes the role of principal server and immediately serves its copy of the database to clients. La nouvelle base de données principale s'exécute sans miroir (autrement dit, elle est exposée).The new principal database runs without a mirror (that is, it runs exposed).

Important

Si le serveur principal a simplement été déconnecté de la session de mise en miroir de bases de données et qu'il est encore en cours d'exécution, certains clients peuvent continuer d'accéder à la base de données principale d'origine.If the principal server was merely disconnected from the database mirroring session and is still running, some clients might continue to access the original principal database. Avant de forcer le service, il est important d'empêcher les clients d'accéder au serveur principal d'origine.Before you force service, it is important to prevent clients from accessing the original principal server. Autrement, une fois le service forcé, la base de données principale d'origine et la base de données principale actuelle risquent d'être mises à jour indépendamment l'une de l'autre.Otherwise, after service is forced, the original principal database and the current principal database could be updated independently of the other.

Dans cette section :In This Section:

Cas ordinaire de service forcéTypical Case of Forced Service

L'illustration suivante présente un cas ordinaire de service forcé (avec possibilité de perte de données).The following figure illustrates a typical case of forced service (with possible data loss).

Service forcé avec possibilité de perte de donnéesForcing service with possible data loss

Comme l’indique l’illustration, le serveur principal d’origine, Partner_A, devient indisponible pour le serveur miroir, Partner_B, ce qui entraîne la déconnexion de la base de données miroir.In the figure, the original principal server, Partner_A, becomes unavailable to the mirror server, Partner_B, causing the mirror database to be disconnected. Après avoir vérifié que Partner_A était inaccessible aux clients, l’administrateur de la base de données force le service, avec possibilité de perte de données, sur Partner_B.After ensuring that Partner_A is not available to clients, the database administrator forces service, with possible data loss, on Partner_B. Partner_B devient le serveur principal et s’exécute avec la base de données exposée (c’est-à-dire, non mise en miroir).Partner_B becomes the principal server and runs with the database exposed (that is, unmirrored). À ce stade, les clients peuvent se reconnecter à Partner_B.At this point, clients can reconnect to Partner_B.

Quand Partner_A devient disponible, il se reconnecte au nouveau serveur principal, rejoint la session et assume le rôle de miroir.When Partner_A becomes available, it reconnects to the new principal server, rejoining the session and assuming the mirror role. La session de mise en miroir est suspendue immédiatement, sans que la nouvelle base de données miroir ait été synchronisée.The mirroring session is suspended immediately, without having synchronized the new mirror database. La suspension de la session permet à l'administrateur de base de données de décider s'il faut reprendre la session ou, dans des cas extrêmes, supprimer la mise en miroir et tenter de récupérer des données de l'ancienne base de données principale.Suspending the session allows the database administrator to decide whether to resume the session or, in extreme cases, remove mirroring and attempt to salvage data from the former principal database. Dans ce cas, l'administrateur de base de données choisit de reprendre la mise en miroir.In this case, the database administrator chooses to resume mirroring. À ce stade, Partner_A assume le rôle de serveur miroir et restaure l’ancienne base de données principale au point dans le temps correspondant à la dernière transaction synchronisée avec succès ; si des transactions validées n’ont pas été écrites sur disque sur le serveur miroir avant que le service ne soit forcé, elles sont perdues.At that point, Partner_A takes over the role of mirror server and rolls back the former principal database to the point in time of the last successfully synchronized transaction; if any committed transactions were not written to disk on the mirror server before service was forced, they are lost. Partner_A restaure ensuite par progression la nouvelle base de données miroir en appliquant les modifications apportées à la nouvelle base de données principale depuis que l’ancien serveur miroir est devenu le nouveau serveur principal.Partner_A then rolls forward the new mirror database by applying any changes made on the new principal database since the former mirror server became the new principal server.

Note

Bien que le mode hautes performances n'ait pas besoin de témoin, si un témoin est configuré, il est possible de forcer le service seulement si le témoin est connecté au serveur miroir.Although high-performance mode does not require a witness, if one is configured, forcing service is possible only if the witness is currently connected to the mirror server.

Risques posés par le service forcéRisks of Forcing Service

Il est essentiel de comprendre que le service forcé peut entraîner une perte de données.It is essential to understand that forcing service can cause data loss. La perte de données est possible car le serveur miroir ne peut pas communiquer avec le serveur principal et, par conséquent, ne peut pas garantir la synchronisation des deux bases de données.Data loss is possible because the mirror server cannot communicate with the principal server and, therefore, cannot guarantee that the two databases are synchronized. Le service forcé démarre un nouveau point de branchement de récupération.Forcing service starts a new recovery fork. Étant donné que la base de données principale et la base de données miroir d'origine sont situées sur différents branchements de récupération, chaque base de données contient maintenant des données qui ne figurent pas dans l'autre base de données : la base de données principale d'origine contient toutes les modifications qui n'avaient pas encore été envoyées de sa file d'attente d'envoi à l'ancienne base de données miroir (le journal non envoyé) ; l'ancienne base de données miroir contient toutes les modifications qui surviennent une fois le service forcé.Because the original principal database and mirror database are on different recovery forks, each database now contains data that the other database does not: the original principal database contains whatever changes were not yet sent from its send queue to the former mirror database (the unsent log); the former mirror database contains whatever changes occur after service was forced.

Si le service est forcé suite à une défaillance du serveur principal, le risque de perte de données dépend du fait que les journaux de transactions ont été envoyés ou non au serveur miroir avant la défaillance.If service is forced because the principal server has failed, potential data loss is depends on whether any transaction logs were not sent to the mirror server before the failure. En mode haute sécurité, cela est possible uniquement jusqu'à ce que la base de données miroir soit synchronisée.Under high-safety mode, this is possible only until the mirror database becomes synchronized. En mode hautes performances, une accumulation du journal non envoyé est toujours une possibilité.Under the high-performance mode, accumulated unsent log is always a possibility.

Les implications du service forcé dépendent en partie de la présence d'un témoin dans la session :The implications of forcing service depend partly on whether the session has a witness:

  • En l'absence de témoin, le service peut être forcé si les partenaires sont déconnectés, par exemple en raison d'une rupture de leur connexion réseau.In the absence of a witness, service can be forced if the partners become disconnected, for example, because their network connection is broken. Si le serveur principal d'origine est encore en cours d'exécution, les deux partenaires détiennent le rôle principal.If the original principal server is still running, both partners own the principal role. Les clients qui se connectent au nouveau serveur principal accèderont à la version actuelle de la base de données, alors que les clients qui se connectent au serveur principal d'origine accèderont à la base de données principale d'origine.Clients connecting to the new principal server will access the current version of the database, while clients connecting to the original principal server will access the original principal database. Cette situation accroît le risque de perte de données.This situation increases the potential for data loss. Si les partenaires sont autorisés à se reconnecter, le serveur principal d'origine assume le rôle de miroir et modifie l'état de sa base de données en « récupération » avant que la mise en miroir soit suspendue.If the partners are allowed to reconnect, the original principal server assumes the mirror role and changes the status of its database to "recovering," before mirroring is suspended. Si la session reprend, les transactions de la base de données principale d'origine dont le journal se trouvait dans la file d'attente d'envoi lors de la déconnexion la plus récente sont perdues.If the session is resumed, transactions on the original principal database whose log was in the send queue as of the most recent disconnection are lost. En outre, toutes les transactions qui ont eu lieu après le forçage du service sont également perdues.In addition, any the transactions that occurred after service was forced are also lost.

  • En présence d'un témoin, si le serveur miroir est déconnecté du serveur principal et du témoin, le principal demeure exposé tant qu'il est connecté au témoin.In the presence of a witness, if the mirror server is disconnected from both the principal server and the witness, as long as the latter two remain connected to each other, the principal runs exposed. Si le serveur principal est ensuite déconnecté du témoin, il ne sert plus la base de données.If the principal server then becomes disconnected from the witness, it stops serving the database. Par la suite, si le serveur miroir se reconnecte au témoin, le service forcé devient possible.Thereafter, if the mirror server reconnects to the witness, forcing service becomes possible. Si le service est forcé, toutes les modifications apportées pendant que le serveur principal d'origine s'exécutait en situation exposée seront perdues si le serveur principal d'origine se reconnecte.If service is forced, all the changes made while the original principal server was running exposed will be lost if the original principal server reconnects.

    Pour plus d’informations, consultez Gestion de la perte de données potentielle, plus loin dans cette rubrique.For more information, see Managing the Potential Data Loss, later in this topic.

Gestion de la perte de données potentielleManaging the Potential Data Loss

Après le forçage du service, une fois l'ancien serveur principal disponible, en supposant que sa base de données ne soit pas endommagée, vous pouvez tenter de gérer la perte de données potentielle.After service is forced, once the former principal server is available, assuming that its database is undamaged, you can attempt to manage the potential data loss. La méthode disponible pour gérer la perte de données potentielle dépend selon que le serveur principal d'origine s'est reconnecté à son partenaire et a rejoint la session de mise en miroir.The available approach for managing potential data loss depends on whether the original principal server has reconnected to its partner and rejoined the mirroring session. En supposant que le serveur principal d'origine puisse accéder à la nouvelle instance principale, la reconnexion se produit automatiquement et de manière transparente.Assuming that the original principal server can access the new principal instance, reconnecting occurs automatically and transparently.

Le serveur principal d'origine s'est reconnectéThe Original Principal Server Has Reconnected

En général, après une défaillance, lorsque le serveur principal d'origine redémarre, il se reconnecte rapidement à son partenaire.Typically, after a failure, when the original principal server restarts it quickly reconnects to its partner. Lors de la reconnexion, le serveur principal d'origine devient le serveur miroir.On reconnecting, the original principal server becomes the mirror server. Sa base de données devient la base de données miroir et passe à l'état de récupération avant que la session soit suspendue.Its database becomes the mirror database and enters the recovering state before the session is suspended. La base de données miroir ne sera restaurée que si vous rétablissez la mise en miroir.The mirror database will not be not rolled back unless you resume mirroring.

Toutefois, la base de données de récupération est inaccessible ; par conséquent, vous ne pouvez pas l'inspecter afin d'évaluer les données qui seraient perdues si vous rétablissiez la mise en miroir.However, the recovering database is inaccessible; therefore, you cannot inspect it to evaluate what data would be lost if you were to resume mirroring. La décision relative à la reprise ou à la suppression de la mise en miroir dépend donc selon que vous souhaitez accepter ou non le risque de perte de données.Therefore, the decision on whether to resume or remove mirroring depends on whether you are willing to accept any data loss at all.

  • Si la perte de données est inacceptable, vous devez supprimer la mise en miroir afin de récupérer les données.If losing any data would be unacceptable, you should remove mirroring to salvage them.

    La suppression de la mise en miroir permettrait à l'administrateur de base de données de récupérer la base de données principale d'origine et de tenter de récupérer les données qui auraient été perdues.Removing mirroring would allow the database administrator to recover the original principal database and attempt to recover the data that would have been lost. Toutefois, lorsque l'ancienne base de données miroir passera en ligne, les anciens partenaires serviront des bases de données divergentes portant le même nom.However, when the former mirror database comes online, the former partners will be serving divergent databases with the same name. L'administrateur de base de données doit rendre l'une des bases de données inaccessible aux clients afin d'éviter toute divergence supplémentaire de la base de données et tout problème de basculement de client.The database administrator needs to make one of the databases inaccessible to clients to avoid further divergence of the database and to prevent client-failover issues.

  • Si la perte de données est acceptable, vous pouvez reprendre la mise en miroir.If losing any data would be acceptable, you can resume mirroring.

    La reprise de la mise en miroir entraîne la restauration de la nouvelle base de données miroir en guise de première étape vers la synchronisation de la base de données.Resuming mirroring causes the new mirror database to be rolled back as the first step in synchronizing the database. Si des enregistrements de journal se trouvaient dans la file d'attente d'envoi au moment de la défaillance, les transactions correspondantes sont perdues, même si elles ont été validées.If any log records were waiting in the send queue at the time of failure, the corresponding transactions are lost, even if they were committed.

Le serveur principal d'origine ne s'est pas reconnectéThe Original Principal Server Has Not Reconnected

Si vous pouvez empêcher momentanément le serveur principal d'origine de se reconnecter par le biais du réseau au nouveau serveur principal, vous pouvez inspecter la base de données principale d'origine afin d'évaluer les données qui seraient perdues si vous rétablissiez la mise en miroir.If you can temporarily prevent the original principal server from reconnecting over the network to the new principal server, you can inspect the original principal database to evaluate what data would be lost if mirroring were resumed.

  • Si la perte de données potentielle est acceptableIf the potential data loss is acceptable

    Laissez le serveur principal d'origine se reconnecter à son partenaire.Allow the original principal server to reconnect to its partner. La reconnexion provoque la suspension de la mise en miroir.Reconnecting causes mirroring to be suspended. Pour rétablir la mise en miroir, il vous suffit de reprendre la session.To proceed with mirroring, simply resume the session. L'ancien serveur principal assume le rôle de miroir.The former principal server assumes the mirror role. Le nouveau serveur miroir supprime le branchement de récupération d'origine, ce qui entraîne la perte des transactions qui n'ont été ni reçues ni envoyées par l'ancien serveur miroir.The new mirror server drops the original recovery fork, losing any transactions that were never sent to or received by the former mirror server.

  • Si la perte de données est inacceptableIf the data loss is unacceptable

    Si la base de données principale d'origine contient des données essentielles qui seront perdues si vous reprenez la session, vous pouvez préserver les données sur le serveur principal d'origine en supprimant la mise en miroir.If the original principal database contains critical data that would be lost if you resumed the session, you can preserve the data on the original principal server by removing mirroring. Nous vous recommandons d'essayer de sauvegarder la fin du journal du principal à ce stade.We recommend that you attempt to back up the tail of the principal's log at this point. Ensuite, vous pouvez mettre à jour la base de données principale actuelle (l'ancienne base de données miroir) en exportant les données que vous souhaitez sauvegarder à partir de la base de données principale d'origine et en les important dans la base de données principale actuelle.Then, you can update the current principal (the former mirror database) by exporting the data you want to salvage from the original principal database and importing it into the current principal database. Nous vous recommandons d'effectuer aussi rapidement que possible une sauvegarde complète de base de données de la base de données mise à jour.We recommend taking a full database backup of the updated database as quickly as possible.

    Pour rétablir la mise en miroir avec la base de données mise à jour en tant que base de données principale initiale, utilisez cette sauvegarde (et au moins une sauvegarde du journal ultérieure) pour créer une nouvelle base de données miroir.To re-establish mirroring with the updated database as the initial principal database, use this backup (and least one subsequent log backup) to create a new mirror database. Chaque sauvegarde de journal effectuée après la suppression de la mise en miroir doit être appliquée.Every log backup taken after mirroring was removed must be applied. Par conséquent, nous recommandons de différer les sauvegardes de fichier journal supplémentaires de la base de données principale jusqu'à ce que la nouvelle session de mise en miroir démarre.Therefore, we recommend delaying additional log backups of the principal database until the new mirroring session starts.

Tâches associées à la gestion d'un basculement forcéRelated Tasks For Managing a Forced Failover

Pour forcer le serviceTo force service

Voir aussiSee Also

Estimer l’interruption de service au cours d’un basculement de rôle (mise en miroir de bases de données) Estimate the Interruption of Service During Role Switching (Database Mirroring)
Défaillances possibles pendant la mise en miroir de bases de données Possible Failures During Database Mirroring
Connecter des clients à une session de mise en miroir de bases de données (SQL Server) Connect Clients to a Database Mirroring Session (SQL Server)
Témoin de mise en miroir de base de données Database Mirroring Witness
Restaurations complètes de bases de données (mode de récupération complète) Complete Database Restores (Full Recovery Model)
Modes de fonctionnement de la mise en miroir de bases de données Database Mirroring Operating Modes
États de la mise en miroir (SQL Server)Mirroring States (SQL Server)