今回は「MongoDB の シャードクラスタにシャードサーバーを追加する方法」についてまとめます。
概要
今回はシャードサーバー(レプリカセット) shard2-rs
を作成してシャードクラスタに追加する手順について見ていきます。
基本的な手順はシャードクラスタ環境構築と一緒です。
ルーターサーバーの初期設定がないくらいが違いです。
それでは、以下に具体的な手順を記載しているので順に見ていきましょう。
手順
シャードサーバーは「レプリカセット」なので単純にレプリカセットを準備して、それをシャードクラスタへ追加していきます。
今回は shard2-rs
というシャードサーバー(レプリカセット)を作成して、シャードクラスタへ追加していきます。
シャードサーバーの準備
-
設定ファイルの準備
シャードサーバーとしてレプリカセットを構成する場合、
sharding.clusterRole: shardsvr
を設定します。mongod.shard2-1.cfg
systemLog: 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 を作っておきます。
-
レプリカセットを起動
設定ファイルを指定して各サーバーを起動していきます。
mongod --config "./mongod.shard2-1.cfg"
同様に mongod.shard2-2.cfg、mongod.shard2-3.cfg についても起動します。
-
任意のサーバーへ接続
レプリカセットにしたいサーバー群のうちのいずれかへ接続します。
mongo 127.0.0.1:27011
-
レプリカセットを初期化
rs.initiate()
を利用してレプリカセットを初期化します。> 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サーバーへ接続します。
mongos 127.0.0.1:8000
-
シャードサーバーを追加
sh.addShard( [URL] )
コマンドを利用してシャードサーバーを追加します。 指定するURLは "[レプリカセット名]/[サーバー1], [サーバー2], ..." のように指定します。mongos > sh.addShard( "shard2-rs/127.0.0.1:27021,127.0.0.1:27022,127.0.0.1:27023" )
確認
動作確認は単純にルーターサーバー(mongosサーバー)へ接続して sh.status()
で追加したシャードサーバーが増えいていることを確認するだけです。
-
ルーターサーバーへ接続
mongo 127.0.0.:8000
-
シャードクラスタの状態を確認
mongos > sh.status()
--- 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 の フォロー」 お願いします!!