一、概述
成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),嶗山網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:嶗山等地區(qū)。嶗山做網(wǎng)站價(jià)格咨詢:028-86922220
(1)MongoDB復(fù)制是將數(shù)據(jù)同步在多個(gè)服務(wù)器的過程。
(2)復(fù)制提供了數(shù)據(jù)的冗余備份,并在多個(gè)服務(wù)器上存儲(chǔ)數(shù)據(jù)副本,提高了數(shù)據(jù)的可用性, 并可以保證數(shù)據(jù)的安全性。
(3)復(fù)制還允許您從硬件故障和服務(wù)中斷中恢復(fù)數(shù)據(jù)。
注意:MongoDB Atlas上托管的所有數(shù)據(jù)庫都配置為副本集。Atlas可以輕松添加和刪除首選云提供商的任何區(qū)域中的副本集成員;副本集提供冗余和高可用性,是所有生產(chǎn)部署的基礎(chǔ)。
1、冗余和數(shù)據(jù)可用性
復(fù)制提供冗余并提高數(shù)據(jù)可用性。通過在不同數(shù)據(jù)庫服務(wù)器上提供多個(gè)數(shù)據(jù)副本,復(fù)制可提供一定程度的容錯(cuò)能力,以防止丟失單個(gè)數(shù)據(jù)庫服務(wù)器。
在某些情況下,復(fù)制可以提供增加的讀取容量,因?yàn)榭蛻舳丝梢詫⒆x取操作發(fā)送到不同的服 在不同數(shù)據(jù)中心維護(hù)數(shù)據(jù)副本可以增加分布式應(yīng)用程序的數(shù)據(jù)位置和可用性。您還可以為專用目的維護(hù)其他副本,例如災(zāi)難恢復(fù),報(bào)告或備份。
2、MongoDB復(fù)制原理
(1)mongodb的復(fù)制至少需要兩個(gè)節(jié)點(diǎn)。其中一個(gè)是主節(jié)點(diǎn),負(fù)責(zé)處理客戶端請(qǐng)求,其余的都是從節(jié)點(diǎn),負(fù)責(zé)復(fù)制主節(jié)點(diǎn)上的數(shù)據(jù)。
(2)mongodb各個(gè)節(jié)點(diǎn)常見的搭配方式為:一主一從、一主多從。
(3)主節(jié)點(diǎn)記錄在其上的所有操作oplog,從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲取這些操作,然后對(duì)自己的數(shù)據(jù)副本執(zhí)行這些操作,從而保證從節(jié)點(diǎn)的數(shù)據(jù)與主節(jié)點(diǎn)一致。
MongoDB復(fù)制結(jié)構(gòu)圖如下所示:
以上結(jié)構(gòu)圖中,客戶端從主節(jié)點(diǎn)讀取數(shù)據(jù),在客戶端寫入數(shù)據(jù)到主節(jié)點(diǎn)時(shí), 主節(jié)點(diǎn)與從節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互保障數(shù)據(jù)的一致性。
副本集特征:
(1)N 個(gè)節(jié)點(diǎn)的集群
(2)任何節(jié)點(diǎn)可作為主節(jié)點(diǎn)
(3)所有寫入操作都在主節(jié)點(diǎn)上
(4)自動(dòng)故障轉(zhuǎn)移
(5)自動(dòng)恢復(fù)
3、副本集成員
(1)primary:主服務(wù)器是副本集中唯一接收寫入操作的成員。MongoDB在主服務(wù)器上應(yīng)用寫操作,然后在主服務(wù)器的oplog上記錄操作。輔助成員復(fù)制此日志并將操作應(yīng)用于其數(shù)據(jù)集。
(2)secondary:輔助節(jié)點(diǎn)從主節(jié)點(diǎn)復(fù)制操作以維護(hù)相同的數(shù)據(jù)集。輔助節(jié)點(diǎn)可能具有特殊使用配置文件的其他配置。例如:輔助可以是非投票或 優(yōu)先級(jí)0。
1)優(yōu)先級(jí)0副本集成員
不能成為主要的和不能觸發(fā) 選舉。除此之外,具有 正常輔助功能的輔助設(shè)備:它們維護(hù)數(shù)據(jù)集的副本,接受讀取操作,并在選舉中投票。
2)隱藏副本集成員
隱藏成員維護(hù)主 數(shù)據(jù)集的副本,但對(duì)客戶端應(yīng)用程序不可見。隱藏成員適用于具有與副本集中其他成員不同的使用模式的工作負(fù)載。隱藏成員必須始終 優(yōu)先為0成員,因此不能成為主要成員。該db.isMaster()方法不顯示隱藏的成員。然而,隱藏的成員可能會(huì)在 選舉中投票。
備注:在分片群集中,mongos不要與隱藏成員交互。
3)延遲副本集成員
延遲成員包含副本集數(shù)據(jù)集的副本。但是,延遲成員的數(shù)據(jù)集反映了該集合的早期或延遲狀態(tài)。
注意事項(xiàng):
要求:
必須是 優(yōu)先級(jí)為0的 成員。將優(yōu)先級(jí)設(shè)置為0以防止延遲成員成為主要成員。
應(yīng)該是 隱藏的 成員。始終阻止應(yīng)用程序查看和查詢延遲的成員。
做到在投票選舉為primary,若members[n].votes設(shè)置為1。
行為:
延遲成員在延遲時(shí)從源oplog復(fù)制和應(yīng)用操作。在選擇延遲量時(shí),請(qǐng)考慮延遲量:
必須等于或大于預(yù)期的維護(hù)窗口持續(xù)時(shí)間。
必須小于 oplog的容量。
(3)arbiter:仲裁器不具有數(shù)據(jù)集的副本,并不能成為主要的。副本集可能有仲裁者在主要選舉中添加投票 。仲裁者 總是擁有恰當(dāng)?shù)?選舉投票,因此允許副本集具有不均勻的投票成員數(shù),而不會(huì)產(chǎn)生復(fù)制數(shù)據(jù)的額外成員的開銷。
補(bǔ)充:
副本集的最小建議配置是三個(gè)成員副本集,其中包含三個(gè)數(shù)據(jù)承載成員:一個(gè)主成員和兩個(gè)輔助成員。您也可以部署具有兩個(gè)數(shù)據(jù)承載成員的三成員副本集:主要成員,輔助成員 和仲裁者,但具有至少三個(gè)數(shù)據(jù)承載成員的副本集提供更好的冗余。
副本集最多可包含50個(gè)成員,但只有7個(gè)投票成員。
二、mongodb集群(副本集模式)
1、數(shù)據(jù)庫環(huán)境
主機(jī)名 | 數(shù)據(jù)庫IP地址 | 數(shù)據(jù)庫版本 | 端口 | 用途 | 系統(tǒng) |
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、暫時(shí)關(guān)閉防火墻和seliunx,測(cè)試完畢再開啟安全規(guī)則
3、下載mongdb包
官方地址:https://www.mongodb.com/download-center/v2/community
4、上傳包解壓并創(chuàng)建目錄
(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)創(chuàng)建目錄
[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、新建配置文件
參數(shù)詳細(xì)說明: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 //節(jié)點(diǎn)間用戶驗(yàn)證文件,內(nèi)容必須一致,權(quán)限600,僅副本集模式有效
directoryperdb=true //數(shù)據(jù)庫是否分目錄存放
logappend=true //日志追加方式存放
replSet=google //Replica set的名字
bind_ip=192.168.56.147
port=27017
#auth=true
oplogSize=100 //設(shè)置oplog的大小,單位MB
fork=true //啟動(dòng)到后臺(tái),守護(hù)進(jìn)程方式啟動(dòng)
noprealloc=true
#maxConns=4000
(2)備節(jié)點(diǎn)
[root@node01 ~]# cat /etc/mongodb/secondary.conf
(3)仲裁節(jié)點(diǎn)
6、啟動(dòng)服務(wù)
# ./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、將節(jié)點(diǎn)配置組成集群
在任意節(jié)點(diǎn)啟動(dòng)配置,這里使用SQL_jiangjj節(jié)點(diǎn)
登錄數(shù)據(jù)庫
[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參數(shù)不沖突,_id為Replica Set名字,members里面的優(yōu)先級(jí)priority值高的為主節(jié)點(diǎn);
(2)對(duì)于仲裁點(diǎn)一定要加上arbiterOnly:true,否則主備模式不生效。
# 查看是否生效:> rs.status()
下面會(huì)顯示字樣:"ok" : 1
8、測(cè)試
(1)新建庫
> use jiangjj
(2)插入文檔
> db.jiangjj.insert({"name":"jiangjj"},{"titile":"標(biāo)題行"},{"content":"副本集測(cè)試"})
查看兩個(gè)節(jié)點(diǎn)數(shù)據(jù)
備注:重啟系統(tǒng)后服務(wù)不會(huì)自啟,如需請(qǐng)自行配置開啟自啟即可
三、副本集用戶驗(yàn)證設(shè)置
1、創(chuàng)建驗(yàn)證秘鑰文件
keyFile文件的作用: 集群之間的安全認(rèn)證,增加安全認(rèn)證機(jī)制KeyFile(開啟keyfile認(rèn)證就默認(rèn)開啟了auth認(rèn)證了,為了保證后面可以登錄,我已創(chuàng)建了用戶)
# touch .keyFile
# chmod 600 .keyFile
# openssl rand -base64 102 > .keyFile
102:是文件大小
注意:創(chuàng)建keyFile前,需要先停掉副本集中所有主從節(jié)點(diǎn)的mongod服務(wù),然后再創(chuàng)建,否則有可能出現(xiàn)服務(wù)啟動(dòng)不了的情況。
2、在主副本上添加兩個(gè)用戶
user01:PRIMARY> use admin
user01:PRIMARY> use jiangjj
3、更新所有節(jié)點(diǎn)配置文件
keyFile=/home/data/.keyFile
auth=true
4、啟動(dòng)副本集,測(cè)試
登錄驗(yàn)證
root用戶
查看數(shù)據(jù)
驗(yàn)證jiangjj用戶
權(quán)限配置詳細(xì)請(qǐng)參考官方文檔
當(dāng)前文章:mongodb集群-副本集(CSRS)
網(wǎng)站網(wǎng)址:http://bm7419.com/article36/pceppg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、App設(shè)計(jì)、域名注冊(cè)、App開發(fā)、企業(yè)建站、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)