前言,目前生產(chǎn)環(huán)境的mongodb是用docker-compose部署的單機實例,這其實是不太合理的,一般容器是用來跑無狀態(tài)服務(wù),而且用容器的方式來部署數(shù)據(jù)庫,勢必性能會不如硬裝或者Sass服務(wù),而且占用的資源比較大,考慮這一點,計劃將mongodb遷移至阿里云托管,使用全量+增量的方式遷移。那么在此之前數(shù)據(jù)庫需要開啟oplog,否則無法進行增量遷移。
1、修改mongodb配置,在docker-compose.yml里面增加

image.png
command:
- --replSet
- rs
2、開啟副本集名為RS,然后重啟mongodb容器,使其生效,然后進入容器里面執(zhí)行
登陸數(shù)據(jù)庫: mongo -uroot -p
> show dbs
2020-12-15T06:34:44.267+0000 E QUERY [js] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:139:1
shellHelper.show@src/mongo/shell/utils.js:882:13
shellHelper@src/mongo/shell/utils.js:766:15
@(shellhelp2):1:1
首次查看會報錯,此時需要執(zhí)行初始化命令
rs.initiate({ _id: "副本集名稱", members: [{_id:0,host:" 服務(wù)器的IP : Mongo的端口號 "}]})
例如(對應(yīng)上述配置):
> rs.initiate({ _id: "rs", members: [{_id:0,host:"172.18.40.157:27017"}]})
{ "ok" : 1 }
執(zhí)行完成后提示{ "ok" : 1 },代表執(zhí)行成功
初始完,副本集中唯一的節(jié)點,稍等一會,就會變?yōu)閜rimary
rs:PRIMARY> show dbs
就能查到數(shù)據(jù)庫了
3、用mongodb-compass工具登陸上去,找到local庫,點開

image.png
出現(xiàn)這個oplog.rs集合就行了