2011-07-04 5 views
0

Bonjour, nous avons un DB de production sur mongo qui a un ensemble de collections et toutes les activités sont chargées dans un oplog. Maintenant, je veux écrire un script pour regarder ce oplog afin que chaque fois qu'un nouvel enregistrement est ajouté à l'oplog, je veux l'écrire à un db sur un autre serveur factice. Comment puis-je aller à ce sujet. Je suis nouveau à Mongo, donc je ne sais pas trop par où commencer. des idées seraient utiles pour moi. Je pense à quelque chose sur les lignes deréplication mongo db oplog à un autre mongo db

while(true) 
{ 
    watch(oplog) 
    OnNewEntry 
    { 
     AddToAnotherMongo(another.server.com,port,dbname,record) 
    } 
} 
+2

Que voulez-vous réaliser? Si vous voulez faire une réplication, regardez dans les ensembles de réplicas (http://www.mongodb.org/display/DOCS/Replica+Sets) – Fabian

Répondre

4

Il existe différents lecteurs d'oplog qui peuvent regarder et relire à un serveur spécifique. C'est ce que font les réplicasets par défaut et il n'y a qu'un seul primaire (writer). Si vous voulez simplement des copies de vos données, les réplicasets sont la meilleure option et supportés sans aucun code.

Voici quelques exemples de code qui ont lu le oplog:

1

J'ai eu un problème simliar et a trouvé une solution assez facile après votre opcode -exemple en javascript à exécuter dans un mongo-shell.

source code available here

Avec l'ouverture d'un curseur tailable sur le oplog du serveur maître chaque opération pourrait être appliquée à un autre serveur (bien sûr, vous pouvez filtrer par l'espace de noms des collections ou même les bases de données ...)