您好,登錄后才能下訂單哦!
一、概述
(2)復制提供了數據的冗余備份,并在多個服務器上存儲數據副本,提高了數據的可用性, 并可以保證數據的安全性。
(3)復制還允許您從硬件故障和服務中斷中恢復數據。
注意:MongoDB Atlas上托管的所有數據庫都配置為副本集。Atlas可以輕松添加和刪除首選云提供商的任何區域中的副本集成員;副本集提供冗余和高可用性,是所有生產部署的基礎。
1、冗余和數據可用性
復制提供冗余并提高數據可用性。通過在不同數據庫服務器上提供多個數據副本,復制可提供一定程度的容錯能力,以防止丟失單個數據庫服務器。
在某些情況下,復制可以提供增加的讀取容量,因為客戶端可以將讀取操作發送到不同的服 在不同數據中心維護數據副本可以增加分布式應用程序的數據位置和可用性。您還可以為專用目的維護其他副本,例如災難恢復,報告或備份。
2、MongoDB復制原理
(1)mongodb的復制至少需要兩個節點。其中一個是主節點,負責處理客戶端請求,其余的都是從節點,負責復制主節點上的數據。
(2)mongodb各個節點常見的搭配方式為:一主一從、一主多從。
(3)主節點記錄在其上的所有操作oplog,從節點定期輪詢主節點獲取這些操作,然后對自己的數據副本執行這些操作,從而保證從節點的數據與主節點一致。
MongoDB復制結構圖如下所示:
以上結構圖中,客戶端從主節點讀取數據,在客戶端寫入數據到主節點時, 主節點與從節點進行數據交互保障數據的一致性。
副本集特征:
(1)N 個節點的集群
(2)任何節點可作為主節點
(3)所有寫入操作都在主節點上
(4)自動故障轉移
(5)自動恢復
3、副本集成員
(1)primary:主服務器是副本集中唯一接收寫入操作的成員。MongoDB在主服務器上應用寫操作,然后在主服務器的oplog上記錄操作。輔助成員復制此日志并將操作應用于其數據集。
(2)secondary:輔助節點從主節點復制操作以維護相同的數據集。輔助節點可能具有特殊使用配置文件的其他配置。例如:輔助可以是非投票或 優先級0。
1)優先級0副本集成員
不能成為主要的和不能觸發 選舉。除此之外,具有 正常輔助功能的輔助設備:它們維護數據集的副本,接受讀取操作,并在選舉中投票。
2)隱藏副本集成員
隱藏成員維護主 數據集的副本,但對客戶端應用程序不可見。隱藏成員適用于具有與副本集中其他成員不同的使用模式的工作負載。隱藏成員必須始終 優先為0成員,因此不能成為主要成員。該db.isMaster()方法不顯示隱藏的成員。然而,隱藏的成員可能會在 選舉中投票。
備注:在分片群集中,mongos不要與隱藏成員交互。
3)延遲副本集成員
延遲成員包含副本集數據集的副本。但是,延遲成員的數據集反映了該集合的早期或延遲狀態。
注意事項:
要求:
必須是 優先級為0的 成員。將優先級設置為0以防止延遲成員成為主要成員。
應該是 隱藏的 成員。始終阻止應用程序查看和查詢延遲的成員。
做到在投票選舉為primary,若members[n].votes設置為1。
行為:
延遲成員在延遲時從源oplog復制和應用操作。在選擇延遲量時,請考慮延遲量:
必須等于或大于預期的維護窗口持續時間。
必須小于 oplog的容量。
(3)arbiter:仲裁器不具有數據集的副本,并不能成為主要的。副本集可能有仲裁者在主要選舉中添加投票 。仲裁者 總是擁有恰當的1選舉投票,因此允許副本集具有不均勻的投票成員數,而不會產生復制數據的額外成員的開銷。
補充:
副本集的最小建議配置是三個成員副本集,其中包含三個數據承載成員:一個主成員和兩個輔助成員。您也可以部署具有兩個數據承載成員的三成員副本集:主要成員,輔助成員 和仲裁者,但具有至少三個數據承載成員的副本集提供更好的冗余。
副本集最多可包含50個成員,但只有7個投票成員。
二、mongodb集群(副本集模式)
1、數據庫環境
主機名 | 數據庫IP地址 | 數據庫版本 | 端口 | 用途 | 系統 |
SQL_jiangjj | 192.168.56.147 | mongodb4.0.3 | 27017 | primary(主) | cenots7.4 |
node01 | 192.168.56.242 | mongodb4.0.3 | 27017 | secondary(備) | centos7.4 |
node01 | 192.168.56.245 | mongodb4.0.3 | 27017 | arbiter(仲裁) | centos7.5 |
2、暫時關閉防火墻和seliunx,測試完畢再開啟安全規則
3、下載mongdb包
官方地址:https://www.mongodb.com/download-center/v2/community
4、上傳包解壓并創建目錄
(1)解壓
# tar -zxvf mongodb-linux-x86_64-rhel70-4.0.3.tgz
# mv mongodb-linux-x86_64-rhel70-4.0.3 mongodb
同樣的,在node01和node02上也解壓并改名(略)
(2)創建目錄
[root@SQL_jiangjj ~]# mkdir -p /home/mongodb/primary
[root@SQL_jiangjj ~]# mkdir -p /etc/mongodb/
[root@node01 ~]# mkdir -p /home/mongodb/secondary/
[root@node01 ~]# mkdir -p /etc/mongodb/
[root@node02 ~]# mkdir -p /home/mongodb/arbiter/
[root@node02 ~]# mkdir -p /etc/mongodb/
5、新建配置文件
參數詳細說明:https://my.oschina.net/pwd/blog/399374
(1)主配置文件
# vim /etc/mongodb/primary.conf
#PRIMARY.CONF
dbpath=/home/mongodb/primary
logpath=/home/mongodb/primary.log
pidfilepath=/home/mongodb/primary.pid
#keyFile=/home/mongodb/mongodb.key //節點間用戶驗證文件,內容必須一致,權限600,僅副本集模式有效
directoryperdb=true //數據庫是否分目錄存放
logappend=true //日志追加方式存放
replSet=google //Replica set的名字
bind_ip=192.168.56.147
port=27017
#auth=true
oplogSize=100 //設置oplog的大小,單位MB
fork=true //啟動到后臺,守護進程方式啟動
noprealloc=true
#maxConns=4000
(2)備節點
[root@node01 ~]# cat /etc/mongodb/secondary.conf
(3)仲裁節點
6、啟動服務
# ./mongodb/bin/mongod -f /etc/mongodb/primary.conf
[root@node01 ~]# ./mongodb/bin/mongod -f /etc/mongodb/secondary.conf
[root@node02 ~]# ./mongodb/bin/mongod -f /etc/mongodb/arbiter.conf
7、將節點配置組成集群
在任意節點啟動配置,這里使用SQL_jiangjj節點
登錄數據庫
[root@SQL_jiangjj ~]# ./mongodb/bin/mongo 192.168.56.147:27017
> use admin
> cfg={ _id:"google",members:[{_id:0,host:'192.168.56.147:27017',priority:2},{_id:1,host:'192.168.56.242:27017',priority:1},{_id:2,host:'192.168.56.245:27017',arbiterOnly:true}] };
#配置生效命令
> rs.initiate(cfg)
說明:
(1)cfg名字可選,只要跟mongodb參數不沖突,_id為Replica Set名字,members里面的優先級priority值高的為主節點;
(2)對于仲裁點一定要加上arbiterOnly:true,否則主備模式不生效。
# 查看是否生效:> rs.status()
下面會顯示字樣:"ok" : 1
8、測試
(1)新建庫
> use jiangjj
(2)插入文檔
> db.jiangjj.insert({"name":"jiangjj"},{"titile":"標題行"},{"content":"副本集測試"})
查看兩個節點數據
備注:重啟系統后服務不會自啟,如需請自行配置開啟自啟即可
三、副本集用戶驗證設置
1、創建驗證秘鑰文件
keyFile文件的作用: 集群之間的安全認證,增加安全認證機制KeyFile(開啟keyfile認證就默認開啟了auth認證了,為了保證后面可以登錄,我已創建了用戶)
# touch .keyFile
# chmod 600 .keyFile
# openssl rand -base64 102 > .keyFile
102:是文件大小
注意:創建keyFile前,需要先停掉副本集中所有主從節點的mongod服務,然后再創建,否則有可能出現服務啟動不了的情況。
2、在主副本上添加兩個用戶
user01:PRIMARY> use admin
user01:PRIMARY> use jiangjj
3、更新所有節點配置文件
keyFile=/home/data/.keyFile
auth=true
4、啟動副本集,測試
登錄驗證
root用戶
查看數據
驗證jiangjj用戶
權限配置詳細請參考官方文檔
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。