12
12

More than 5 years have passed since last update.

MongoDB2.6のクラスタを3.0+WiredTigerに移行する方法

Last updated at Posted at 2015-07-11

目的

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のバイナリで再起動。その後、以下のコマンドでprimarysecondaryに降格し、同様に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し、同様の操作を行う。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12