今回は「MongoDB の シャードクラスタにシャードサーバーを追加する方法」についてまとめます。
概要
今回はシャードサーバー(レプリカセット) shard2-rs
を作成してシャードクラスタに追加する手順について見ていきます。
基本的な手順はシャードクラスタ環境構築と一緒です。
ルーターサーバーの初期設定がないくらいが違いです。
それでは、以下に具体的な手順を記載しているので順に見ていきましょう。
手順
シャードサーバーは「レプリカセット」なので単純にレプリカセットを準備して、それをシャードクラスタへ追加していきます。
今回は shard2-rs
というシャードサーバー(レプリカセット)を作成して、シャードクラスタへ追加していきます。
シャードサーバーの準備
-
設定ファイルの準備
シャードサーバーとしてレプリカセットを構成する場合、
sharding.clusterRole: shardsvr
を設定します。mongod.shard2-1.cfg
123456789101112131415systemLog:
destination: file
logAppend: true
path: C:\work\MongoDB\shard\log\mongod.shard2-1.log
storage:
dbPath: C:\work\MongoDB\shard\shard2-1\data
journal:
enabled: true
replication:
replSetName: "shard2-rs"
sharding:
clusterRole: shardsvr
net:
bindIpAll: true
port: 27021
同様に mongod.shard2-2.cfg、mongod.shard2-3.cfg を作っておきます。
-
レプリカセットを起動
設定ファイルを指定して各サーバーを起動していきます。
1mongod --config "./mongod.shard2-1.cfg"
同様に mongod.shard2-2.cfg、mongod.shard2-3.cfg についても起動します。
-
任意のサーバーへ接続
レプリカセットにしたいサーバー群のうちのいずれかへ接続します。
1mongo 127.0.0.1:27011
-
レプリカセットを初期化
rs.initiate()
を利用してレプリカセットを初期化します。12345678> rs.initiate({
_id: "shard2-rs",
members: [
{ _id: 0, host: "127.0.0.1:27021" },
{ _id: 1, host: "127.0.0.1:27022" },
{ _id: 2, host: "127.0.0.1:27023" },
]
})
シャードクラスタにシャードサーバー追加
-
ルーターサーバーへ接続
ルーターサーバーとなるmongosサーバーへ接続します。
1mongos 127.0.0.1:8000
-
シャードサーバーを追加
sh.addShard( [URL] )
コマンドを利用してシャードサーバーを追加します。 指定するURLは "[レプリカセット名]/[サーバー1], [サーバー2], ..." のように指定します。1mongos > sh.addShard( "shard2-rs/127.0.0.1:27021,127.0.0.1:27022,127.0.0.1:27023" )
確認
動作確認は単純にルーターサーバー(mongosサーバー)へ接続して sh.status()
で追加したシャードサーバーが増えいていることを確認するだけです。
-
ルーターサーバーへ接続
1mongo 127.0.0.:8000
-
シャードクラスタの状態を確認
1mongos > sh.status()
12345678910111213141516171819202122232425262728293031323334353637383940414243--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("5b2de11015e5c83be5461bc1")
}
shards:
{ "_id" : "shard1-rs", "host" : "shard1-rs/127.0.0.1:27011,127.0.0.1:27012,127.0.0.1:27013", "state" : 1 }
{ "_id" : "shard2-rs", "host" : "shard2-rs/127.0.0.1:27021,127.0.0.1:27022,127.0.0.1:27023", "state" : 1 }
active mongoses:
"3.6.2" : 1
autosplit:
Currently enabled: yes
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 1
Last reported error: Could not find host matching read preference { mode: "primary" } for set shard1-rs
Time of Reported error: Sat Jul 14 2018 23:04:02 GMT+0900
Migration Results for the last 24 hours:
4 : Success
databases:
{ "_id" : "config", "primary" : "config", "partitioned" : true }
config.system.sessions
shard key: { "_id" : 1 }
unique: false
balancing: true
chunks:
shard1-rs 1
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard1-rs Timestamp(1, 0)
{ "_id" : "sample", "primary" : "shard1-rs", "partitioned" : true }
sample.users
shard key: { "email" : "hashed" }
unique: false
balancing: true
chunks:
shard1-rs 2
shard2-rs 2
{ "email" : { "$minKey" : 1 } } -->> { "email" : NumberLong("-4611686018427387902") } on : shard2-rs Timestamp(5, 0)
{ "email" : NumberLong("-4611686018427387902") } -->> { "email" : NumberLong(0) } on : shard2-rs Timestamp(6, 0)
{ "email" : NumberLong(0) } -->> { "email" : NumberLong("4611686018427387902") } on : shard1-rs Timestamp(6, 1)
{ "email" : NumberLong("4611686018427387902") } -->> { "email" : { "$maxKey" : 1 } } on : shard1-rs Timestamp(4, 0)
今回は「MongoDB の シャードクラスタにシャードサーバーを追加する方法」についてまとめました。 ポイントは以下の通りです。
- 基本的にはシャードクラスタ環境構築に同じ手順
- シャードサーバーの追加は
sh.addShard()
参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!