レプリケーション

based on v26

Mongoデータベースはサーバ間でのレプリケーションをサポートしています。

レプリケーションは、master-slave構成を拡張したもので、一つのサーバだけが書き込みに対してアクティブ(master)になることを意味します。レプリケーションの一番の目的は、フェイルオーバーと冗長性です。

Mongoは二つの種類のレプリケーションをサポートします。単純なmaster-slaveの構成と、replica pairな構成です。詳しくは次のページを参照してください。

セキュリティ

セキュリティ機能が有効になっている場合、両方のサーバ上に存在するlocalのデータベースで、ユーザアカウントを設定してください。

slave側のレプリケーション接続は、 local.system.usersrepl ユーザをまず探します。存在する場合、ソース側のデータベースに対しての認証で、そのユーザを使います。 repl ユーザが存在しない場合、 local.system.users の最初のユーザオブジェクトで接続を試みます。

local データデースは、 admin データベースのように使われます。 local にあるアカウントですべてのサーバへアクセスします。

シェルで

mongo シェルでmasterのステータスを確認します。

// master上のlocal.oplog.$main の中を調べ、状態を表示します。
db.printReplicationInfo() 

mongo シェルでslaveの状態を確認します。

// slaveのlocal.sourcesを中を調べ、状態を表示します。
db.printSlaveReplicationInfo() 

(上記のファンクションを括弧なしで実行することで、javascriptのソースを見ることができます)

バージョン1.3.2時点では、slaveで以下のことができます。

db._adminCommand( { serverStatus : 1 , repl : N } )

N は、診断情報のレベルで、以下の値を設定することができます。

  • 0 - none
  • 1 - local (他のサーバにつなぐ必要がない)
  • 2 - remote (チェックのためにマスターに接続する必要がある)

httpインターフェース

管理用の http Interace (port 28017) で、master/slaveどちらでも、基本的なmongodのプロセスの情報を確認できます。

replInfo: repl: sleep 2sec before next pass
replication
master: 0
slave: 1
initialSyncCompleted: 1

オプション

遅延slave

ヒューマンエラーの対策として、masterから数時間遅れたデータを持つslaveを持つことが有益なことがあります。これは、MongoDB 1.3.3以上で、--slavedelayオプションをmongodコマンドラインオプションに付けることで可能です。

 
--slavedelay masterからslaveに遅らせる時間(秒で)を指定します。

参照


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