1. 程式人生 > >MongoDB復制集搭建(單機多實例與不同服務器)

MongoDB復制集搭建(單機多實例與不同服務器)

mem 實現 路徑 ext bin 方式 需要 tro ESS

MongoDB復制集搭建

一、單機多實例搭建復制集

單機多實例只需要一臺虛擬機,通過復制配置文件使用不同端口來實現。
安裝MongoDB請參考我的另外一篇博客
博客地址:http://blog.51cto.com/13760226/2174032

1、創建數據存放目錄,復制配置文件
mkdir -p /usr/local/mongodb/mongodb{1,2,3,4} //創建數據存放目錄
cd /usr/local/mongodb/
touch mongodb{1,2,3,4}.log //創建日誌文件

技術分享圖片


復制配置文件
cp /etc/mongod.conf /etc/mongod1.conf
cp /etc/mongod.conf /etc/mongod2.conf

cp /etc/mongod.conf /etc/mongod3.conf
cp /etc/mongod.conf /etc/mongod4.conf


修改配置文件
vim /etc/mongod1.conf (234)修改的內容相似
systemLog:
path: /usr/local/mongodb/mongodb1.log //修改日誌路徑
storage:
dbPath: /usr/local/mongodb/mongodb1 //修改數據文件存放路徑
net:
port: 27017 (2,3,4的端口號不能相同)
bindIp: 0.0.0.0 //監聽任意端口
replication: //末行添加
replSetName: repl //末行添加

2,3,4的多實例數據文件存放位置,日誌位置要對應好,port不能相同


開啟多實例
mongod -f /etc/mongod1.conf //開啟多實例

技術分享圖片

2、進入MongoDB,進行主從配置
rs.initiate({_id:"repl",members:[{_id:1,host:‘192.168.60.135:27017‘}]}) //初始化復制集
第一臺被初始化的為primary,剩下的都為secondary。
使用rs.status()進行查看

技術分享圖片

3、添加復制集
rs.add(‘192.168.60.135:27018‘)
rs.status() //查看

技術分享圖片

4、登陸27018的多實例,看到為secondary說明從復制集配置成功

技術分享圖片
技術分享圖片

5、移除復制集
rs.add(‘192.168.60.135:27019‘) //再添加一個27019
rs.remove(‘192.168.60.135:27019‘) //移除它

技術分享圖片
技術分享圖片

6、切換主從方式
●主服務器宕機,primary自動進行選舉
●手動切換
rs.freeze(30) 暫停30s
rs.stepDown(60,30) 維持從服務器狀態60s 等待30s使主節點和從節點同步

技術分享圖片

註:復制集只有主的那臺才能查看內容,從的都沒有權限進行查看,如果想驗證是否進行復制,在主集上寫,用切換主從的方法,讓從服務器變成主,再去查看即可。


二、不同服務器搭建復制集

原理都相同,不同服務器上搭建出MongoDB,在初始化復制集的時候操作略有不同,多實例的搭建是通過不同端口號去實現的。而不同服務器是通過不同IP地址進行實現。代碼如下,結合以上的內容,理解起來其實很簡單。

rs.initiate({_id:"repl",members:[{_id:1,host:‘192.168.60.135:27017‘}]}) //初始化一臺135的服務器為主復制集
rs.add(‘192.168.60.136:27017‘) //添加從復制集的時候同樣的端口,添加不同的IP
rs.remove(‘192.168.60.136:27017‘) //刪除從復制集的時候,也是通過IP去確定

MongoDB復制集搭建(單機多實例與不同服務器)