1、什么是復(fù)制集
復(fù)制集是額外的數(shù)據(jù)副本,是跨多個(gè)服務(wù)器同步數(shù)據(jù)的過程,復(fù)制集提供了冗余并增加了數(shù)據(jù)可用性,通過復(fù)制集可以對(duì)硬件故障和中斷的服務(wù)進(jìn)行恢復(fù)。
復(fù)制集的優(yōu)勢(shì)如下:
?讓數(shù)據(jù)更安全
?搞數(shù)據(jù)可用性(7 * 24)
?災(zāi)難恢復(fù)
?無停機(jī)維護(hù)(如備份、索引重建、故障轉(zhuǎn)移)
?讀縮放(額外的副本讀取)
?副本集對(duì)應(yīng)用程序是透明的
2、復(fù)制集的工作原理
MongoDB的復(fù)制集至少需要兩個(gè)節(jié)點(diǎn)。其中一個(gè)是主節(jié)點(diǎn)(primary),負(fù)責(zé)處理客戶端的請(qǐng)求,其余的都是從節(jié)點(diǎn)(Secondary),負(fù)責(zé)復(fù)制主節(jié)點(diǎn)上的數(shù)據(jù)。
MongoDB各個(gè)節(jié)點(diǎn)常見的搭配方式為:一主一從或一主多從。主節(jié)點(diǎn)記錄其上的所有操作到oplog中,從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲取這些操作,然后對(duì)自己的數(shù)據(jù)副本執(zhí)行這些操作,從而保證從節(jié)點(diǎn)的數(shù)據(jù)與主節(jié)點(diǎn)一致。
主從復(fù)制結(jié)構(gòu)圖如下:
復(fù)制集特點(diǎn)如下:
?N個(gè)節(jié)點(diǎn)的集群
?任何節(jié)點(diǎn)可作為主節(jié)點(diǎn)
?所有寫入操作都在主節(jié)點(diǎn)上
?自動(dòng)故障轉(zhuǎn)移
?自動(dòng)恢復(fù)
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的包河網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1、配置yum源vi /etc/yum.repos.d/CentOS-Base.repo //末行增加
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
2、安裝配置mongodb
yum install -y mongodb-org //安裝
vi /etc/mongod.conf //修改監(jiān)聽地址和端口
打開復(fù)制模塊
3、創(chuàng)建多實(shí)列
mkdir -p /data/mongodb/mongodb{2,3,4} //創(chuàng)建數(shù)據(jù)目錄
cd /data
mkdir logs
touch logs/mongodb{2,3,4}.log //創(chuàng)建日志文件
cd logs/
chmod 777 *.log //賦予權(quán)限
cp -p /etc/mongod.conf /etc/mongod2.conf //復(fù)制主配置文件
cp -p /etc/mongod.conf /etc/mongod3.conf
cp -p /etc/mongod.conf /etc/mongod4.conf
vi /etc/mongod2.conf //依次修改主配置文件(注意文件的名稱不一樣)

mongod -f /etc/mongod.conf //進(jìn)入對(duì)應(yīng)的實(shí)列
mongod -f /etc/mongod2.conf
mongod -f /etc/mongod3.conf
mongod -f /etc/mongod4.conf4、配置三個(gè)節(jié)點(diǎn)的復(fù)制集
mongo //進(jìn)庫
cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.80.100:27017"},{"_id":1,"host":"192.168.80.100:27018"},{"_id":2,"host":"192.168.80.100:27019"},{"_id":3,"host":"192.168.80.100:27020"}]} //將另外三個(gè)節(jié)點(diǎn)添加到復(fù)制集
rs.initiate(cfg) //初始化復(fù)制集配置
rs.status() //查看復(fù)制集的狀態(tài)



rs.remove("192.168.80.183:27020") //刪除節(jié)點(diǎn)
rs.add("192.168.80.183:27020") //添加節(jié)點(diǎn)5、驗(yàn)證復(fù)制集
use test
db.a.insert({"id":1,"name":"jack"})
db.a.find()去其他節(jié)點(diǎn)依次查看驗(yàn)證
mongo -port 27018
show dbs
1、故障自動(dòng)切換
mongod -f /etc/mongo.conf --shutdown //模擬了模擬故障點(diǎn)
mongdo -port 27018 //進(jìn)入新的主節(jié)點(diǎn)
rs.status() //查看復(fù)制集狀態(tài)

2、手動(dòng)切換
mongdo -port 27018 //進(jìn)入主節(jié)點(diǎn)
rs.stepDown(60,30) //交出主節(jié)點(diǎn)位置
rs.status() //查看狀態(tài)
rs.freeze(30) //暫停30s不參與選舉,必須要有仲裁節(jié)點(diǎn),在下面的復(fù)制選舉中驗(yàn)證
1、虛擬機(jī)還原重復(fù)上述安裝mongoDB并添加多實(shí)例
2、配置三個(gè)復(fù)制節(jié)點(diǎn)
mongo //進(jìn)庫
cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.80.100:27017","priority":100},{"_id":1,"host":"192.168.80.100:27018","priority":100},{"_id":2,"host":"192.168.80.100:27019","priority":0},{"_id":3,"host":"192.168.80.100:27020","arbiterOnly":true}]} //指定復(fù)制節(jié)點(diǎn)給的屬性(priority為100:標(biāo)準(zhǔn)節(jié)點(diǎn),priority為0:被動(dòng)節(jié)點(diǎn),arbiterOnly:仲裁節(jié)點(diǎn))
rs.initiate(cfg) //初始化配置
rs.isMaster() //查看個(gè)點(diǎn)節(jié)點(diǎn)屬性
use local
show collections //查看集合
db.oplog.rs.find() //查看日志記錄所有操作
3、模擬便準(zhǔn)節(jié)點(diǎn)故障
mongod -f /etc/mongod.conf --shutdown //模擬標(biāo)準(zhǔn)節(jié)點(diǎn)1故障
mongo --port 27018 //進(jìn)入第二個(gè)準(zhǔn)備節(jié)點(diǎn)驗(yàn)證是否被選舉為主節(jié)點(diǎn)

mongod -f /etc/mongod2.conf --shutdown //模擬標(biāo)準(zhǔn)節(jié)點(diǎn)2故障
mongo --port 27019 //進(jìn)入被動(dòng)節(jié)點(diǎn)驗(yàn)證,此時(shí)被動(dòng)節(jié)點(diǎn)不能成為主節(jié)點(diǎn)4、允許從節(jié)點(diǎn)讀取數(shù)據(jù)
在從節(jié)點(diǎn)無法查看數(shù)據(jù)
rs.slaveOk() //允許從節(jié)點(diǎn)讀取數(shù)據(jù)
show dbs; //允許默認(rèn)從節(jié)點(diǎn)讀取數(shù)據(jù)
5、查看復(fù)制狀態(tài)信息
rs.help() //查看
rs.printReplicationInfo() //查看復(fù)制集信息
rs.printSlaveReplicationInfo() //查看從節(jié)點(diǎn)的狀態(tài)
注:其中沒有仲裁節(jié)點(diǎn),說明仲裁節(jié)點(diǎn)不具備數(shù)據(jù)復(fù)制能力
6、更改oplog大小
use local
db.oplog.rs.stats() //查看操作復(fù)制操作的狀態(tài)
方法一:
use admin //進(jìn)入管理庫
db.shutdownServer() //關(guān)閉注銷復(fù)制集相關(guān)啟動(dòng)參數(shù)
vi /etc/mongod.conf //修改端口為27028并注釋復(fù)制集參數(shù)
mongod -f /etc/mongod.conf //單實(shí)例啟動(dòng)
mongodump --port 27028 --db local --collection 'oplog.rs' //備份操作日志
mongo --port 27028
> use local
> db.oplog.rs.drop() //刪除日志文件
> db.runCommand( { create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024) } ) //重新創(chuàng)建日志文件并且指定大小
> use admin
> db.shutdownServer() //關(guān)閉節(jié)點(diǎn)服務(wù)方法二:vi /etc/mongod.conf //修改端口回27018打開復(fù)制集參數(shù)指定復(fù)制集的大小
mongod -f /etc/mongod.conf //重新啟動(dòng)
mongo //進(jìn)入實(shí)例驗(yàn)證
7、放棄被選舉產(chǎn)生新的有效選舉
mongo --port 27018 //進(jìn)入主節(jié)點(diǎn)
rs.stepDown() //放棄選舉權(quán)
rs.status() //另外一個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn)有效選舉為主節(jié)點(diǎn)
vi /etc/mongod.conf
vi /etc/mongod2.conf
vi /etc/mongod3.conf
vi /etc/mongod4.conf //依次打開安全認(rèn)證模塊
cd /usr/bin/ //進(jìn)入bin目錄
echo "kgcrs key"> kgcrskey1 //創(chuàng)建認(rèn)證文件
echo "kgcrs key"> kgcrskey2
echo "kgcrs key"> kgcrskey3
echo "kgcrs key"> kgcrskey4
chmod 600 kgcrskey{1..4} //更改權(quán)限四個(gè)實(shí)例依次進(jìn)行重啟
進(jìn)入主節(jié)點(diǎn)
kgcrs:PRIMARY> show dbs #無法查看數(shù)據(jù)庫
kgcrs:PRIMARY> rs.status() #無法查看復(fù)制集
kgcrs:PRIMARY> use admin #身份登錄驗(yàn)證
kgcrs:PRIMARY> db.auth("root","123")
kgcrs:PRIMARY> rs.status() #可以查看數(shù)據(jù)庫
kgcrs:PRIMARY> show dbs #可以查看復(fù)制集
名稱欄目:MongoDB復(fù)制集
本文路徑:http://www.chinadenli.net/article0/iiipoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、域名注冊(cè)、網(wǎng)站維護(hù)、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(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)