環(huán)境描述
尼瑪網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,尼瑪網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為尼瑪上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的尼瑪做網(wǎng)站的公司定做!主節(jié)點(diǎn) 192.168.0.1:27002
兩個(gè)從節(jié)點(diǎn)
192.168.0.2:27002
192.168.0.3:27002
目標(biāo):用一致性快照方式添加第三個(gè)從節(jié)點(diǎn)192.168.0.3
步驟簡(jiǎn)述:
1)主節(jié)點(diǎn)上進(jìn)行一致性快照備份
2)從節(jié)點(diǎn)上進(jìn)行一致性快照恢復(fù),僅僅對(duì)數(shù)據(jù)部分進(jìn)行恢復(fù),暫時(shí)不要對(duì)oplog進(jìn)行恢復(fù)
3)初始化oplog.rs集合,并恢復(fù)oplog記錄
4)初始化local數(shù)據(jù)庫的其他兩個(gè)集合db.replset.election,db.system.replset
5)修改數(shù)據(jù)庫配置并重啟數(shù)據(jù)庫(這一步操作前實(shí)例不開啟認(rèn)證模式、復(fù)制集的配置),
6)用rs.add("HOST_NAME:PORT")命令將從節(jié)點(diǎn)添加進(jìn)集群
7).用rs.status()觀察同步狀態(tài)并校驗(yàn)數(shù)據(jù)的完整和一致性
一.主節(jié)點(diǎn)或者其他兩個(gè)從節(jié)點(diǎn)上備份數(shù)據(jù):
mongodump -uroot -ptest --host 192.168.0.2 --authenticationDatabase=admin --port=27002 --oplog -o /data/mongo/backup
二.將備份文件scp到192.168.0.3上并進(jìn)行恢復(fù):
scp -r /data/mongo/backup mongo@192.168.0.3/data/mongo
三.第三個(gè)節(jié)點(diǎn)以單實(shí)例方式啟動(dòng):
備注:需要注釋掉以下副本集參數(shù)
# auth = true
#replSet = test27002
#replSet = repl_mongo
#keyFile = /data/mongo/27002/replSet.key
# su - mongo
$ mongod -f /data/mongo/27002/conf/mongodb.conf
在192.168.0.3上進(jìn)行一致性快照恢復(fù):
$ mongorestore --oplogReplay --port=27002 /data/mongo/backup
創(chuàng)建oplog.rs集合并初始化大小:
>use local
>db.createCollection("oplog.rs",{"capped":true,"size":100000000})
恢復(fù)一致性備份的oplog.rs集合的數(shù)據(jù)到192.168.0.3:
$ mongorestore -d local -c oplog.rs --port=27002 /data/mongo/backup/oplog.bson
需要查詢主節(jié)點(diǎn)replset.election集合的數(shù)據(jù)并將這些數(shù)據(jù)存儲(chǔ)到192.168.0.3節(jié)點(diǎn)
主DB上的操作:
$ mongo 192.168.0.1:27002/admin -uroot -ptest
test27002:PRIMARY> use local
switched to db local
test27002:PRIMARY> db.replset.election.find()
{ "_id" : ObjectId("5d64912a1978c9b194cf7cc5"), "term" : NumberLong(2), "candidateIndex" : NumberLong(2) }
192.168.0.3節(jié)點(diǎn)上保存主DB上replset.election集合的數(shù)據(jù)內(nèi)容:
use local
db.replset.election.save({ "_id" : ObjectId("5d64912a1978c9b194cf7cc5"), "term" : NumberLong(2), "candidateIndex" : NumberLong(2) })
關(guān)閉第三個(gè)從節(jié)點(diǎn),以副本集方式啟動(dòng)mongodb:
> use admin
switched to db admin
> db.shutdownServer()
server should be down...
2019-09-01T18:10:57.337+0800 I NETWORK [js] trying reconnect to 127.0.0.1:27002 failed
2019-09-01T18:10:57.337+0800 I NETWORK [js] reconnect 127.0.0.1:27002 failed failed
>
>
修改第三個(gè)從節(jié)點(diǎn)配置,注釋去掉:
auth = true
replSet = test27002
keyFile = /data/mongo/27002/replSet.key
以副本集方式啟動(dòng)mongodb
$ mongod -f /data/mongo/27002/conf/mongodb.conf
主節(jié)點(diǎn)執(zhí)行添加節(jié)點(diǎn)操作:
mongo 192.168.0.1:27002/admin -uroot -ptest
>rs.add("172.31.30.82:27001");
主節(jié)點(diǎn)上寫入數(shù)據(jù):
use test
for (var i=0;i<=500;i++) { db.test.insert({id:i,name:"chenfeng"}) }
登錄第三個(gè)從節(jié)點(diǎn)進(jìn)行數(shù)據(jù)驗(yàn)證:
>use test
>db.test.count()
說明:以上步驟和MySQL的用mysqldump或xtrabackup備份方式添加一個(gè)從節(jié)點(diǎn)方法類似。