前言,目前生产环境的mongodb是用docker-compose部署的单机实例,这其实是不太合理的,一般容器是用来跑无状态服务,而且用容器的方式来部署数据库,势必性能会不如硬装或者Sass服务,而且占用的资源比较大,考虑这一点,计划将mongodb迁移至阿里云托管,使用全量+增量的方式迁移。那么在此之前数据库需要开启oplog,否则无法进行增量迁移。

1、修改mongodb配置,在docker-compose.yml里面增加
在这里插入图片描述

 command:
    - --replSet
    - rs

2、开启副本集名为RS,然后重启mongodb容器,使其生效,然后进入容器里面执行
登陆数据库: 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

首次查看会报错,此时需要执行初始化命令

rs.initiate({ _id: "副本集名称", members: [{_id:0,host:" 服务器的IP : Mongo的端口号 "}]})
例如(对应上述配置):
> rs.initiate({ _id: "rs", members: [{_id:0,host:"172.18.40.157:27017"}]})
{ "ok" : 1 }

执行完成后提示{ "ok" : 1 },代表执行成功

初始完,副本集中唯一的节点,稍等一会,就会变为primary

rs:PRIMARY> show dbs

就能查到数据库了

3、用mongodb-compass工具登陆上去,找到local库,点开
在这里插入图片描述
出现这个oplog.rs集合就行了

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐