您好,登錄后才能下訂單哦!
復制集(Replica Sets)是額外的數據副本,是跨多個服務器同步數據的過程,復制集提供了冗余備份并提高了數據的可用性,通過復制集可以對硬件故障和中斷的服務進行恢復。
- mongodb的復制集至少需要兩個節點。其中一個是主節點(Primary),負責處理客戶端請求,其余的都是從節點(Secondary),負責復制主節點上的數據。
- mongodb各個節點常見的搭配方式為:一主一從、一主多從。主節點記錄其上的所有操作到 oplog 中,從節點定期輪詢主節點獲取這些操作,然后對自己的數據副本執行這些操作,從而保證從節點的數據與主節點一致。
- 客戶端在主節點寫入數據,在從節點讀取數據,主節點與從節點進行數據交互保障數據的一致性。如果其中一個節點出現故障,其他節點馬上會將業務接過來而無需停機操作。
復制集的特點:
- N個節點的群集
- 任何節點都可作為主節點
- 所有寫入操作都在主節點上
- 自動故障轉移
- 自動恢復
- 讓數據更安全
- 高數據可用性(24x7)
- 災難恢復
- 無停機維護(如備份、索引重建、故障轉移)
- 讀縮放(額外的副本讀取)
- 副本集對應用程序是透明的
我們可以在一臺服務器上創建多實例,來做復制集
MongoDB安裝及創建多實例詳解在博文CentOS 7安裝MongoDB(最新版4.0)
# 創建實例的數據目錄
mkdir -p /data/mongodb/mongodb{1,2,3,4}
# 創建實例的日志目錄
mkdir -p /data/logs
# 創建實例的日志文件
touch /data/logs/mongodb{1,2,3,4}.log
# 賦予日志文件權限
chmod 777 /data/logs/mongodb*.log
#創建實例的配置文件存放位置
mkdir -p /data/conf
# vim /data/conf/mongodb1.conf //簡易配置為下,
dbpath=/data/mongodb/mongodb1
logpath=/data/logs/mongodb1.log
port=27017
replSet=testrc #配置參數值為testrc
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
需要注意其他三個實例的配置文件中的數據文件存放位置及日志文件和端口要改
[root@CentOS7 conf]# cd /usr/local/mongodb/bin
[root@CentOS7 bin]# vim mongodb
#!/bin/bash
INSTANCE=$1
ACTION=$2
case "$ACTION" in
'start')
/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf;;
'stop')
/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf --shutdown;;
'restart')
/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf --shutdown
/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf;;
esac
[root@CentOS7 bin]# chmod +x mongodb
[root@CentOS7 bin]# ./mongodb mongodb1 restart
[root@CentOS7 bin]# ./mongodb mongodb2 restart
[root@CentOS7 bin]# ./mongodb mongodb3 restart
[root@CentOS7 bin]# ./mongodb mongodb4 restart
[root@CentOS7 bin]# netstat -ntap | grep mongod
mongo #(默認端口:27017)
> rs.status()
4.2 定義cfg初始化參數(這里添加三臺,剩下的那臺實驗添加節點功能)
> cfg={"_id":"testrc","members":[{"_id":0,"host":"192.168.125.119:27017"},{"_id":1,"host":"192.168.125.119:27018"},{"_id":2,"host":"192.168.125.119:27019"}]}
4.3 啟動復制集功能,初始化配置時保證從節點沒有數據,保持主從節點數據同步
> rs.initiate(cfg)
testrc:PRIMARY> rs.add("192.168.125.119:27020")
testrc:PRIMARY> rs.remove("192.168.125.119:27020")
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。