MongoDB學習筆記——Master/Slave主從複製

Master/Slave主從複製 mongodb

主從複製MongoDB中比較經常使用的一種方式,若是要實現主從複製至少應該有兩個MongoDB實例,一個做爲主節點負責客戶端請求,另外一個做爲從節點負責從主節點映射數據,提供數據備份,客戶端讀取等,推薦一主多從模式 數據庫

MongoDB主從複製的實現方式: 服務器

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

MongoDB使用注意點或缺點: dom

  • 每一個從節點必須知曉其對應的主節點地址
  • 只容許主節點進行數據更新操做
  • 主節點宕機服務不可用
  • 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次的自動從新同步。

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

主節點 master.conf ip

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

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

port=27017 it

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(): //查看從節點的信息

相關文章
相關標籤/搜索