本番サーバーに大きなMongoDBデータベースがあり、それをレプリカセットとして設定します。両方のサーバーでレプリカセットオプションを有効にすると、最初からデータの同期が自動的に開始されることを理解しています。ただし、最初から同期する必要はありません。代わりに、MySQLレプリケーションのように構成します。
次のプロセスを実行したいと思います。
これは可能ですか?または、これに対する他の代替ソリューションはありますか?
なぜ2組の重い物を持ち上げるのですか? MongoDBに任せてください。
この例では、SECONDARY
のIPが10.30.50.70
で、ホスト名myslave
であると仮定します。
PRIMARYの/etc/mongodb.conf
に次の変更を加えます
/etc/mongodb.conf
で認証を有効にするauthorization: enabled
(MongoDB 2.6以降)auth=true
(MongoDB 2.4を使用している場合)myreplica
)と想定します。replSetName: myreplica
を配置します(MongoDB 2.6以降)replSet = myreplica
(MongoDB 2.4)PRIMARY
でMongoDBを再起動しますservice mongod restart
PRIMARY
でレプリカセットを開始するrs.initiate();
SECONDARY
はレプリカセットが有効になっていますが、複製されていませんSECONDARY
をPRIMARY
に追加しますPRIMARYに移動して実行します
rs.add("10.30.50.70:27017")
または
rs.add("myslave:27017")
これを繰り返し実行します
rs.status()
このコマンドがフリーズしても心配する必要はありません。すべてのインデックスを再構築します。
SECONDARY
で別のsshセッションを開き、tail -f
ファイルでmongodb.log
を実行して、インデックスの再構築の進行状況を確認できます。
MongoDBは基本的に、1回の操作でレプリケーションを開始し、データをコピーし、インデックスを再構築します。示されているように、このプロセスは、最初のレプリカセットを構築するときには決して自動ではありません。このようにすると、エラーが発生しにくくなります。
Rolandoに感謝します。
幸い、私は同じことをGoogleグループに投稿しています。MongoDBの誰かが私のシナリオを修正するのを手伝ってくれました。レプリケーションを直接ダンプ、復元、構成することはできません。大規模なデータベースのレプリケーションを有効にする手順に従ってください。
1. MongoDBディレクトリをセカンダリサーバーにコピーします。
2.プライマリ構成ファイルでレプリケーションを有効にし、プライマリmonogDBを再起動します。
3. rs.initiate()をプライマリで実行します。
4. MongoDBをセカンダリで停止し、データディレクトリをプライマリデータディレクトリに置き換えます。
5.設定ファイルでレプリケーションを有効にし、mongodサービスを開始します。
6. primaryおよびrs.add(secondary:port)に移動します。