10
votes

Réplication de la base de données simple mongodb

J'ai un "réplique de réplica" de travail composé de 3 serveurs. Il stocke deux DBS, je me demande si il est possible de reproduire un seul des DBS sans exécuter plus d'une instance de MongoDB (une par dB).

Voici un croquis du "problème" p>

      Server1   Server2   Server3
DB1      X         X         X
DB2      X         X


0 commentaires

3 Réponses :


7
votes

Je ne crois pas que ce soit possible.

Contrairement à la Sharding, où vous spécifiez le niveau de la collection NIVEAU DEVRAIT, avec des répliques, vous définissez une instance de MongoDB fait partie d'un ensemble de répliques. Comme seul un nœud dans un ensemble de répliques peut être le maître à un moment donné, sur la base du scénario dont vous parlez, il y aurait un problème si par exemple. Server1 est tombé en panne et Server3 a été promu maître - comme DB2 ne pouvait alors pas être écrit à.


0 commentaires

3
votes

J'ai eu un problème similiaire et j'ai trouvé une solution assez facile dans JavaScript pour être exécutée dans une coquille Mongo.

SourceCode disponible ici: http://www.suenkel.de/ Blog / 2012/02 / Mongodb-Replicat-one-One-OR-Collection /

avec l'ouverture d'un curseur tables sur l'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 ...)


1 commentaires

Pouvez-vous poster la solution au lieu du lien? Les morts rendu de Linknis rendent votre réponse inutile ...



0
votes

Selon l'architecture de réplicaset actuelle MongoDB, vous ne pouvez pas utiliser un seul réplica défini avec certains membres ayant des parties des bases de données ou des collections.

Toutefois, si vous avez besoin de reproduire une seule base de données ou une collecte en temps réel à un autre endroit, j'ai fini par suivre la solution suivante:

  1. Utilisez DirectoryPerdb Pour séparer les fichiers de base de données souhaités (créez une nouvelle réplica avec cette option activée si vous ne l'avez déjà pas déjà)
  2. Copiez le répertoire de la base de données souhaitée sur le nouvel emplacement.
  3. Déployez un nouveau réplicaset avec cette base de données unique.
  4. Écrivez un script simple et utilisez Changer les flux pour effectuer la réplication pour vous. < / li>

    Comme je l'ai dit, vous vous retrouverez avec un autre ensemble de réplica dédié à cette base de données, mais la réplication est effectuée en temps réel et les deux séries répliques ont les données de manière cohérente (vous devez effectuer vos opérations d'écriture sur le premier réplicaset , bien que).


0 commentaires