MongoDB學習筆記——Master/Slave主從復制


Master/Slave主從復制

主從復制MongoDB中比較常用的一種方式,如果要實現主從復制至少應該有兩個MongoDB實例,一個作為主節點負責客戶端請求,另一個作為從節點負責從主節點映射數據,提供數據備份,客戶端讀取等,推薦一主多從模式

MongoDB主從復制的實現方式:

  • 主節點的操作會被記錄為oplog,存儲在系統數據庫local的集合oplog.$main中,這個集合中的每個文檔都代表主節點的一個操作(不包括查詢)
  • 從節點定期從主服務器獲取oplog數據,並在本機進行執行
  • oplog使用的是固定集合,隨着操作的逐漸增加,新的文檔會逐漸覆蓋舊的文檔

MongoDB使用注意點或缺點:

  • 每個從節點必須知曉其對應的主節點地址
  • 只允許主節點進行數據更新操作
  • 主節點宕機服務不可用
  • 3.2版本以后已經移除

Mongodb主從復制配置項詳解:

  • master:默認為false,當設置為true,則配置當前實例作為主節點。
  • slave:默認為false,當設置為true,則配置當前實例作為從節點。
  • source:默認為空,用於從節點,指定從節點的復制來源(主節點的IP+端口),格式為:<host><:port>
  • only:默認為空,用於從節點,主動復制默認復制主節點上所有的數據庫,通過設置此項指定需要復制的數據庫名稱
  • slavedelay:設置從庫同步主庫的延遲時間,用於從設置,默認為0,單位秒。
  • autoresync:默認為false,用於從設置。是否自動重新同步。設置為true,如果落后主超過10秒,會強制從自動重新同步。如果oplogSize太小,此設置可能有問題。如果OPLOG大小不足以存儲主的變化狀態和從的狀態變化之間的差異,這種情況下強制重新同步是不必要的。當設置autoresync選項設置為false10分鍾內從不會進行大於1次的自動重新同步。

主從配置實例(一主一從)

主節點 master.conf

dbpath=D:\mongodb\zhucong\master\data

logpath=D:\mongodb\zhucong\master\logs\mongodb.log

port=27017

bind_ip=127.0.0.1

master=true

從節點配置

dbpath=D:\mongodb\zhucong\slave\data

logpath=D:\mongodb\zhucong\slave\logs\mongodb.log

port=27018

bind_ip=127.0.0.1

master=true

slave=true

source=127.0.0.1:27017

分別啟動兩個MongoDB實例

mongod --config D:\mongodb\zhucong\master\master.conf

mongod --config D:\mongodb\zhucong\slave\slave.conf

使用 Robomongo 客戶端分別連接上兩個MongoDB實例

在主庫上創建數據庫 masterslavetest 並創建一些測試數據

use masterslavetest

for (i = 5000; i < 100000; i++) {

db.users.insert({

"i": i,

"userName": "user" + i,

"age": Math.floor(Math.random() * 120),

"created": new Date(),

total: Math.floor(Math.random() * 100) * i

})

}

在兩個實例上分別執行 以下命令 可以看到在兩個數據庫上的數據保持一致,這時在主數據庫上執行CRUD等操作時,從庫數據依然與主庫一致

db.users.find({})

兩條指令

db.printReplicationInfo(): //查看主節點的信息

db.printSlaveReplicationInfo(): //查看從節點的信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM