今回は「MongoDBのレプリカセットメンバーに対して強制再同期をする方法」についてまとめます。
再同期が必要なケース
レプリカセットの中でデータ不整合が起こっている状態のとき、再同期が必要になってきます。 具体的なケースとしては以下のいずれかの場合にデータ再同期が必要になります。
- "stale"な状態(時間当たりの更新処理が多すぎてoplog容量を超えてしまいプライマリと完全な同期ができなくなった状態)になった場合
- 新規メンバーとして追加する場合
再同期する際の注意点
データ再同期する場合、大量のデータ移動が発生するためネットワーク通信帯域を使います。 通信帯域を使うとMongoDB全体のパフォーマンスが下がってしまうので、実行するタイミングは利用率が低い時間帯を選んで実行するように注意します。
自動再同期を行う手順
dbPath に指定されたフォルダ配下にファイルが存在しない状態で mongod を起動すれば自動的に再同期が始まります。 具体的には以下のような手順で行えば再同期が始まります。
-
データ再同期したい稼働中のサーバーを停止
mongoシェル コマンド で以下を実行することで安全に停止させます。
12> use admin
> db.shutdownServer()
-
dbPath配下のフォルダ・ファイルをすべて削除
コマンドプロンプト上で以下のコマンドを実行し、dbPath配下のファイルやフォルダをすべて削除します。
123set
DBPATH=C:\mongodb\server2\data
del
"%DBPATH%"
/f /s /q
for
/d
%a
in
(
%DBPATH%
\*)
do
(
rmdir
/s /q
"%a"
)
-
mongod を起動
1mongo --config
"C:\mongodb\server2\mongod.server2.cfg"
今回は「MongoDBのレプリカセットメンバーに対して強制再同期をする方法」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!