mongodb单机实例开启oplog
前言,目前生产环境的mongodb是用docker-compose部署的单机实例,这其实是不太合理的,一般容器是用来跑无状态服务,而且用容器的方式来部署数据库,势必性能会不如硬装或者Sass服务,而且占用的资源比较大,考虑这一点,计划将mongodb迁移至阿里云托管,使用全量+增量的方式迁移。那么在此之前数据库需要开启oplog,否则无法进行增量迁移。1、修改mongodb配置,在docker-c
·
前言,目前生产环境的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集合就行了
更多推荐
已为社区贡献3条内容
所有评论(0)