環境說明
- mongodb 4.0.4
- centos linux 7.4
- 192.168.0.19 192.168.0.20 192.168.0.21 三台機器
安裝mongodb,配置副本集
- 前往mongo的官網下載下傳安裝包,如果你下的是rpm包,直接rpm安裝就好了。如果是tar包,就解壓把裡面的bin目錄移動到你想要的地方。
本部落格mongodb的根目錄是/app/mogodb
- 建立目錄
# /app/mogodb下建立如下目錄
conf 放置配置檔案
data 放置資料檔案
keyfile 放置秘鑰檔案
log 放置日志檔案
run 放置pid檔案
- 建立配置檔案
# 進入conf檔案夾
cd conf
# vi mongo_node.conf
net:
port: 26001
bindIp: 0.0.0.0
storage:
engine: wiredTiger
directoryPerDB: true
dbPath: /app/mogodb/data
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /app/mogodb/log/mongod.log
operationProfiling:
slowOpThresholdMs: 10000
replication:
oplogSizeMB: 10240
replSetName: han
processManagement:
fork: true
pidFilePath: /app/mogodb/run/mongodb.pid
security:
authorization: "enabled"
clusterAuthMode: keyFile
keyFile: /app/mogodb/keyfile/mongo.key
replSetName
這是副本集的名字,請你自定義
port
三個節點可以用相同的端口,建議不要用一樣的容易混,我這裡用的是26001 26002 26003
- 建立秘鑰檔案
進入keyfile目錄
openssl rand -base64 756 > mongo.key
- 啟動節點
進入bin目錄
# 啟動節點
./mongod -f /app/mogodb/conf/mongo_node.conf --auth
# 如果要關閉節點
#./mongod -f /app/mogodb/conf/mongo_node.conf --shutdown
# netstat -an|grep 26001
檢查端口是不是啟動了
- 配置副本集
#随便挑選一個節點,連接配接進入
./mongo --port=26001
#配置admin使用者
db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]});
# 切換到admin資料庫,并使用admin登入
use admin;
db.auth("admin","admmin");
# 建立副本集,注意這裡的_id 要和你的副本集的名字一樣
# priority: 添加優先級, 0代表不能成為主節點;優先級為0的成員 可以設定 hidden:true 用來隐藏這個成員也就是在檢視配置的時候看不到這個成員
config = { _id : "han", members : [ {_id : 0, host : "192.168.0.19:26002" }, {_id : 1, host : "192.168.0.20:26003" }, {_id : 2, host : "192.168.0.21:26001"} ] };
#初始化副本集
rs.initiate(config);
#檢視建立狀态
rs.status()
- 測試
# 在主節點上插入一條資料,指令行中顯示PRIMARY的那個節點就是主節點
db.blog.insert({"name":"test"});
# 去其他節點上檢視
#預設slave節點上不能讀,提示 not master and slaveOk=false
# 執行 rs.slaveOk(); 解決隻讀問題
db.blog.find();
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0zaU9keZR0TyEFVNdXVzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcugzNxQzM1AjMzITMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
延遲節點
當我們誤操作删除了某些東西,并且我們mongodb的資料庫同步很給力,這時的副本集對于你的誤操作不能幫上什麼忙。
那麼我們就要引入延遲節點,顧名思義就是他同步資料時總是和别人慢半拍。
- 配置
# 主節點建立配置,注意選擇的延遲節點不要是主節點
# 延遲節點的優先級是0,也就是說永遠不會成為主節點
config = { _id : "han", "protocolVersion" : 1,members : [ {_id : 0, host : "192.168.0.19:26002" }, {_id : 1, host : "192.168.0.20:26003" }, {_id : 2, host : "192.168.0.21:26001","slaveDelay":10,"priority":0} ] };
# 重新配置副本集
rs.reconfig(config);
protocolVersion
這個要必須有的,否則會報Support for replication protocol version 0 was removed in MongoDB 4.0
- 測試
#主節點上插入資料
#然後登入延遲節點上檢視,檢視是不是延遲了
先寫到這裡了,如果有問題請加入qq群630300475,大家一起聊一下