web-dev-qa-db-fra.com

Limitation de l'ensemble de réplicas de flux de changement MongoDB

Quel est le raisonnement derrière la mise à disposition de flux de modifications uniquement sur les jeux de réplicas?

10
Daniel F

L'implémentation des flux de modifications est basée sur l'oplog, qui n'est disponible que sur les jeux de réplicas. Une autre raison est qu'un jeu de réplicas contient un sur-ensemble des fonctionnalités d'un nœud autonome et constitue le déploiement MongoDB recommandé pour les applications de production. Par conséquent, il est logique d'implémenter la fonctionnalité de flux de modifications en fonction de la topologie de déploiement de production recommandée.

Une autre raison majeure est que les flux de modifications produiront des documents qui ne seront pas restaurés dans un paramètre de jeu de réplicas (voir Rollbacks pendant le basculement du jeu de réplicas ), donc l'utilisation de problème de lecture majoritaire = est une exigence.

Notez que les flux de modifications sont également disponibles dans un cluster partitionné et également un jeu de réplicas à nœud unique (c'est-à-dire un jeu de réplicas avec un seul membre, bien que cette configuration ne soit généralement pas recommandée).

La description de haut niveau des flux de modifications est disponible sur la page Modifier les flux

La conception des flux de modifications est décrite dans SERVER-13932 .

18
kevinadi

Mon environnement était Windows et les étapes suivantes m'ont aidé:

  1. Trouvez "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg"
  2. Ajoutez le code suivant aux options mongod.cfg Et dont vous avez besoin. Plus d'informations: Options de réplication Mongo

    replication:
     replSetName: "rs0"
    
  3. Redémarrez le processus MongoDB:

    Windows->Task Manager->Services->MongoDB [run restart]
    
  4. Exécutez dans la console mongo 127.0.0.1:27017

  5. Exécutez ensuite rs.initiate()

En conséquence, vous avez de la chance d'avoir quelque chose comme ceci:

> rs.initiate()                                                                               

        "info2" : "no configuration specified. Using a default configuration for the set",    
        "me" : "127.0.0.1:27017",                                                             
        "ok" : 1,                                                                             
        "$clusterTime" : {                                                                    
                "clusterTime" : Timestamp(1584218777, 1),                                     
                "signature" : {                                                               
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),                   
                        "keyId" : NumberLong(0)                                               
                }                                                                             
        },                                                                                    
        "operationTime" : Timestamp(1584218777, 1)                                            
}                                                                                             
rs0:SECONDARY>                                                                                
0
Roman