爲了在各個MongDB之間實現多節點之間的數據自動備份,提升容災性能。MongoDB複製是將數據同步在多個服務器的過程。複製提供了數據的冗餘備份,並在多個服務器上存儲數據副本,提升了數據的可用性,並能夠保證數據的安全性。
mongodb的複製至少須要兩個節點。其中一個是主節點,負責處理客戶端請求,其他的都是從節點,負責複製主節點上的數據。mongodb各個節點常見的搭配方式爲:一主一從、一主多從。主節點記錄在其上的全部操做oplog,從節點按期輪詢主節點獲取這些操做,而後對本身的數據副本執行這些操做,從而保證從節點的數據與主節點一致。mongodb
N 個節點的集羣數據庫
任何節點可做爲主節點安全
全部寫入操做都在主節點上服務器
自動故障轉移app
自動恢復性能
本文中使用同一個MongoDB實現兩個節點的直接的備份,固然是有主、從的,可是這個主、從和通常的主從不同,這裏的主機爆掉以後,就會自動鏈接到叢機上繼續使用數據。這就是集羣的優點所在。ui
準備兩個數據庫
複製兩個data目錄:data與data1目錄,也就是兩個數據庫目錄。分別修改這兩個data目錄下的配置文件,分別爲:調試
data中,/data/etc/mongodb.conf:日誌
dbpath=data\db #數據庫路徑 logpath=data\logs\mongodb.log #日誌輸出文件路徑 logappend=true #錯誤日誌採用追加模式,配置這個選項後mongodb的日誌會追加到現有的日誌文件,而不是重新建立一個新文件 journal=true #啓用日誌文件,默認啓用 quiet=true #這個選項能夠過濾掉一些無用的日誌信息,若須要調試使用請設置爲false port=27017 #端口號 默認爲27017
data1中,/data1/etc/mongodb.conf:code
dbpath=data1\db #數據庫路徑 logpath=data1\logs\mongodb.log #日誌輸出文件路徑 logappend=true #錯誤日誌採用追加模式,配置這個選項後mongodb的日誌會追加到現有的日誌文件,而不是重新建立一個新文件 journal=true #啓用日誌文件,默認啓用 quiet=true #這個選項能夠過濾掉一些無用的日誌信息,若須要調試使用請設置爲false port=27018 #端口號 默認爲27018
啓動兩個mongoDB數據庫
cmd中:
因爲本文是在同一臺機器上配置兩個節點,因此兩個節點的ip是相同的:
啓動第一個數據庫:
mongod --port 27017 --dbpath "\data" --replSet rs
啓動第二個數據庫:
mongod --port 27018 --dbpath "\data1" --replSet rs
添加將數據庫添加到副本集中
登錄第一個數據庫:
mongo 127.0.0.1:27017
以該數據庫爲主機,初始化副本集,初始化過程化過程當中就會將該數據庫做爲主機加入到這個副本集中了。
初始化副本集:
>rs.initiat()
查看當前副本集的機器狀況:
>rs.conf()
當前應該只有27017這個主機在這個副本集中。
而後再將叢機都加進來:
>rs.add("trilever-pc:27018")
再看當前副本集集羣的狀況,就會發現叢機已經加進來了。
登錄叢機:
mongo 127.0.0.1:27017
此時,叢機已經在副本集羣中了,進行最後一個操做:
>rs.slaveok()
這樣在主機上的操做就會同步到從機上了。
整個配置完畢。驗證便可。