1、Mongodb複製集簡介mongodb
複製集(Replica Sets)是額外的數據副本,是跨多個服務器同步數據的過程,複製集提供了冗餘並增長了數據可用性,經過複製集能夠對硬件故障和中斷的服務進行恢復。數據庫
mongodb的複製集至少須要兩個節點。其中一個是主節點,負責處理客戶端請求,其他的都是從節點,負責複製主節點上的數據。
vim
mongodb各個節點常見的搭配方式爲:一主一從、一主多從。安全
主節點記錄在其上的全部操做oplog,從節點按期輪詢主節點獲取這些操做,而後對本身的數據副本執行這些操做,從而保證從節點的數據與主節點一致。服務器
MongoDB複製結構圖以下所示:ide
以上結構圖中,客戶端從主節點讀取數據,在客戶端寫入數據到主節點時, 主節點與從節點進行數據交互保障數據的一致性。spa
複製集的優點:3d
讓數據更安全
搞數據可用性
災難恢復
無停機維護(如備份,重建索引,故障轉移)
讀縮放(額外的副本讀取)
副本集對應用程序是透明的日誌
複製集的特色:orm
N個幾點的羣集
任何節點可做爲主節點
全部寫入操做都在主節點上
自動故障轉移
自動恢復
主從切換:
1.手動切換:主動放棄primary,其他從服務器會選舉出主服務器
2.自動切換:關閉MongoDB服務,其他從服務器會選舉出主服務器
2、實驗環境:
1.安裝MongoDB連接:Centos 7 超簡單yum源安裝MongoDB
2.由於是實驗,因此在一臺Centos 7虛擬機的MongoDB服務器進行配置複製集,IP:192.168.233.6
3.添加配置開啓4個實例,端口號分別爲:
1)27017
2)27018
3)27019
4)27020
4.實驗操做:4個實例 開啓三個 1主2個從 額外添加複製集追加實例27020 節點 撤銷實例27020節點
3、操做步驟
1.安裝MongoDB完成後,默認端口號是27017
額外添加3個實例
首先須要建立三個數據存儲目錄,三個日誌文件
mkdir -p /data/mongodb/mongodb{2,3,4} #建立3個數據文件目錄
mkdir -p /data/mongodb/logs #建立日誌文件目錄
touch /data/mongodb/logs/mongodb{2,3,4}.log #建立3個日誌文件
chmod 777 /data/mongodb/logs/*.log #修改日誌文件的權限,能寫能讀,最大權限
2.修改 27017端口默認MongoDB的配置文件,開啓複製集
vim /etc/mongod.conf
3.由於修改過配置文件因此須要關閉並從新開啓MongoDB
mongod -f /etc/mongod.conf --shutdown #關閉MongoDB
mongod -f /etc/mongod.conf #開啓MongoDB
4.複製並生成3個節點配置文件,進行修改
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod2.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod3.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod4.conf
5.須要修改每個節點的配置文件
[root@localhost logs]# vim /etc/mongod2.conf
# vim /etc/mongod2.conf
.......
path: /data/mongodb/logs/mongodb2.log //每一個實例指定本身日誌目錄
.......
dbPath: /data/mongodb/mongodb2 //每一個實例指定本身的數據目錄
port: 27018 //指定端口分別爲2701八、 27019 、 27020
.......
replication: //開啓全部實例的複製參數:定義一個 replSetName: yang
replSetName: yang
[root@localhost logs]# vim /etc/mongod3.conf
# vim /etc/mongod3.conf
.......
path: /data/mongodb/logs/mongodb3.log //每一個實例指定本身日誌目錄
.......
dbPath: /data/mongodb/mongodb3 //每一個實例指定本身的數據目錄
port: 27019 //指定端口分別爲2701八、 27019 、 27020
.......
replication: //開啓全部實例的複製參數:定義一個 replSetName: yang
replSetName: yang
[root@localhost logs]# vim /etc/mongod4.conf
# vim /etc/mongod4.conf
.......
path: /data/mongodb/logs/mongodb4.log //每一個實例指定本身日誌目錄
.......
dbPath: /data/mongodb/mongodb4 //每一個實例指定本身的數據目錄
port: 27020 //指定端口分別爲2701八、 27019 、 27020
.......
replication: //開啓全部實例的複製參數:定義一個 replSetName: yang
replSetName: yang
6.設置配置以上步驟修改完成mongo2 mongo3 mongo4後,開啓服務
[root@localhost logs]# mongod -f /etc/mongod2.conf
[root@localhost logs]# mongod -f /etc/mongod3.conf
[root@localhost logs]# mongod -f /etc/mongod4.conf
#查看下四個端口的MongoDB開啓
[root@localhost logs]# netstat -natp | grep mongo
7.配置三個節點的複製集
#首先進入默認MongoDB數據庫中
mongo
#建立三個節點複製集
cfg={"_id":"yang","members":[{"_id":0,"host":"192.168.233.6:27017"},{"_id":1,"host":"192.168.233.6:27018"},{"_id":2,"host":"192.168.233.6:27019"}]}
#初始化配置時保證從節點沒有數據
rs.initiate(cfg)
rs.status() #查看複製集的狀態
主節點:27017端口
從節點:27018端口
從節點:27019端口
#由於以前只是建立了三個節點的複製集,如今演示添加27020端口的節點
#首先須要進入主節點PRIMARY 27017
#添加節點 ,在主節點上才能進行操做 primary
rs.add("192.168.233.6:27020")
rs.status() #查看複製集的狀態
#既然能添加節點,就能刪除節點:
#刪除節點 ,在主節點上才能進行操做 primary
rs.remove("192.168.233.6:27020")