MongoDB的主從複製與複製集
阿新 • • 發佈:2019-01-05
MongoDB分為主從複製和複製集
一,主從複製
mongodb支援傳統的master-slave架構。沒有自動故障轉移功能,需要指定master和slave端。不推薦。
1,建立兩個配置檔案
vi /etc/mongodb11.cnf
dbpath=/usr/local/mongodb/data11
logpath=/usr/local/mongodb/log/mongodb11.log
port=27011
fork=true
master=true
引數master:是否為主。
vi /etc/mongodb12.cnf
引數dbpath=/usr/local/mongodb/data12 logpath=/usr/local/mongodb/log/mongodb2.log port=27012 fork=true slave=true source=10.1.2.198:27011
salve:是否為從。
source:主的IP和埠。
2,分別啟動兩個mongod,在主上插入資料,在從上檢視時會提示錯誤
not master and slaveOk=false
這是因為從庫預設是不可讀寫的,所以需要設定rs.slaveOk()
二,複製集
複製集帶有自動故障轉移功能,複製集架構比複製架構更好維護,功能更強。推薦。
1,建立三個配置檔案
vi /etc/mongodb1.cnf
vi /etc/mongodb2.cnfdbpath=/usr/local/mongodb/data1 logpath=/usr/local/mongodb/log/mongodb1.log port=27071 fork=true replSet=rs
bpath=/usr/local/mongodb/data2
logpath=/usr/local/mongodb/log/mongodb2.log
port=27072
fork=true
replSet=rs
vi /etc/mongodb3.cnfdbpath=/usr/local/mongodb/data3
logpath=/usr/local/mongodb/log/mongodb3.log
port=27073
fork=true
replSet=rs
引數replSet:複製集的名稱,只有含有相同的複製集名稱的節點才能加入複製集。
2,分別啟動三個mongod,進入需要設定為主的機器上執行初始化
] }>config = { "_id": "repl", members: [ { "_id": 0, "host": "10.34.136.15:27071" }, { "_id": 1, "host": "10.34.136.15:27072" }, { "_id": 2, "host": "10.34.136.15:27073" },
>rs.initiate(config)
rs:複製集物件,複製集的命令都在rs物件內初始化後,">"符號前就會顯示當前節點的【複製集:主/從】的狀態
> rs.initiate(config)
{ "ok" : 1 }
rs:OTHER>
3,檢視狀態
rs:PRIMARY> rs.status();
4,檢視是否主從(如果發生切換,使用rs.status()檢視更準確)
rs:PRIMARY> db.isMaster()
5,登入其他兩個從節點,雖然會顯示【複製集:主/從】的狀態,但是無法操作
原因是從節點預設無法讀寫,執行slaveOk