真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MongoDB復(fù)制集部署和基本管理

MongoDB復(fù)制集部署和基本管理

MongoDB復(fù)制集概述

復(fù)制集(Replica Sets)是額外的數(shù)據(jù)副本,是跨多個(gè)服務(wù)器同步數(shù)據(jù)的過(guò)程,復(fù)制集提供了冗余并增加了數(shù)據(jù)的可用性,通過(guò)復(fù)制集可以對(duì)硬件故障和中斷服務(wù)進(jìn)行恢復(fù)。

創(chuàng)新互聯(lián)建站主打移動(dòng)網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名與空間、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

復(fù)制集由下列優(yōu)點(diǎn):

  • 讓數(shù)據(jù)更安全
  • 高數(shù)據(jù)可用性(7*24)
  • 災(zāi)難恢復(fù)
  • 無(wú)停機(jī)維護(hù)(如備份、索引重建、故障轉(zhuǎn)移)
  • 讀縮放(額外的副本讀?。?/li>
  • 副本集對(duì)應(yīng)用程序是透明的

    復(fù)制集工作原理

    MongoDB的復(fù)制集至少需要兩個(gè)節(jié)點(diǎn)。其中一個(gè)節(jié)點(diǎn)是主節(jié)點(diǎn)(Primary),負(fù)責(zé)處理客戶端的請(qǐng)求,其余的都是從節(jié)點(diǎn)(Serondary),負(fù)責(zé)復(fù)制主節(jié)點(diǎn)上的數(shù)據(jù)。

MongoDB各個(gè)節(jié)點(diǎn)常見(jiàn)的搭配方式為:一主一從或者一主多從。主節(jié)點(diǎn)記錄所有打操作到oplog中,從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲取這些操作,然后對(duì)自己的數(shù)據(jù)副本執(zhí)行這些操作。從而保證從節(jié)點(diǎn)的數(shù)據(jù)與主節(jié)點(diǎn)一致。如下圖所示:

客戶端在主節(jié)點(diǎn)寫入數(shù)據(jù),在主節(jié)點(diǎn)寫入數(shù)據(jù),主節(jié)點(diǎn)與從節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互保證數(shù)據(jù)的一致性。如果其中一個(gè)節(jié)點(diǎn)出現(xiàn)故障,其他節(jié)點(diǎn)馬上會(huì)將業(yè)務(wù)接過(guò)來(lái),無(wú)需停機(jī)操作。

MongoDB復(fù)制集部署

配置多個(gè)實(shí)例

在上一篇的博客中已經(jīng)講解了MongoDB開(kāi)啟多實(shí)例的方法,這里就不多贅述,我們用相同的方法創(chuàng)建了四個(gè)MongoDB實(shí)例。在啟動(dòng)四個(gè)實(shí)例前,先要修改每個(gè)實(shí)例的配置文件,配置replSet參數(shù)值都為同一個(gè)值,這個(gè)值作為復(fù)制集的名稱,具體操作如下:

[root@localhost ~]# vim /usr/local/mongodb/bin/mongodb1.conf 
port=27017
dbpath=/data/mongodb1
logpath=/data/logs/mongodb/mongodb1.log
logappend=true
fork=true
maxConns=5000
replSet=kgcrs                     #配置復(fù)制集的名稱

在其他的三個(gè)實(shí)例的配置文件中最后一行,加上相同的一句代碼就行。開(kāi)啟四個(gè)實(shí)例進(jìn)程。

[root@localhost ~]# export PATH=$PATH:/usr/local/mongodb/bin/
#由于之前重啟過(guò),重新設(shè)置環(huán)境變量
[root@localhost ~]# mongod -f /usr/local/mongodb/bin/mongodb1.conf
#開(kāi)啟端口號(hào)為27017的實(shí)例進(jìn)程
2018-07-17T10:33:29.835+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
about to fork child process, waiting until server is ready for connections.
forked process: 3751
child process started successfully, parent exiting
初始化配置并啟動(dòng)復(fù)制集

啟動(dòng)完4個(gè)MongoDB實(shí)例后,下面介紹如何配置并啟動(dòng)MongoDB復(fù)制集。這里先配置包含3個(gè)節(jié)點(diǎn)的復(fù)制集(后面會(huì)再進(jìn)行添加最后一個(gè)實(shí)例),Primary代表主節(jié)點(diǎn)。Secondary代表從節(jié)點(diǎn)

[root@localhost bin]# mongod -f /usr/local/mongodb/bin/mongodb2.conf --smallfiles
about to fork child process, waiting until server is ready for connections.
forked process: 20207
child process started successfully, parent exiting
[root@localhost bin]# mongod -f /usr/local/mongodb/bin/mongodb3.conf --smallfiles
about to fork child process, waiting until server is ready for connections.
forked process: 20230
child process started successfully, parent exiting
[root@localhost bin]# mongod -f /usr/local/mongodb/bin/mongodb4.conf --smallfiles
about to fork child process, waiting until server is ready for connections.
forked process: 20253
child process started successfully, parent exiting

可以看到四個(gè)實(shí)例都已經(jīng)啟動(dòng)成功,對(duì)應(yīng)的端口號(hào)都已經(jīng)打開(kāi)。然后進(jìn)入到端口號(hào)為27017端口號(hào)的實(shí)例中。
MongoDB復(fù)制集部署和基本管理

[root@localhost bin]# mongo   #默認(rèn)就是端口號(hào)為27017的實(shí)例
> cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.100.201:27017"},{"_id":1,"host":"192.168.100.201:27018"},{"_id":2,"host":"192.168.100.201:27019"}]}
#這句代碼的意思就是向kgcrs的復(fù)制集中添加三個(gè)成員
> rs.initiate(cfg)
{ "ok" : 1 }
#對(duì)復(fù)制集進(jìn)行初始化啟動(dòng)復(fù)制集,啟動(dòng)復(fù)制集后,可以通過(guò)rs.status()查看復(fù)制集的完整信息。

MongoDB復(fù)制集部署和基本管理
MongoDB復(fù)制集部署和基本管理
MongoDB復(fù)制集部署和基本管理
MongoDB復(fù)制集部署和基本管理

增加和刪除節(jié)點(diǎn)

配置啟動(dòng)復(fù)制集后,還可以通過(guò)rs.add()和rs.remove()命令方便地添加和刪除節(jié)點(diǎn)。

kgcrs:PRIMARY> rs.add("192.168.100.201:27020")
{ "ok" : 1 }
#可以看到27020端口的實(shí)例添加成功
kgcrs:PRIMARY> rs.remove("192.168.100.201:27019")
{ "ok" : 1 }
#可以看到27019端口的實(shí)例被刪除了
MongoDB復(fù)制集切換

1、模擬故障自動(dòng)切換

通過(guò)kill命令可以停止復(fù)制集的當(dāng)前節(jié)點(diǎn),然后查看主節(jié)點(diǎn)會(huì)自動(dòng)切換到其他節(jié)點(diǎn)上,可以看到當(dāng)前端口為27017的實(shí)例為主節(jié)點(diǎn)。
MongoDB復(fù)制集部署和基本管理

[root@localhost bin]# netstat -ntap| grep mongo
tcp        0      0 0.0.0.0:27019           0.0.0.0:*               LISTEN      20230/mongod        
tcp        0      0 0.0.0.0:27020           0.0.0.0:*               LISTEN      20253/mongod        
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      20055/mongod        
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      20207/mongod 
[root@localhost bin]# kill -9 20055 #kill掉27017端口的進(jìn)程
kgcrs:SECONDARY> rs.status()
#可以看到現(xiàn)在的主節(jié)點(diǎn)是端口為27019的實(shí)例

MongoDB復(fù)制集部署和基本管理
2、手動(dòng)進(jìn)行主從切換

首先要先進(jìn)入到主節(jié)點(diǎn)的實(shí)例中,只有主節(jié)點(diǎn)才有權(quán)限進(jìn)行主從節(jié)點(diǎn)切換。

[root@localhost bin]# mongo --port 27019
kgcrs:PRIMARY> rs.freeze(30)   #暫停30s不參加選舉
{ "ok" : 1 }
kgcrs:PRIMARY> rs.stepDown(60,30)  #告訴主節(jié)點(diǎn)交出主節(jié)點(diǎn)位置,然后維持從節(jié)點(diǎn)狀態(tài)不少于60s,同時(shí)等待30s以使主節(jié)點(diǎn)和從節(jié)點(diǎn)日志同步,再次查看狀態(tài),發(fā)現(xiàn)主節(jié)點(diǎn)已經(jīng)切換到另外一個(gè)實(shí)例中。
2018-07-18T15:52:53.254+0800 I NETWORK  [thread1] trying reconnect to 127.0.0.1:27019 (127.0.0.1) failed
2018-07-18T15:52:53.256+0800 I NETWORK  [thread1] reconnect 127.0.0.1:27019 (127.0.0.1) ok
kgcrs:SECONDARY> rs.status()

MongoDB復(fù)制集部署和基本管理

復(fù)制集的選舉原理

復(fù)制的原理

復(fù)制是基于操作日志oplog,相當(dāng)于MySQL中的二進(jìn)制日志,只記錄發(fā)生改變的記錄。復(fù)制是將主機(jī)點(diǎn)的oplog日志同步并應(yīng)用到其他從節(jié)點(diǎn)的過(guò)程

選舉的原理

節(jié)點(diǎn)類型分為標(biāo)準(zhǔn)(host)節(jié)點(diǎn),被動(dòng)(passive)節(jié)點(diǎn)和仲裁(abriter)節(jié)點(diǎn)。

(1)只有標(biāo)準(zhǔn)節(jié)點(diǎn)可能被選舉為活躍(primary)節(jié)點(diǎn),由選舉權(quán)。被動(dòng)節(jié)點(diǎn)有完整副本,不可能成為活躍節(jié)點(diǎn),有選舉權(quán)。仲裁節(jié)點(diǎn)不復(fù)制數(shù)據(jù),不可能成為活躍節(jié)點(diǎn),只有選舉權(quán)。

(2)標(biāo)準(zhǔn)節(jié)點(diǎn)與被動(dòng)節(jié)點(diǎn)的區(qū)別:priority值高者是標(biāo)準(zhǔn)節(jié)點(diǎn),低者則成為被動(dòng)節(jié)點(diǎn)。

(3)選舉規(guī)則是票數(shù)高者獲勝,priority是優(yōu)先權(quán)為0到1000的值,相當(dāng)于額外增加0到1000的票數(shù)。選舉結(jié)果:票數(shù)高者獲勝;若票數(shù)相同,數(shù)據(jù)新者獲勝。

配置復(fù)制集的優(yōu)先級(jí)

重新配置4個(gè)節(jié)點(diǎn)的MongoDB復(fù)制集,設(shè)置兩個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn),喲個(gè)被動(dòng)節(jié)點(diǎn)和一個(gè)仲裁節(jié)點(diǎn)。這個(gè)設(shè)置要在主節(jié)點(diǎn)上配置。

kgcrs:PRIMARY> > cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.58.131:27017","priority":100},{"_id":1,"host":"192.168.58.131:27018","priority":100},{"_id":2,"host":"192.168.58.131:27019","priority":0},{"_id":3,"host":"192.168.58.131:27020","arbiterOnly":true}]}
#這句代碼分別設(shè)置了四個(gè)實(shí)例的屬性,優(yōu)先級(jí)
kgcrs:PRIMARY> rs.reconfig(cfg)
{ "ok":1 }

可以看到現(xiàn)在端口27018的實(shí)例,現(xiàn)在是主節(jié)點(diǎn)。
MongoDB復(fù)制集部署和基本管理

模擬主節(jié)點(diǎn)故障

如果主節(jié)點(diǎn)出現(xiàn)故障,另外一個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn)將會(huì)被選舉為新的主節(jié)點(diǎn)。

[root@promote ~]# mongod -f /usr/local/mongodb/bin/mongodb2.conf --shutdown
2018-07-22T09:20:02.706+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
killing process with pid: 9639
kgcrs:PRIMARY> rs.isMaster()

MongoDB復(fù)制集部署和基本管理
可以看到27017端口的實(shí)例已經(jīng)成為主節(jié)點(diǎn)。

模擬所有標(biāo)準(zhǔn)節(jié)點(diǎn)都出現(xiàn)故障

如果所有標(biāo)準(zhǔn)節(jié)點(diǎn)出現(xiàn)故障,被動(dòng)節(jié)點(diǎn)和仲裁節(jié)點(diǎn)都不能成為主節(jié)點(diǎn)。

[root@promote ~]# mongod -f /usr/local/mongodb/bin/mongodb1.conf --shutdown
2018-07-22T09:24:08.290+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
killing process with pid: 9740
kgcrs:SECONDARY> rs.isMaster()

MongoDB復(fù)制集部署和基本管理


本文題目:MongoDB復(fù)制集部署和基本管理
文章路徑:http://weahome.cn/article/jppecj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部