#目的
v2.6で稼働中のreplicaSet+ShardingのMongoDBクラスタを3.0+WiredTigerにupgradeしてDisk使用量をダイエットさせること。replicaSetはprimary+secondary+arbiterの3台構成を想定。
#3.0に更新する手順
基本的には公式ドキュメントに沿ってやればOK。まずはMMAPv1のまま3.0にし、その後WiredTigerを有効にする。
Balancerの停止
mongosにつないで次のコマンドを発行する
sh.stopBanalcer()
確認は以下のコマンドで行う。
sh.getBalancerState()
mongosの更新
まずはmetadataを更新する。3.0のmongosをconfigdbにつなげ、upgradeを発行する。画面にエラーログが出ていないことを確認。
mongos --configdb <configDB string> --upgrade
問題がなければ2.6で動いているmongosを1つずつ再起動して3.0のバイナリで動かす。(--upgrade
はつけない)
configdbの更新
configdbとして動いているmongodを停止し、v3.0のmongodで同一の設定で再起動する。mongosの起動オプションで--copnfigdb <cfg1>,<cfg2>,<cfg3>
のように指定している時、cfg1
を最後に更新する。
shardの更新
各shardはprimary
, secondary
, arbiter
のmongodからなるreplica setであり、arbiter
, secondary
をまずは3.0のバイナリで再起動。その後、以下のコマンドでprimary
をsecondary
に降格し、同様に3.0のバイナリで再起動。
rs.stepDown()
Balancerの再起動
mongosにつないで次のコマンドを発行する
sh.setBalancerState(true)
確認は以下のコマンドで行う。
sh.getBalancerState()
WiredTigerに移行する手順
必ず3.0のMMAPv1に移行した後に行う。基本的には公式docのChange Replica Set Storage Engine to WiredTigerに従う。
まずはsecondaryのmongodを停止する。dbpathをバックアップし、元のディレクトリの中身を全て消去する。次に--storageEngine wiredTiger
をつけて再起動する。設定はconfigファイルに書いても良い。特に同じサーバー上に複数のmongodインスタンスを起動する場合はWiredTigerのcacheSizeGB
の設定には注意する。
initial sync
が終了したら(どれくらいかかるか不明)primaryをstepDownし、同様の操作を行う。