Mongo服務器集群配置學習一——主從復制


主從復制是MongoDB最常用也是最簡單的復制操作。常用於數據備份和故障修復等。

下面這個圖就是最簡單的主從復制的服務器架構

 

 

我將以實驗的方式來實現MongoDB的主從復制

實驗環境:windows操作系統(一台機器啟動多個MongoDB數據庫),MongoDB 2.4

說明:

1.MongoDB以配置文件的形式啟動

2.以執行保存的bat文件代替每次輸入CMD中輸入命令

步驟:

1.配置主節點並啟動,端口為10001,下圖為配置的文件結構

其中config.cnf的內容為

dbpath=D:\mongodb\test\copy\10001\Data
bind_ip=127.0.0.1
port=10001
master=true

用startup.bat啟動主節點:mongod -f config.cnf

用shell.bat啟動shell:mongo 127.0.0.1:10001

其中master參數為true說明這台是主節點

2.配置從數據庫,端口為10002

config.cnf的內容為

dbpath=D:\mongodb\test\copy\10002\Data
bind_ip=127.0.0.1
port=10002
slave=true
source=127.0.0.1:10001

用startup.bat啟動從節點:mongod -f config.cnf

用shell.bat啟動shell:mongo 127.0.0.1:10002

slave參數設置從節點,source從數據庫對應的主節點的地址

3.下面就來做下驗證,在10001主節點上的person數據庫添加集合baseinfo,並添加一條文檔

這個時候再來10002從節點查詢,就可以看到這條同樣的數據已經復制過來了。

4.其他參數

--only 從節點配置,只復制特定某個數據庫

--autoresync 從節點配置,如果主節點與從節點數據不同,則自動重新同步。配置這個節點可以給運行了一段時間的主節點加上一個新節點,則這個新節點會把之前的主節點數據全部同步過來,而不是從現在這個時間同步。

--slavedelay 從節點配置,從數據庫延遲同步主數據庫的時間

--fastsync 從節點配置,以主節點的數據庫快照啟動從節點,可以加快啟動速度。

--oplogsize 主節點配置,主節點oplog大小,主節點會把數據庫操作的日志寫在oplog中,從節點參考oplog做復制操作,可以根據自身情況調節日志大小。如果不指定oplogsize大小,mongod將指配5%的可用磁盤空間給他,32位機最小是50M,64位機最小是1G。

動態添加刪除主從節點

先看看從節點的對於主節點的配置在哪,在從節點的local數據庫的sources集合中,查看信息如下:

現在再啟動一台普通的節點,不設置任何主從,端口設為10003

dbpath=D:\mongodb\test\copy\10003\Data
bind_ip=127.0.0.1
port=10003
slave=true

啟動后,動態的把10003加入到主從架構中,形成如下的結構

在10003的shell中執行下面腳本即可。

use local

db.sources.insert({"host":"127.0.0.1:10001"})

這樣10003就作為10001的從節點了

刪除主從關系就用db.sources.remove({"host":"127.0.0.1:10001"})

 

主節點往從節點轉移

永久的轉移一個損壞的和不可用的主節點A到從節點B,有以下步驟:

1.關閉A節點

2.停止B節點的Mongod

3.對B節點的dbpath目錄下的文件進行備份和移動

注:刪除local.*是不可撤銷的。執行此步驟非常謹慎。

4.在B節點上用--master參數重啟Mongod

調換主節點和從節點

有一個主節點A和一個從節點B,如果想調換他們的角色,請按下面的步驟,這里假設A是健康的,可更新的可用的

如果A是不是健康的,但硬件是好的(停電,服務器崩潰等),跳過步驟1和2,並在第8步用B的文件取代所有的文件。

如果A是不是健康的,硬件是不好的,將A替換為一台新機器。可以按照上段中的說明。

1.暫停在A上使用fsync命令

2.確定B是在同步節點A

3.關閉B節點

4.從B的DBPATH目錄備份和移動的所有數據文件,並刪除現有的數據local.sources。

5.用master選項啟動B

6.往B中寫入數據,用oplog設置新的同步開始時間點

7.關閉B,當重啟時B就有新的一組本地數據

8.關閉A,用備份B的dbpath目錄文件復制到A的dbpath中

9.用master選項啟動B

10.用通常slave選項啟動A,但要包括fastsync參數

 

 


免責聲明!

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



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