溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

mongodb副本集用一致性快照方法添加從節(jié)點(diǎn)步驟

發(fā)布時(shí)間:2020-08-11 19:05:06 來(lái)源:ITPUB博客 閱讀:177 作者:chenfeng 欄目:關(guān)系型數(shù)據(jù)庫(kù)

環(huán)境描述

主節(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ù)庫(kù)的其他兩個(gè)集合db.replset.election,db.system.replset

5)修改數(shù)據(jù)庫(kù)配置并重啟數(shù)據(jù)庫(kù)(這一步操作前實(shí)例不開(kāi)啟認(rèn)證模式、復(fù)制集的配置),

6)用rs.add("HOST_NAME:PORT")命令將從節(jié)點(diǎn)添加進(jìn)集群

7).用rs.status()觀(guān)察同步狀態(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

需要查詢(xún)主節(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)上寫(xiě)入數(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()

說(shuō)明:以上步驟和MySQL的用mysqldump或xtrabackup備份方式添加一個(gè)從節(jié)點(diǎn)方法類(lèi)似。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI