Pages

2011/04/30

素で運用中のMongodbをShardにするステップ

とり急ぎで作ったmongodb、分散も冗長もしてないがこの先どうする?
と思いきや実は結構簡単に拡張できる。
 

単体からShardにする場合のステップをまとめてみた。
 


addshardで、mongos=mongod



  1. configサーバを立てる

  2. mongosを立てる

  3. 既存mongodを --shardsvr(またはconfに"sherdsvr = true") で再起動。※ポートに注意ね

  4. mongosのadminで、addshard



この時点で、mongosにつないでも既存mongodにつないでも同じDBを参照することができます。

さらに複数の別mongodをaddshardしたら、mongosからはdbが全部見えて各mongodも単体ではこれまで同様に使えます。

素のmongosは各mongodへのルーティングをするだけという、これはこれで便利そうな機能なのでした。
 

クライアントからの接続を、任意のタイミングでmongosあてにするとよいでしょう。これで大まかな移行は終わっています。
 
 

後からゆっくりSharding


mongosからmongodをShardに加えたが、このままほっといたら一つのmongodが使われます。
逆にいうとShard構成の構築時、mongodは1つでもOKなんですね。
そしてこの時点までならShard外しても問題なし。

このあとDB単位でshardをenableにして、任意のcolectionsを特定のShardキーで分散します。

さすがにshardをenableにするともう戻せませんが、export/importで対応OKのはず。
 


レプリカセットとの絡み


ちなみに既存がレプリカセットでも同様、mongosはレプリカセットを認識し、なおかつクライアントからレプリカセットであることを隠ぺいしてくれます。
※逆にRreadSsecondaryのやり方がわからなくなるが、mongosがやってるのかな?

既存をレプリカセットにしたいという場合は、公式にあるレプリカセット構築をそのままやればよろしい。
 

0 件のコメント:

コメントを投稿