「configサーバも複数あるべき」みたいな話だったのでレプリカセットを組んでみました
mongoDBのクラスタ環境をいじってみる - notebook
上記の続き
構成
サーバの起動
sudo mongod --configsvr --port 27032 --dbpath=/data/mongo/shardconfig2 --logpath /data/mongo/shardconfig2/log --fork --replSet rsc sudo mongod --configsvr --port 27033 --dbpath=/data/mongo/shardconfig3 --logpath /data/mongo/shardconfig3/log --fork --replSet rsc
レプリカセットの設定
PRIMARY予定のノード(localhost:27031)で実行します
> config = {_id: "rsc", members: [ {_id: 0, host: 'localhost:27031'} ] } > rs.initiate(config) { "ok" : 0, "errmsg" : "Missing expected field \"version\"", "code" : 93 }
configサーバのレプリカセットではversionが必要なようです
> config = {_id: "rsc", members: [ {_id: 0, host: 'localhost:27031'} ], version: 0 } > rs.initiate(config) { "ok" : 0, "errmsg" : "version field value of 0 is out of range", "code" : 93 }
今度は0じゃだめだそう
> config = {_id: "rsc", members: [ {_id: 0, host: 'localhost:27031'} ], version: 1 } > rs.initiate(config) { "ok" : 1 }
> rs.status() { "info" : "configsvr", "ok" : 0, "errmsg" : "not running with --replSet", "code" : 76 }
起動時に--replSet
を指定してなかったのでエラーになりました
オプションを付け直して起動します
sudo mongod --configsvr --port 27031 --dbpath=/data/mongo/shardconfig --logpath /data/mongo/shardconfig/log --fork --replSet rsc
- 再度設定をして確認
rs.status() { "set" : "rsc", "date" : ISODate("2016-11-02T03:54:50.489Z"), "myState" : 1, "term" : NumberLong(1), "configsvr" : true, "heartbeatIntervalMillis" : NumberLong(2000), "members" : [ { "_id" : 0, "name" : "localhost:27031", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 19, "optime" : { "ts" : Timestamp(1478058882, 4), "t" : NumberLong(1) }, "optimeDate" : ISODate("2016-11-02T03:54:42Z"), "infoMessage" : "could not find member to sync from", "electionTime" : Timestamp(1478058871, 1), "electionDate" : ISODate("2016-11-02T03:54:31Z"), "configVersion" : 1, "self" : true } ], "ok" : 1 }
無事PRIMARYのサーバが出来ました
メンバーの追加
ここからメンバーを追加していきます
- PRIMARYサーバで実行
> rs.add("localhost:27032"); { "ok" : 1 } > rs.add("localhost:27033"); { "ok" : 1 }
これでレプリカセットが完成しました
configで設定した値やシャーディングの情報などをmongoに保存しているようです
> show dbs config 0.003GB local 0.003GB rsc:PRIMARY> use config switched to db config rsc:PRIMARY> show collections actionlog changelog chunks collections databases lockpings locks mongos settings shards tags version
configdbの設定変更
mongosの起動時設定を変更するため再起動します
--configdb localhost:27031
↓
--configdb localhost:27031,localhost:27032,localhost:27033
sudo mongos --port 27017 --configdb localhost:27031,localhost:27032,localhost:27033 --chunkSize 1 --logpath /data/mongo/shardmongos/log --fork
OK!!!!
ただ、本番運用するならmongosも複数あったほうがいいですね