Paires de réplication
Pour se connecter à une paire de réplication, vous devez spécifier au moins un membre de la paire et utiliser l'option "replicaSet". Plusieurs serveurs doivent être délimités par une virgule.
Exemple #1 Liste du jeu de réplication
<?php // Utilisation de plusieurs serveurs de la liste (méthode préférée) $m = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017/?replicaSet=myReplSetName"); // Utilisation d'un seul serveur de la liste $m = new MongoClient("mongodb://rs1.example.com:27017", array("replicaSet" => "myReplSetName")); // Utilisation de plusieurs serveurs de la liste $m = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017", array("replicaSet" => "myReplSetName")); ?>
Le pilote PHP requêtera le(s) serveur(s) de base de données listé(s) pour vérifier qui est le primaire. Dès qu'il peut se connecter à au moins un hôte listé, et trouver un primaire, la connexion sera réussie. Dans le cas contraire, une MongoConnectionException est envoyée.
Vous devriez toujours fournir une liste de partage contenant plus d'un membre du jeu de réplication. Pour une haute disponibilité, vous devriez partager avec au moins un serveur de chacun de vos centres de données.
Les noms d'hôtes que vous spécifiez ici doivent correspondre aux noms fournis dans la configuration du jeu de réplication, car le driver utilise le nom tel que spécifié dans la configuration du jeu de réplication comme identifiant dans son mappage interne. Le fait de spécifier (par exemple) l'adresse IP au lieu du nom d'hôte configuré fera que le driver gardera une connexion pour à la fois le nom d'hôte et son adresse IP.
Si le primaire devient indisponible, les secondaires ne deviendront pas primaires pendant ces quelques secondes. Pendant ce temps là (» 20-60 secondes), la connexion ne sera pas capable d'effectuer les opérations sur la base de données (les connexions aux secondaires pourront toujours effectuer des lectures) et une exception sera levée.
Note:
La préférence de lecture par défaut est de ne lire que depuis le primaire. Lors du processus d'élection, il n'y a pas de primaire, et toutes les lectures échoueront.
Il est recommandé d'utiliser la préférence de lecture
MongoClient::RP_PRIMARY_PREFERRED
pour les applications qui requièrent une haute disponibilité pour les lectures, vu que les lectures ne seront réalisées sur les secondaires que lorsqu'il n'y a aucun primaire de disponible.
Une fois le maître trouvé, essayer des lectures ou écritures permettra au pilote de détecter le nouveau primaire. Le pilote en fera alors sa connexion principale et continuera les opérations normalement.
La santé et le statut d'un secondaire sont vérifiés toutes les 5 secondes (configurable avec la directive mongo.ping_interval) ou lorsque la prochaine opération survient après 5 secondes. La configuration sera de nouveau analysée lorsque le driver rencontre un problème lors d'une connexion à un serveur.
Les failovers du jeu de réplication sont vérifiés toutes les 60 secondes (configurable avec la directive mongo.is_master_interval), et lorsqu'une opération en écriture échoue avec des écritures reconnues.
Les secondaires peuvent être derrière le primaire lors des opérations,
aussi, votre application doit être capable de gérer les données périmées
lors de l'utilisation de préférences de lecture autre que
MongoClient::RP_PRIMARY
.
Pour plus d'informations sur les paires de réplication, reportez-vous à la » documentation interne.
Voir aussi
Historique
Version | Description |
---|---|
1.0.9 | Ajout du support au jeu de réplication, et du failover automatique. |