One Slave Two Masters

Based on v5

このドキュメントでは、1つのslaveで、2つの別々のmasterからデータを持ってくる例を紹介します。いくつかの注意があります。

  • それぞれのmasterのホストは、別々のhostname(hostname:port)を持つ必要があります。
  • 2つの別々のデータベースから同じデータベースを持ってくる場合、予期しない結果になることがあります。これは限定された方法でできるのですが、データがマージされることになるので、問題が起こることがあります。たとえば、2つのマスタがまったく同じコレクションのセットを持っているはずなのに、片方には現れないかもしれません。これは基本的に推奨されません。
  • replica pairに対するslaveは今のところサポートされていません。 SERVER-30 を参照してください。
$ mkdir /data/1 
$ mkdir /data/2 
$ mkdir /data/3 
$ ./mongod --port 27020 --dbpath /data/1 --master & 
$ ./mongod --port 27021 --dbpath /data/2 --master & 
$ ./mongod --port 27022 --dbpath /data/3 --slave & 

$ # 作成したmasterデータベースにデータを加えます
$ ./mongo localhost:27020 
> use db1 
> db.foo.insert({x:1}) 
> db.foo.insert({x:2}) 
^C 
$ # master 2 
$ ./mongo localhost:27021 
> use db2 
> db.foo.insert({x:999, note:"in db2"}) 
^C 

$ # slave の設定
$ ./mongo localhost:27022 
> use local 
> db.sources.insert({host:"localhost:27020"}) 
> db.sources.insert({host:"localhost:27021"}) 
> db.sources.find() 
{ "_id" : ObjectId("4b8ecfac0cb095ca52b62949"), "host" : "localhost:27020" } 
{ "_id" : ObjectId("4b8ecfc30cb095ca52b6294a"), "host" : "localhost:27021" } 

> // wait a little, still connected to slave 

> use db1 
> db.foo.count() 
2 
> use db2 
> db.foo.find() 
{ "_id" : ObjectId("4b8ed00a1d42d47b3afa3c47"), "x" : 999, "note" : "in db2" } 
> db.printSlaveReplicationInfo() 
source: localhost:27020 
syncedTo: Wed Mar 03 2010 16:04:35 GMT-0500 (EST) 
= 2717secs ago (0.75hrs) 
source: localhost:27021 
syncedTo: Wed Mar 03 2010 16:09:31 GMT-0500 (EST) 
= 2421secs ago (0.67hrs) 
> 

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

IF YOU HAVE A QUESTION, POST IT TO THE USER GROUP.

These pages are fine for comments, but for questions, your best bet will always be the MongoDB User Group.

blog comments powered by Disqus