採用secondary的冷備份的方式來新增新的secondary節點

賀子_DBA時代發表於2020-01-18

前面介紹了兩種方法來新增secondary節點,直接rs.add()和一致性備份的方式來實現,接下來介紹第三種方式,具體如下:

方法三:採用secondary的冷備份的方式

找到另外一個secondary資料節點的快照,關閉寫操作(冷備份)這裡我採用了設定延遲節點的方法來實現關閉寫操作的目的。在資料不變化的情況下,獲得一致性的備份快照,複製至故障節點中,啟動MongoDB服務,應用oplog日誌!

需要注意兩點:

1.保證scp期間,該Secondary節點的oprlog 不被覆蓋,2.設定的延遲時間要保證scp資料操作完成

具體步驟如下:

3.1 給某個集合插入資料,來模擬線上業務;

MongoDB Enterprise liuhe_rs:PRIMARY> use liuwenhe

switched to db liuwenhe

MongoDB Enterprise liuhe_rs:PRIMARY> db.hezi.count()

533387

MongoDB Enterprise liuhe_rs:PRIMARY> for (var i = 0; i < 100; i++) { db.hezi.insert({id: i}); }

WriteResult({ "nInserted" : 1 })

MongoDB Enterprise liuhe_rs:PRIMARY> db.hezi.count()

533487

3.2將某個Secondary節點設定為延遲節點;

MongoDB Enterprise liuhe_rs:PRIMARY>cfg = rs.conf()

MongoDB Enterprise liuhe_rs:PRIMARY>cfg.members[1].priority = 0

MongoDB Enterprise liuhe_rs:PRIMARY>cfg.members[1].slaveDelay = 3600

MongoDB Enterprise liuhe_rs:PRIMARY>rs.reconfig(cfg)

檢視是否是延遲的,發現確實延遲1個小時,也就是3600秒!

MongoDB Enterprise liuhe_rs:SECONDARY> rs.printReplicationInfo()

configured oplog size: 51200MB

log length start to end: 5461974secs (1517.22hrs)

oplog first event time: Sat Nov 16 2019 16:53:17 GMT+0800 (CST)

oplog last event time: Sat Jan 18 2020 22:06:11 GMT+0800 (CST)

now: Sat Jan 18 2020 23:06:19 GMT+0800 (CST)

資料確實沒有insert呢,如下所示:

MongoDB Enterprise liuhe_rs:SECONDARY> db.hezi.count()

533387

3.2直接scp 資料目錄到目標伺服器

[mongod@beijing-fuli-hadoop-04 ~]$ scp -r db mongod@10.9.21.115:/data/mongodb

3.3 啟動新的Secondary節點

[mongod@beijing-fuli-hadoop-03 ~]$ /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf

3.4 驗證結果是否正確:

3.4.1檢視新的Secondary節點的同步狀態,如下無延遲:

MongoDB Enterprise liuhe_rs:SECONDARY> rs.printReplicationInfo()

configured oplog size: 51200MB

log length start to end: 5465940secs (1518.32hrs)

oplog first event time: Sat Nov 16 2019 16:53:17 GMT+0800 (CST)

oplog last event time: Sat Jan 18 2020 23:12:17 GMT+0800 (CST)

now: Sat Jan 18 2020 23:17:48 GMT+0800 (CST)

3.4.2檢視資料是否同步成功,如下所示,確實同步成功了

MongoDB Enterprise liuhe_rs:SECONDARY> rs.slaveOk()

MongoDB Enterprise liuhe_rs:SECONDARY> db.hezi.count()

533487

至此透過Secondary節點延遲冷備的方式來實現新加Secondary節點的目的實現了!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2673943/,如需轉載,請註明出處,否則將追究法律責任。

相關文章