Dans une famille de répliques, les changements sont suivis pour chaque réplique.
C'est pourquoi une entrée oplog inclut l'identité de le réplique dont provient l'opération. De ce fait, l'historique d'une réplique peut être affichée sous la forme de plusieurs piles d'entrées oplog. Chaque pile est représentée par une séquence linéaire d'ID oplog pour les opérations provenant de cette réplique.
L'historique
d'une base de données non répliquée est une séquence linéaire d'opérations (
Figure 1).
Figure 1. Historique des changements apportés à une base de données
La
Figure 2 illustre l'état de deux répliques d'une famille :
- Les opérations correspondant aux ID oplog 1 à 950 se sont produites sur la réplique boston_hub.
- Les opérations 1 à 702 se sont produites sur la réplique sanfran_hub.
Figure 2. Etat d'une famille
Une réplique ne possède des données exactes que pour ses propres opérations. Tant qu'elle ne reçoit pas de paquets de mise à jour, ses informations sur les autres répliques ne sont pas à jour. Par exemple, la réplique boston_hub enregistre 950 opérations locales mais n'a reçu des paquets de mise à jour que pour 504 opérations de sanfran_hub. De même, la réplique sanfran_hub enregistre 702 opérations locales mais n'a reçu des paquets de mise à jour que pour 791 opérations boston_hub.
La
Figure 3 illustre ce scénario, dans lequel chaque réplique n'est pas à jour par rapport aux opérations provenant de l'autre réplique.
Figure 3. Répliques non à jour
Représenter une famille de répliques sous la forme d'un ensemble de piles oplog (
Figure 3) permet de comprendre facilement le processus de synchronisation. Par exemple, un paquet de mise à jour envoyé de la réplique
boston_hub vers la réplique
sanfran_hub est constitué d'incréments de la pile de la réplique
boston_hub (opérations 792 à 950). La
Figure 4 illustre les deux incréments.
Dans la mesure où
sanfran_hub connaît son propre état, elle n'a besoin que des mises à jour des opérations provenant d'autres répliques. (Dans certaines situations de reprise sur incident, vous devez réinitialiser les données d'une réplique pour ses propres opérations. )
Figure 4. Mises à jour entre deux répliques
Remarque : Au moment de l'importation du paquet sur la réplique sanfran_hub, des changements supplémentaires peuvent avoir été effectués sur la réplique boston_hub. Ces changements ne sont pas inclus dans le paquet de mise à jour.