実戦MongoDB-ReplicationのMaster-Slave
7586 ワード
実戦MongoDB
Replica Set
MongoDBは、異なるサービス間の非同期のデータレプリケーションをサポートし、failover(フェイルオーバー、フェイルオーバー、フェイルオーバー)and redundancy(データ冗長)を実現します.
同じ時間に、書き込みは1つのサービスノード(primaryまたはmaster)のみでサポートされます.
MongoDBでは、2つのレプリケーション・モードがサポートされています. Master/Slaveは、マスターとslaveを含むマスターからコピーされます. Replica Set、primaryとsecondaryを含むレプリケーションセットレプリケーション.
Master/Slaveの公式アドレスを紹介します.
http://www.mongodb.org/display/DOCS/Master+Slave
Replica Setの公式アドレスを紹介します.
http://www.mongodb.org/display/DOCS/Replica+Sets
今日実戦したのはmaster-slave、つまり主従複製です.
まずmongodを使用してサービスを起動し、起動に関するパラメータはhttp://www.mongodb.org/display/DOCS/Command+Line+Parametersページに関連する説明が表示されます.
プライマリ・スレーブ・レプリケーションに関するパラメータは、次のとおりです.
--masterは、現在のサービスがプライマリであることを示します.
--slaveは、現在のサービスが従であることを示します.
--source、プライマリ・サービスのアドレスを指定します.server:port形式です.
--onlyは、プライマリのみがコピーされている指定されたデータベースから、データベース名がdbで示されていることを示します.
起動サービスは、コマンドラインからパラメータの指定を1つずつ行うか、ファイルにパラメータを保存して起動時にこのファイルをサービスのプロファイルとして指定します.後見の方法は管理とメンテナンスが容易で、使用を推奨します.
まずプライマリ・サービスを構成します.
構成されたパラメータは、上記のように、上のパラメータを1つのファイルにコピーして【master 1.conf】と名付け、次のコマンドを使用してプライマリ・サービスを開始します.
上はwindowsで起動したコマンドです.
ubuntuで使用する場合は、confファイルが/home/andyshi/master 1/ディレクトリに格納されていると仮定し、confファイルの内容を以下に変更します.
次のコマンドを使用してプライマリ・サービスを開始します.
皆さんは気づきました.主な違いはカタログの場所です.注意すればいいです.
次にmongoというクライアントを使用して構成結果をテストしたり、python+pymongoを使用してテストしたりすることができます.ついでにpython+pymongoの使用を熟知してください.
クライアントテスト環境ではubuntu+python 2を使用しています.7+pymongo2.1.
端末に入力
IP(または名前)とポート番号を指定します.書き込みを行うため、プライマリ・サービスに接続する必要があります.次のデータを書き込んでみます.
挿入に成功したら、サービスから同じデータがあるかどうかを確認します.
問題がなければ、3001というサービスから同じ場所にも同じデータが存在し、レプリケーションに成功し、構成に問題がないことを示します.
プライマリ・スレーブ関係を確立すると、プライマリ・サービスのlocalデータベースにslavesセットがあり、現在のプライマリ・サービスのすべてのセカンダリ・サービスが格納されます.
したがって、サービスからのlocalデータベースには、現在のslaveのmaster情報、すなわちプロファイル内のsourceパラメータで指定された情報を格納するsourcesセットがあります.
コレクションの表示
useコマンドをlocalデータベースに切り替え、
showコマンドはlocalデータベースのすべてのセットを表示します.
診断機能
マスターでの使用
最初の同期イベントの時間、最後の同期イベントの時間、および現在の時間を印刷できます.
slaveで使用
マスターのアドレスと前回の同期時間を印刷できます.
安全
mongodサービスを起動するときに、authを使用するセキュリティ検証が必要なパラメータを指定した場合は、masterとslaveのlocalデータベースに同じユーザーを追加する必要があります.
addUserコマンドには3つのパラメータがあり、1つ目はアカウントにログインし、2つ目はパスワードで、3つ目は読み取り専用かどうか、オプションパラメータで、デフォルト値はfalseです.すなわちreadonlyパラメータを指定しないと、追加したユーザは書き込み権限を持ち、readonly=trueを指定して追加したユーザは読み取り専用ユーザである.
master-slaveを用いて読み書き分離を実現し,masterを書き,slaveを読み取ることができる.しかし残念なことに、masterが切れていると書き込み操作ができなくなり、slaveからデータを読み取るしかありません.この場合、slaveを手動で停止し、起動パラメータを変更してmasterに起動するとともに、他のslaveがこの新しいmasterを指していることを更新する必要があります.
Replica Set
MongoDBは、異なるサービス間の非同期のデータレプリケーションをサポートし、failover(フェイルオーバー、フェイルオーバー、フェイルオーバー)and redundancy(データ冗長)を実現します.
同じ時間に、書き込みは1つのサービスノード(primaryまたはmaster)のみでサポートされます.
MongoDBでは、2つのレプリケーション・モードがサポートされています.
Master/Slaveの公式アドレスを紹介します.
http://www.mongodb.org/display/DOCS/Master+Slave
Replica Setの公式アドレスを紹介します.
http://www.mongodb.org/display/DOCS/Replica+Sets
今日実戦したのはmaster-slave、つまり主従複製です.
まずmongodを使用してサービスを起動し、起動に関するパラメータはhttp://www.mongodb.org/display/DOCS/Command+Line+Parametersページに関連する説明が表示されます.
プライマリ・スレーブ・レプリケーションに関するパラメータは、次のとおりです.
--masterは、現在のサービスがプライマリであることを示します.
--slaveは、現在のサービスが従であることを示します.
--source、プライマリ・サービスのアドレスを指定します.server:port形式です.
--onlyは、プライマリのみがコピーされている指定されたデータベースから、データベース名がdbで示されていることを示します.
起動サービスは、コマンドラインからパラメータの指定を1つずつ行うか、ファイルにパラメータを保存して起動時にこのファイルをサービスのプロファイルとして指定します.後見の方法は管理とメンテナンスが容易で、使用を推奨します.
まずプライマリ・サービスを構成します.
- port=30000
- ddbpath=d:\mongodb\master1
- directoryperdb=true
- logpath=d:\mongodb\master1\log.log
- logappend=true
- master=true
- bind_ip=192.168.0.111
構成されたパラメータは、上記のように、上のパラメータを1つのファイルにコピーして【master 1.conf】と名付け、次のコマンドを使用してプライマリ・サービスを開始します.
- d:\mongodb\bin\mongod --config=d:\mongodb\master1\master1.conf
上はwindowsで起動したコマンドです.
ubuntuで使用する場合は、confファイルが/home/andyshi/master 1/ディレクトリに格納されていると仮定し、confファイルの内容を以下に変更します.
- port=30000
- dbpath=/home/andyshi/master1
- directoryperdb=true
- logpath=/home/andyshi/master1/log.log
- logappend=true
- master=true
- bind_ip=192.168.0.111
次のコマンドを使用してプライマリ・サービスを開始します.
- mongod --conf=/home/andyshi/master1/master1.conf
皆さんは気づきました.主な違いはカタログの場所です.注意すればいいです.
次にmongoというクライアントを使用して構成結果をテストしたり、python+pymongoを使用してテストしたりすることができます.ついでにpython+pymongoの使用を熟知してください.
クライアントテスト環境ではubuntu+python 2を使用しています.7+pymongo2.1.
端末に入力
- mongo 192.168.0.111:30000
IP(または名前)とポート番号を指定します.書き込みを行うため、プライマリ・サービスに接続する必要があります.次のデータを書き込んでみます.
- // test
- use test
- //
- db.book.insert({'author':'shiwenbin'})
- //
- db.test.find()
挿入に成功したら、サービスから同じデータがあるかどうかを確認します.
- mongo 192.168.0.111:30001
-
- use test
- show collections
- db.book.find()
問題がなければ、3001というサービスから同じ場所にも同じデータが存在し、レプリケーションに成功し、構成に問題がないことを示します.
プライマリ・スレーブ関係を確立すると、プライマリ・サービスのlocalデータベースにslavesセットがあり、現在のプライマリ・サービスのすべてのセカンダリ・サービスが格納されます.
したがって、サービスからのlocalデータベースには、現在のslaveのmaster情報、すなわちプロファイル内のsourceパラメータで指定された情報を格納するsourcesセットがあります.
コレクションの表示
- use local
useコマンドをlocalデータベースに切り替え、
- show collections
showコマンドはlocalデータベースのすべてのセットを表示します.
診断機能
マスターでの使用
- db.printReplicationInfo()
最初の同期イベントの時間、最後の同期イベントの時間、および現在の時間を印刷できます.
slaveで使用
- db.printSalveReplicationInfo()
マスターのアドレスと前回の同期時間を印刷できます.
安全
mongodサービスを起動するときに、authを使用するセキュリティ検証が必要なパラメータを指定した場合は、masterとslaveのlocalデータベースに同じユーザーを追加する必要があります.
- use local
- db.addUser('user1','123.com')
addUserコマンドには3つのパラメータがあり、1つ目はアカウントにログインし、2つ目はパスワードで、3つ目は読み取り専用かどうか、オプションパラメータで、デフォルト値はfalseです.すなわちreadonlyパラメータを指定しないと、追加したユーザは書き込み権限を持ち、readonly=trueを指定して追加したユーザは読み取り専用ユーザである.
master-slaveを用いて読み書き分離を実現し,masterを書き,slaveを読み取ることができる.しかし残念なことに、masterが切れていると書き込み操作ができなくなり、slaveからデータを読み取るしかありません.この場合、slaveを手動で停止し、起動パラメータを変更してmasterに起動するとともに、他のslaveがこの新しいmasterを指していることを更新する必要があります.