一 MongoDB成員
1.1 常見特殊member
Secondary存在一些特殊的成員類型:
1 Priority 0 #不能升爲主,能夠用於多數據中心場景
1 Hidden #對客戶端來講是不可見的,通常用做備份或統計報告用
1 Delayed #數據比副集晚,通常用做 rolling backup 或歷史快照
二 添加備份節點
2.1 前期準備
本實驗基於《006.MongoDB複製(副本集)》。
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u clusteradmin -p clusteradmin
2 my_rep:PRIMARY> rs.remove("172.24.8.74:27017")
3 my_rep:PRIMARY> rs.remove("172.24.8.73:27017")
執行以上操做,使副本集達到如下規劃:
主機名
|
IP
|
類型
|
備註
|
mongodb01
|
172.24.8.71
|
primary
|
主節點
|
mongodb02
|
172.24.8.72
|
secondary
|
備節點
|
arbiter
|
172.24.8.75
|
arbiter
|
衝裁節點
|
副本集特殊成員規劃:
主機名
|
IP
|
類型
|
備註
|
mongodb01
|
172.24.8.71
|
primary
|
主節點
|
mongodb02
|
172.24.8.72
|
secondary
|
備節點
|
arbiter
|
172.24.8.75
|
arbiter
|
衝裁節點
|
mongodb03
|
172.24.8.73
|
hidden
|
備份節點
|
2.3 添加備份節點
1 my_rep:PRIMARY> rs.add({"host":"172.24.8.73:27017","priority":0,"hidden":true})
1 my_rep:PRIMARY> rs.conf()
2.4 測試備份節點
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u admin -p admin
2 my_rep:PRIMARY> use mydb
3 my_rep:PRIMARY> show tables
4 age01
5 my_rep:PRIMARY> lisi_age=({name: 'lisi', age: '19', tel: '123456782', love: ['apple','orange']})
6 my_rep:PRIMARY> db.age01.insert(lisi_age)
7 [root@mongodb01 ~]# mongo --host 172.24.8.73 -u admin -p admin #登陸備份節點
8 my_rep:SECONDARY> rs.slaveOk()
9 my_rep:SECONDARY> show tables
10 age01
11 my_rep:SECONDARY> db.age01.find().pretty()
三 添加延遲節點
3.1 前期準備
本實驗基於《006.MongoDB複製(副本集)》。
3.2 確認狀態
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u clusteradmin -p clusteradmin
2 my_rep:PRIMARY> rs.remove("172.24.8.73:27017")
執行以上操做,使副本集達到如下規劃:
主機名
|
IP
|
類型
|
備註
|
mongodb01
|
172.24.8.71
|
primary
|
主節點
|
mongodb02
|
172.24.8.72
|
secondary
|
備節點
|
arbiter
|
172.24.8.75
|
arbiter
|
衝裁節點
|
副本集特殊成員規劃:
主機名
|
IP
|
類型
|
備註
|
mongodb01
|
172.24.8.71
|
primary
|
主節點
|
mongodb02
|
172.24.8.72
|
secondary
|
備節點
|
arbiter
|
172.24.8.75
|
arbiter
|
衝裁節點
|
mongodb03
|
172.24.8.73
|
hidden
|
備份節點
|
mongodb04
|
172.24.8.74
|
Delayed
|
延時節點
|
3.3 添加延時節點
1 my_rep:PRIMARY> rs.add({"host":"172.24.8.74:27017","priority":0,"hidden":true,"slaveDelay":60})
1 my_rep:PRIMARY> rs.conf()
3.4 測試備份節點
1 [root@mongodb01 ~]# mongo --host 172.24.8.71 -u admin -p admin
2 my_rep:PRIMARY> use mydb
3 my_rep:PRIMARY> show tables
4 age01
5 my_rep:PRIMARY> db.age01.insertMany([{name: 'mazi', age: '15', tel: '123456784', love: ['pear','apple']},{name: 'xiaoming', age: '8', tel: '123456785', love: ['apple','grape']}])
6 [root@mongodb01 ~]# mongo --host 172.24.8.74 -u admin -p admin #登陸備份節點
7 my_rep:SECONDARY> rs.slaveOk()
8 my_rep:SECONDARY> show tables
9 age01
10 my_rep:SECONDARY> db.age01.find().pretty()
1 my_rep:SECONDARY> db.age01.find().pretty() #等待60秒再次查看
四 其餘特殊節點
4.1 更多成員類型
Secondary-Only:不能成爲primary節點,只能做爲secondary副本節點,防止一些性能不高的節點成爲主節點。
Non-Voting:沒有選舉權的secondary節點,純粹的備份數據節點。
|
成爲primary
|
對客戶端可見
|
參與投票
|
延遲同步
|
複製數據
|
Default
|
√
|
√
|
√
|
x
|
√
|
Secondary-Only
|
x
|
√
|
√
|
x
|
√
|
Hidden
|
x
|
x
|
√
|
x
|
√
|
Delayed
|
x
|
√
|
√
|
√
|
√
|
Arbiters
|
x
|
x
|
√
|
x
|
x
|
Non-Voting
|
√
|
√
|
x
|
x
|
√
|
參考文檔:https://www.cnblogs.com/zhoujinyi/p/3554010.html