標籤:
replicattion set 就是多台伺服器維護相同的資料副本,提高伺服器的可用性.
Replication set 設定全過程
0:建立目錄
mkdir -p /data/r0 /data/r1 /data/r2
1:啟動3個執行個體,且聲明執行個體屬於某複製集
./bin/mongod --port 27017 --dbpath /data/r0 --smallfiles --replSet rsa --fork --logpath /var/log/mongo17.log
./bin/mongod --port 27018 --dbpath /data/r1 --smallfiles --replSet rsa --fork --logpath /var/log/mongo18.log
./bin/mongod --port 27019 --dbpath /data/r2 --smallfiles --replSet rsa --fork --logpath /var/log/mongo19.log
2:啟動mongo.exe,隨意串連一個伺服器,啟動配置
use admin
var rsconf = {
_id:‘rsa‘,
members:
[
{
_id:0,
host:‘127.0.0.1:27017‘
},
{
_id:1,
host:‘127.0.0.1:27018‘
},
{
_id:2,
host:‘127.0.0.1:27019‘
}
]
}
3: 根據配置做初始化
rs.initiate(rsconf);
4:查看狀態
rs.status();
我們得到了三個節點"stateStr" : "SECONDARY", "stateStr" : "SECONDARY", "stateStr" : "PRIMARY",
5: 添加節點
rs.add(‘192.168.1.201:27018‘);
rs.add(‘192.168.1.201:27019‘);
6:刪除節點
rs.remove(‘192.168.1.201:27019‘);
7:主節點插入資料
>use test
>db.user.insert({uid:1,name:‘lily‘});
8:串連secondary查詢同步情況
./bin/mongo --port 27019
>use test
>show collections;
rsa:SECONDARY> show collections;
2015-11-10T21:56:14.075+0800 E QUERY Error: listDatabases failed:{ "note" : "
from execCommand", "ok" : 0, "errmsg" : "not master" }
at Error (<anonymous>)
at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
at shellHelper.show (src/mongo/shell/utils.js:630:33)
at shellHelper (src/mongo/shell/utils.js:524:36)
at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47
8.1 出現上述錯誤,是因為slave預設不許讀寫
>rs.slaveOk();
>show collections;
看到與primary 一致的資料
MongoDB replication set複製集(主從複製)(8)