天天看點

Docker Mongo資料庫主從同步配置方法

主伺服器172.17.1.32

從伺服器172.17.1.24

一、啟動容器

docker run -d -p 27018:27017 --name="mongo_master" -v /ruoyi/mongo hub.c.163.com/library/mongo --noprealloc --smallfiles --replSet rs

docker run -d -p 27018:27017 --name="mongo_slave1" -v /ruoyi/mongo hub.c.163.com/library/mongo --noprealloc --smallfiles --replSet rs

docker run -d -p 27019:27017 --name="mongo_slave2" -v /ruoyi/mongo hub.c.163.com/library/mongo --noprealloc --smallfiles --replSet rs

二、配置主伺服器

登陸

docker exec -it mongo_master bash

mongo --port 27017

初始化配置檔案

myconf = {"_id":"rs","members":[{"_id":0,"host":"172.17.1.32:27018"},{"_id":1,"host":"172.17.1.24:27018"},{"_id":2,"host":"172.17.1.24:27019"}]}  

執行初始化配置

rs.initiate(myconf)  

三、設定從伺服器節點

docker exec -it mongo_slave1 bash

mongo --port 27017

rs.slaveOk();  //承認自己是Secondary

docker exec -it mongo_slave2 bash

mongo --port 27017

rs.slaveOk();  //承認自己是Secondary

四、檢視主節點狀态

rs.isMaster();  //檢視主節點配置資訊

rs.status();     //檢視狀态

rs.conf();        //檢視配置

五、檢視從節點狀态

rs.isMaster();  //檢視主節點配置資訊

rs.status();     //檢視狀态

rs.conf();        //檢視配置

六、測試

mongo_master有讀寫權力,資料同步mongo_slave1和mongo_slave2

mongo_slave1和mongo_slave2隻讀

如果mongo_master當機,mongo_slave1切換為主伺服器

參考:

https://www.cnblogs.com/jinjiangongzuoshi/p/9301062.html

https://www.jianshu.com/p/9008fc35f182

https://www.jianshu.com/p/cfd424a3c5d3

springboot連接配接mongodb叢集

https://blog.csdn.net/qq_35418518/article/details/100797259

強制切換為主節點

檢視要切為主節點的id

 rs.status()

 然後

 cfg=rs.conf()

 cfg.members=[cfg.members[0]]

 rs.reconfig(cfg, {force: true});

 參考:

 http://blog.chinaunix.net/uid-20785090-id-5664554.html