3つの共通のMongoDBクラスタ、メインである、この記事では、コピー、レプリカセットと断片からメインコピーを簡単に紹介されますがあります。
私は初めについてお話しましょう、この記事で使用したコードの全ては、CentOSの7をテストするためにローカル・オペレーティング・システムのブロガーによってテストされています
まあ、公式は以下のスタート!
1.はじめに
マスタースレーブのレプリケーション(マスター/よだれ)は厳密にはおそらくない、本当に、クラスタを言えば、クラスタの問題を構築するための最も簡単な方法とみなすことができます
実際には、それだけされている同期マスタノードから1つまたは複数のデータノードを使用してのみ、全体の構造が複雑ではない、構築することも比較的簡単です
次のようにクラスタのマスタースレーブのレプリケーション機能は次のとおりです。
- バックアップマスターノードからノードへデータを使用して、データのセキュリティ
- 読み取りおよび書き込み操作がマスタノードで発生している、大きな圧力をもたらすマスターノード
- プライマリ・データベースがハングアップすると、クライアントは、データを読み書きするために続けることはできません
2は、設定します
以下は、ローカルで実行シンプルなシミュレーション、マスターノードからノードです
(1)のMongoDBをダウンロード
> su
> cd /root
> mkdir mongodb-master-slaver-cluster
> cd mongodb-master-slaver-cluster
> mkdir mongodb
> cd mongodb
> wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.7.tgz
> tar -zxvf mongodb-linux-x86_64-3.2.7.tgz
> cd ..
(2)マスタノードとよだれをシミュレートするために、それぞれ、2つのフォルダを作成します
> mkdir master # 主节点
> touch ./master/mongodb.conf
> mkdir ./master/log
> mkdir -p ./master/data/db
> mkdir slaver # 从节点
> touch ./slaver/mongodb.conf
> mkdir ./slaver/log
> mkdir -p ./slaver/data/db
作成したら、次のように、ディレクトリ構造は次のとおりです。
+ mongodb-master-slaver-cluster
+ mongodb
+ mongodb-linux-x86_64-3.2.7.tgz
+ mongodb-linux-x86_64-3.2.7
+ master
+ log
+ data
+ db
+ mongodb.conf
+ slaver
+ log
+ data
+ db
+ mongodb.conf
(3)設定ファイルを書きます
# master/mongodb.conf 文件内容
# 数据文件的存放位置
dbpath = /root/mongodb-master-slaver-cluster/master/data/db
# 日志文件的存放位置
logpath = /root/mongodb-master-slaver-cluster/master/log/mongodb.log
# 监听的端口,默认为 27017
port = 27001
# 以守护进程的方式运行 MongoDB
fork = true
# 确认本节点为 master 节点
master = true
# slaver/mongodb.conf 文件内容
# 数据文件的存放位置
dbpath = /root/mongodb-master-slaver-cluster/slaver/data/db
# 日志文件的存放位置
logpath = /root/mongodb-master-slaver-cluster/slaver/log/mongodb.log
# 监听的端口,默认为 27017
port = 27002
# 以守护进程的方式运行 MongoDB
fork = true
# 确认本节点为 slaver 节点
slave = true
# 指定数据同步来源,指向 master 节点
source = 127.0.0.1:27001
(4)は、それぞれ2つのデータベースを開きます
> cd /root/mongodb-master-slaver-cluster/mongodb/mongodb-linux-x86_64-3.2.7/bin/
> ./mongod -f /root/mongodb-master-slaver-cluster/master/mongodb.conf
> ./mongod -f /root/mongodb-master-slaver-cluster/slaver/mongodb.conf
これは、すべての権利、あなたは2つのプロセスがMongoDBのを実行している表示されるはずです。この時間になります
> ps aux | grep mongo
3、試験
メインデータベース、データ挿入(書き込み)に接続された新しい端末を開き、次に問い合わせを施し(読み取り)
> cd /root/mongodb-master-slaver-cluster/mongodb/mongodb-linux-x86_64-3.2.7/bin/
> ./mongo mongodb://127.0.0.1:27001/admin
> db.user.insert({'username': 'Alice', 'password': '123456'}) // 插入数据(可写)
// WriteResult({ "nInserted" : 1 })
> db.user.find() // 查询数据(可读)
// { "username" : "Alice", "password" : "123456" }
クエリが同期されているデータベースに接続されている他の端末を開いて(読んで)、その後、データベースからデータを挿入しよう(書き込みませ)
> cd /root/mongodb-master-slaver-cluster/mongodb/mongodb-linux-x86_64-3.2.7/bin/
> ./mongo mongodb://127.0.0.1:27002/admin
> rs.slaveOk() // 在查询之前需要先设置从节点状态
> db.user.find() // 查询数据(可读)
// { "username" : "Alice", "password" : "123456" }
> db.user.insert({'username': 'Bob', 'password': 'abc'}) // 插入数据(不可写)
// WriteResult({ "writeError" : { "code" : 10107, "errmsg" : "not master" } })
端末は、マニュアル閉マスタデータベースを開くために、マスタノードがハングアップシミュレーション
> cd /root/mongodb-master-slaver-cluster/mongodb/mongodb-linux-x86_64-3.2.7/bin/
> ./mongod --shutdown --dbpath /root/mongodb-master-slaver-cluster/master/data/db
その後、我々は、クエリをお送りしますまたはプライマリデータベース要求を挿入すると、エラー接続障害が表示されます
> db.user.find()
// network error while attempting to run command 'find' on host '127.0.0.1:27001'
[見て、記事のより多くのMongoDBシリーズを読むのMongoDBの研究ノート ]