Mongodb資料同步和主從切換

zhcunique發表於2021-03-18

一、主從切換方式

1. 在採用Master-Slave 下,備節點當機不會影響到主節點,但是主節點當機,並不會自動進行故障轉移,會影響到連線mongodb 的應用程式。

2. 需要手動把備節點的停止,並修改mongodb.conf 檔案後,再重啟,如圖:

 

3. 由於現在備節點已經變成了主節點,所以需要修改web poseidon.properties rmm xx.config 裡的mongodb 相關配置,改為備節點的ip 和埠,如圖:

4. 等主節點恢復後,則把主節點當成備節點,資料會自動地同步到原來的主節點上。

5. 主節點同步完資料後,可選擇主備再次調換。

6. 如果主從長期沒有同步,mongodb 啟動可能不會再自動同步,需要備庫加上autoresyuc=true 配置項才能全部重新開始同步。

7.mongoDB 伺服器啟動與關閉,使用量兩種方式:

7.1 透過我們提供的startMongoDB.sh stopMongoDB.sh

7.2 透過mongod -f mongodb.conf 啟動,透過use admin  db.shutdownServer() 關閉。

二、直接複製檔案方式

1. 複製檔案方式進行主從同步

mongodb 複製data檔案同步了,mongodb靠自身的全量同步,隨著data資料夾的增大,構建索引所花費的時間會越來越多,在週末兩天根本完不成同步的任務,且同步時會影響主的效能,導致主的插入效能會受到影響,所以要找到一個可以先把主的data資料夾複製到從裡面去,然後在往後的時間裡增量同步的方法。

如果直接全量複製過去,再啟動mongodb的主,然後啟動mongodb的備,會報一個錯誤`TueFeb 19 16:31:45 [replslave] all sources dead: data too stale haltedreplication, sleeping for 5 seconds`, 同步失敗了

2. 解決方案

關閉RMM time&&event , 關閉主的mongodb ,關閉從的mongodb

備份主的local.*, 包括local.ns 到一個新的資料夾目錄,備份好之後,刪除主的local.*, 再刪除從的local.*

啟動主的mongodb ,再啟動從的mongodb

在主的上面增加資料或者刪除資料,看能否同步到從庫裡面去

從庫檢視資料是否成功新增的方法,見第三節`mongodb 命令列啟動命令

 3.mongodb 主從配置內容

# 1. mongodb 主的配置檔案

port=37017

dbpath=E:\\mongo\\mongodb-master\\data

logpath=E:\\mongo\\mongodb-master\\log\\mongodb.log

logappend=true

master=true

# 2. mongodb 從的配置檔案

port=37018

dbpath=E:\\mongo\\mongodb-slave\\data

logpath=E:\\mongo\\mongodb-slave\\log\\mongodb.log

logappend=true

slave=true

source=127.0.0.1:37017

# 3. mongodb 命令列啟動命令

> cd bin

> mongo --host 127.0.0.1 --port 37018 [ -u admin -p admin]

> use rmm

> db.rmm_backup_processor_calc_num.find()

 

# 4. mongodb 統計命令[ 觀察mongodb 負載效能的命令]

> cd bin

> mongostat --port 37018


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

相關文章