ユーザ用ツール

サイト用ツール


mongodb:cluster

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
mongodb:cluster [2012/12/25 17:20] nullponmongodb:cluster [2015/03/16 09:08] (現在) – [トラブルシューティング] nullpon
行 1: 行 1:
-====== mongoDBのクラスタ ======+====== mongoDB cluster ======
  
 mongoDBはレプリカセットとシャーディング機能をサポートしている。レプリカセットはDBの複製を作成し、自動フェイルオーバーによってサーバが落ちたとき接続先をレプリケーションサーバに切り替えることで可用性を確保できる機能。シャーディングはコレクションを分割して複数のDBに分散して保存することで同時読み込み、書き込み機能を向上させてスケールアウトする機能。 mongoDBはレプリカセットとシャーディング機能をサポートしている。レプリカセットはDBの複製を作成し、自動フェイルオーバーによってサーバが落ちたとき接続先をレプリケーションサーバに切り替えることで可用性を確保できる機能。シャーディングはコレクションを分割して複数のDBに分散して保存することで同時読み込み、書き込み機能を向上させてスケールアウトする機能。
  
 ===== シャーディング ===== ===== シャーディング =====
-mongod、mongoc、mongosの3種類のサーバプロセスがある。以下は全てサーバをローカルで起動するための設定である。本来は各プロセスそれぞれ別のサーバ上立ち上げるものである。+mongod、mongoc、mongosの3種類のサーバプロセスがある。これらのプロセスは本来はそれぞれ別のサーバマシン立ち上げるものである。ここでは全てのプロセスをローカルで起動させる。
  
 ==== mongod ==== ==== mongod ====
-shardサーバ。データを格納する。2つ以上のロセス起動する。ここではとりあえず3プロセス立ち上げた+データを格納するshardサーバ 
 + 
 +**shardsvr**オションにture指定する。通常のmongod同じように設定する
 <code> <code>
 port = 27001 port = 27001
行 41: 行 43:
 </code> </code>
  
-**shardsvr**オプションにtureを指定する。他は通常のmongodと同じように設定する。+起動する。
  
 <code> <code>
行 50: 行 52:
  
 ==== 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>
行 80: 行 84:
 logappend = true logappend = true
 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});
行 117: 行 119:
 </code> </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.1356456048.txt.gz · 最終更新: 2012/12/25 17:20 by nullpon