内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
mongodb:cluster
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== mongoDB cluster ====== mongoDBはレプリカセットとシャーディング機能をサポートしている。レプリカセットはDBの複製を作成し、自動フェイルオーバーによってサーバが落ちたとき接続先をレプリケーションサーバに切り替えることで可用性を確保できる機能。シャーディングはコレクションを分割して複数のDBに分散して保存することで同時読み込み、書き込み機能を向上させてスケールアウトする機能。 ===== シャーディング ===== mongod、mongoc、mongosの3種類のサーバプロセスがある。これらのプロセスは本来はそれぞれ別のサーバマシン上で立ち上げるものである。ここでは全てのプロセスをローカルで起動させる。 ==== mongod ==== データを格納するshardサーバ。 **shardsvr**オプションにtureを指定する。他は通常のmongodと同じように設定する。 <code> port = 27001 logpath = /var/log/mongod_1.log pidfilepath = /command/var/run/mongod_1.pid logappend = true fork = true dbpath = /var/data/mongod_1 rest = true shardsvr = true </code> <code> port = 27002 logpath = /var/log/mongod_2.log pidfilepath = /command/var/run/mongod_2.pid logappend = true fork = true dbpath = /var/data/mongod_2 rest = true shardsvr = true </code> <code> port = 27003 logpath = /var/log/mongod_3.log pidfilepath = /command/var/run/mongod_3.pid logappend = true fork = true dbpath = /var/data/mongod_3 rest = true shardsvr = true </code> 起動する。 <code> $ mongod --config=/etc/mongod_1.conf $ mongod --config=/etc/mongod_2.conf $ mongod --config=/etc/mongod_3.conf </code> ==== mongoc ==== 正式名称はconfig serverだが、日本のユーザの間ではmongocと呼ばれることが多い。クラスタの情報を管理するサーバで、これが停止するとクラスタ全体が停止してしまう。テストなので1プロセスしか立ち上げないが、実運用では単一障害点にならないように物理的に分けた3台のサーバでプロセスを立ち上げて冗長化する。 **configsvr**オプションにtrueを指定すると、config serverとして起動される。それ以外はmongodと同じ。 <code> port = 27020 logpath = /var/log/mongoc.log pidfilepath = /var/run/mongoc.pid logappend = true fork = true dbpath = /var/data/mongoc rest = true configsvr = true </code> mongodコマンドで起動。 <code> $ mongod --config=/etc/mongoc.conf </code> ==== mongos ==== mognosルータ。アプリから接続されるプロセスでクラスタをアプリから隠蔽する。本番環境ではアプリケーションサーバ上にプロセスを立てて運用されることが多い。 **configdb**にmongocのhost、portを指定する(複数台構成の場合はカンマ区切りで)。アプリからの接続先になるのでportはmongoDBのデフォルトを指定するのが良い。 <code> port = 27017 logpath = /var/log/mongos.log pidfilepath = /var/run/mongos.pid logappend = true fork = true configdb = 127.0.0.1:27020 # configdb = "127.0.0.1:27020" mongoDB 2.2ではダブルクオートで囲むとエラーになるので注意 </code> 起動は **mongos** コマンドで <code> $ mongos --config=/etc/mongos.conf </code> ==== シャーディングの設定 ==== 各プロセス起動後、クラスタの設定を行う。 mongosでadmin dbに接続して <code> $ mongo admin </code> mongodをシャードサーバとしてクラスタに追加する <code> mongos> db.runCommand({addshard:"127.0.0.1:27001", name:"ShardHogeDB01" , allowLocal:true}); mongos> db.runCommand({addshard:"127.0.0.1:27002", name:"ShardHogeDB02" , allowLocal:true}); mongos> db.runCommand({addshard:"127.0.0.1:27003", name:"ShardHogeDB03" , allowLocal:true}); </code> dbにシャーディングを設定 <code> mongos> db.runCommand({enablesharding:"hogeDB"}); </code> コレクションにシャーディングを設定 <code> mongos> db.runCommand({shardcollection:"hogeDB.fugaCollection", key:{ _id :1 }}); </code> シャーディングの設定は以下のコマンドで表示できるが、正直読みにくい <code> mongos> db.printShardingStatus(); </code> ==== トラブルシューティング ==== <code> "error creating initial database config information :: caused by :: can't find a shard to put new db on", </code> mongodがクラスタに1つも存在していない。1つ以上のmongodをクラスタに追加する ==== flushRouterConfig ==== mongosにキャッシュされているクラスタ情報をクリアします <code> db.adminCommand("flushRouterConfig") </code>
mongodb/cluster.txt
· 最終更新:
2015/03/16 09:08
by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ