mongodb:cluster
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
mongodb:cluster [2013/02/08 08:12] – [mongos] nullpon | mongodb:cluster [2015/03/16 09:08] (現在) – [トラブルシューティング] nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== mongoDBのクラスタ | + | ====== mongoDB |
mongoDBはレプリカセットとシャーディング機能をサポートしている。レプリカセットはDBの複製を作成し、自動フェイルオーバーによってサーバが落ちたとき接続先をレプリケーションサーバに切り替えることで可用性を確保できる機能。シャーディングはコレクションを分割して複数のDBに分散して保存することで同時読み込み、書き込み機能を向上させてスケールアウトする機能。 | mongoDBはレプリカセットとシャーディング機能をサポートしている。レプリカセットはDBの複製を作成し、自動フェイルオーバーによってサーバが落ちたとき接続先をレプリケーションサーバに切り替えることで可用性を確保できる機能。シャーディングはコレクションを分割して複数のDBに分散して保存することで同時読み込み、書き込み機能を向上させてスケールアウトする機能。 | ||
行 8: | 行 8: | ||
==== mongod ==== | ==== mongod ==== | ||
データを格納するshardサーバ。 | データを格納するshardサーバ。 | ||
+ | |||
+ | **shardsvr**オプションにtureを指定する。他は通常のmongodと同じように設定する。 | ||
< | < | ||
port = 27001 | port = 27001 | ||
行 41: | 行 43: | ||
</ | </ | ||
- | **shardsvr**オプションにtureを指定する。他は通常のmongodと同じように設定する。 | + | 起動する。 |
< | < | ||
行 51: | 行 53: | ||
==== mongoc ==== | ==== mongoc ==== | ||
正式名称はconfig serverだが、日本のユーザの間ではmongocと呼ばれることが多い。クラスタの情報を管理するサーバで、これが停止するとクラスタ全体が停止してしまう。テストなので1プロセスしか立ち上げないが、実運用では単一障害点にならないように物理的に分けた3台のサーバでプロセスを立ち上げて冗長化する。 | 正式名称はconfig serverだが、日本のユーザの間ではmongocと呼ばれることが多い。クラスタの情報を管理するサーバで、これが停止するとクラスタ全体が停止してしまう。テストなので1プロセスしか立ち上げないが、実運用では単一障害点にならないように物理的に分けた3台のサーバでプロセスを立ち上げて冗長化する。 | ||
+ | |||
+ | **configsvr**オプションにtrueを指定すると、config serverとして起動される。それ以外はmongodと同じ。 | ||
< | < | ||
行 63: | 行 67: | ||
</ | </ | ||
- | **configsvr**オプションにtrueを指定すると、config serverとして起動される。それ以外はmongodと同じ。 | + | mongodコマンドで起動。 |
< | < | ||
$ mongod --config=/ | $ mongod --config=/ | ||
</ | </ | ||
- | |||
- | mongodコマンドで起動。 | ||
==== mongos ==== | ==== mongos ==== | ||
行 83: | 行 85: | ||
fork = true | fork = true | ||
configdb = 127.0.0.1: | configdb = 127.0.0.1: | ||
+ | # configdb = " | ||
</ | </ | ||
起動は **mongos** コマンドで | 起動は **mongos** コマンドで | ||
+ | |||
< | < | ||
$ mongos --config=/ | $ mongos --config=/ | ||
</ | </ | ||
- | mongoDB 2.2では、configで以下のようにダブルクオートで囲むとエラーになるので注意 | ||
- | < | ||
- | configdb = " | ||
- | </ | ||
==== シャーディングの設定 ==== | ==== シャーディングの設定 ==== | ||
各プロセス起動後、クラスタの設定を行う。 | 各プロセス起動後、クラスタの設定を行う。 | ||
- | mongosに接続して | + | mongosでadmin dbに接続して |
< | < | ||
- | $ mongo | + | $ mongo admin |
</ | </ | ||
mongodをシャードサーバとしてクラスタに追加する | mongodをシャードサーバとしてクラスタに追加する | ||
< | < | ||
- | mongos> use admin; | ||
mongos> db.runCommand({addshard:" | mongos> db.runCommand({addshard:" | ||
mongos> db.runCommand({addshard:" | mongos> db.runCommand({addshard:" | ||
行 118: | 行 117: | ||
< | < | ||
mongos> db.runCommand({shardcollection:" | mongos> db.runCommand({shardcollection:" | ||
+ | </ | ||
+ | |||
+ | シャーディングの設定は以下のコマンドで表示できるが、正直読みにくい | ||
+ | < | ||
+ | mongos> db.printShardingStatus(); | ||
+ | </ | ||
+ | |||
+ | ==== トラブルシューティング ==== | ||
+ | < | ||
+ | "error creating initial database config information :: caused by :: can't find a shard to put new db on", | ||
+ | </ | ||
+ | mongodがクラスタに1つも存在していない。1つ以上のmongodをクラスタに追加する | ||
+ | |||
+ | ==== flushRouterConfig ==== | ||
+ | |||
+ | mongosにキャッシュされているクラスタ情報をクリアします | ||
+ | |||
+ | < | ||
+ | db.adminCommand(" | ||
</ | </ |
mongodb/cluster.1360311155.txt.gz · 最終更新: 2013/02/08 08:12 by nullpon