ユーザ用ツール

サイト用ツール


mongodb:cluster

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
mongodb:cluster [2013/02/08 07:56] – [mongos] nullponmongodb:cluster [2015/03/16 09:08] (現在) – [トラブルシューティング] nullpon
行 1: 行 1:
-====== mongoDBのクラスタ ======+====== mongoDB cluster ======
  
 mongoDBはレプリカセットとシャーディング機能をサポートしている。レプリカセットはDBの複製を作成し、自動フェイルオーバーによってサーバが落ちたとき接続先をレプリケーションサーバに切り替えることで可用性を確保できる機能。シャーディングはコレクションを分割して複数のDBに分散して保存することで同時読み込み、書き込み機能を向上させてスケールアウトする機能。 mongoDBはレプリカセットとシャーディング機能をサポートしている。レプリカセットはDBの複製を作成し、自動フェイルオーバーによってサーバが落ちたとき接続先をレプリケーションサーバに切り替えることで可用性を確保できる機能。シャーディングはコレクションを分割して複数のDBに分散して保存することで同時読み込み、書き込み機能を向上させてスケールアウトする機能。
行 8: 行 8:
 ==== mongod ==== ==== mongod ====
 データを格納するshardサーバ。 データを格納するshardサーバ。
 +
 +**shardsvr**オプションにtureを指定する。他は通常のmongodと同じように設定する。
 <code> <code>
 port = 27001 port = 27001
行 41: 行 43:
 </code> </code>
  
-**shardsvr**オプションにtureを指定する。他は通常のmongodと同じように設定する。+起動する。
  
 <code> <code>
行 51: 行 53:
 ==== mongoc ==== ==== mongoc ====
 正式名称はconfig serverだが、日本のユーザの間ではmongocと呼ばれることが多い。クラスタの情報を管理するサーバで、これが停止するとクラスタ全体が停止してしまう。テストなので1プロセスしか立ち上げないが、実運用では単一障害点にならないように物理的に分けた3台のサーバでプロセスを立ち上げて冗長化する。 正式名称はconfig serverだが、日本のユーザの間ではmongocと呼ばれることが多い。クラスタの情報を管理するサーバで、これが停止するとクラスタ全体が停止してしまう。テストなので1プロセスしか立ち上げないが、実運用では単一障害点にならないように物理的に分けた3台のサーバでプロセスを立ち上げて冗長化する。
 +
 +**configsvr**オプションにtrueを指定すると、config serverとして起動される。それ以外はmongodと同じ。
  
 <code> <code>
行 63: 行 67:
 </code> </code>
  
-**configsvr**オプショにtrueを指定すると、config serverとして起動される。それ以外はmongodと同じ+mongodコマドで起動。
  
 <code> <code>
 $ mongod --config=/etc/mongoc.conf $ mongod --config=/etc/mongoc.conf
 </code> </code>
- 
-mongodコマンドで起動。 
  
 ==== mongos ==== ==== mongos ====
 mognosルータ。アプリから接続されるプロセスでクラスタをアプリから隠蔽する。本番環境ではアプリケーションサーバ上にプロセスを立てて運用されることが多い。 mognosルータ。アプリから接続されるプロセスでクラスタをアプリから隠蔽する。本番環境ではアプリケーションサーバ上にプロセスを立てて運用されることが多い。
 +
 +**configdb**にmongocのhost、portを指定する(複数台構成の場合はカンマ区切りで)。アプリからの接続先になるのでportはmongoDBのデフォルトを指定するのが良い。 
  
 <code> <code>
行 81: 行 85:
 fork = true fork = true
 configdb = 127.0.0.1:27020 configdb = 127.0.0.1:27020
 +# configdb = "127.0.0.1:27020"   mongoDB 2.2ではダブルクオートで囲むとエラーになるので注意
 </code> </code>
  
-**configdb**にmongocのhost、portを指定する(複数台構成の場合はカマ区切り)。アプリからの接続先になるのでportはmongoDBのデフォルトを指定するのが良い。 +起動は **mongos** コマ
  
 <code> <code>
 $ mongos --config=/etc/mongos.conf $ mongos --config=/etc/mongos.conf
 </code> </code>
- 
-起動にはmongosコマンドを使う。 
  
 ==== シャーディングの設定 ==== ==== シャーディングの設定 ====
 各プロセス起動後、クラスタの設定を行う。 各プロセス起動後、クラスタの設定を行う。
  
-mongosに接続して+mongosでadmin dbに接続して
 <code> <code>
-$ mongo +$ mongo admin
 </code> </code>
  
 mongodをシャードサーバとしてクラスタに追加する mongodをシャードサーバとしてクラスタに追加する
 <code> <code>
-mongos> use admin; 
 mongos> db.runCommand({addshard:"127.0.0.1:27001", name:"ShardHogeDB01" , allowLocal:true}); 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:27002", name:"ShardHogeDB02" , allowLocal:true});
行 115: 行 117:
 <code> <code>
 mongos> db.runCommand({shardcollection:"hogeDB.fugaCollection", key:{ _id :1 }}); 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> </code>
mongodb/cluster.1360310200.txt.gz · 最終更新: 2013/02/08 07:56 by nullpon