现有一台单机运行中的 mongodb,跑在 docker 里,现在需要读取其 oplog, 所以要开启 replSet 模式。
1、停机#
把数据目录拷贝一下备份好
2、docker-compose 文件修改#
mongodb:
command: mongod --replSet rs -f /etc/mongod.conf
volumes:
- ./mongod.conf:/etc/mongod.conf
- ./mongo.keyfile:/etc/mongo.keyfile
-
新增
--replSet rs
及-f
参数指定运行方式为 rs 以及配置文件的位置 -
指定配置文件和 key 文件的位置
3、mongod.conf 配置文件#
文件指定数据位置、keyfile 位置
storage:
dbPath: /data/db
journal:
enabled: true
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: enabled
keyFile: /etc/mongo.keyfile
4、mongo.keyfile#
keyfile 的内容用 openssl 工具生成即可
openssl rand -base64 756 > mongo.keyfile
设置权限:
chmod 400 mongo.keyfile
设置用户
chown 999:999 mongo.keyfile
否则 会出现 permission too open
等权限报错,mongo 起不来。
5、启动 mongo#
进入 mongo 容器的 client
rs.initiate({ _id: "rs", members: [{_id:0,host:"ip:port"}]}
初始化