主從複製是MongoDB資料庫一種特性,它通過資料備份來提高資料庫的容災能力。但是由於主從複製並不能自動實現容錯移轉的特性,MongoDB在1.6版本開發了新的複製模式:Replicate Sets。MongoDB建議不要再使用Master-Slave模式對資料進行備份。但是對於學習來說,我們仍可以瞭解一下MongoDB的主從複製模式。
1. 從MongoDB官網下載最新版的MongoDB,解壓到某個目錄。
2.在MongoDB檔案夾下,建立/data/master和/data/slave目錄。
3.啟動主節點(Master)的伺服器,運行下面的命令:
mongod --dbpath /data/master --port 10000 --master |
執行完上面的命令後,mongodb會在data/master下產生資料檔案和記錄檔。
4.啟動從節點(Slave)的伺服器,運行下面的命令:
mongod --dbpath /data/slave --port 10001 --slave --source localhost:10000 |
執行完上面命令後,同樣會在data/slave下產生資料檔案和記錄檔,並在local資料庫下的sources表下建立與master的關聯資訊。
5.測試主從複製(Master-Slave)是否生效。
使用“mongo localhost:10000”開啟Master資料庫,插入一條測試語句: db.test.find(); db.test.insert({“host”:“1000”}); db.test.find(); 使用“mongo localhost:10001”開啟Slave資料庫,運行db.test.find()會發現查詢出來的資料與從Master資料庫中查詢的資料相同。
運行db.test.insert({"girl":"lili"}); 則會顯示not master。這是因為主從複製模式只允許從Master資料庫更新資料,而不允許從Slave資料庫更新資料。正因此,當Master發生故障時,從節點無法轉換為主節點的劣勢就暴漏了出來。