「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も複数あったほうがいいですね