现有一台单机运行中的mongodb,跑在docker里,现在需要读取其oplog, 所以要开启replSet模式。 ## 1、停机 把数据目录拷贝一下备份好 ## 2、docker-compose 文件修改 ``` yaml 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工具生成即可 ``` bash openssl rand -base64 756 > mongo.keyfile ``` 设置权限: ``` bash chmod 400 mongo.keyfile ``` 设置用户 ``` bash chown 999:999 mongo.keyfile ``` 否则 会出现 `permission too open` 等权限报错,mongo起不来。 ## 5、启动mongo 进入mongo 容器的 client ``` rs.initiate({ _id: "rs", members: [{_id:0,host:"ip:port"}]} ``` 初始化