mongodb集群-副本集(CSRS)

一、概述

成都創(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)圖如下所示:

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

以上結(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

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

同樣的,在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

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

(2)備節(jié)點(diǎn)

[root@node01 ~]# cat /etc/mongodb/secondary.conf

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

(3)仲裁節(jié)點(diǎn)

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

6、啟動(dòng)服務(wù)

# ./mongodb/bin/mongod -f /etc/mongodb/primary.conf

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

[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}] };

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

#配置生效命令

> rs.initiate(cfg)

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

說明:

(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è)試"})

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

查看兩個(gè)節(jié)點(diǎn)數(shù)據(jù)

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

備注:重啟系統(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

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

user01:PRIMARY> use jiangjj

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

3、更新所有節(jié)點(diǎn)配置文件

keyFile=/home/data/.keyFile

auth=true

4、啟動(dòng)副本集,測(cè)試

登錄驗(yàn)證

root用戶

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

查看數(shù)據(jù)

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

驗(yàn)證jiangjj用戶

mongodb集群-副本集(CSRS)mongodb集群-副本集(CSRS)

權(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)

微信小程序開發(fā)