// 未分类
Docker 运行中 单价 MongoDB 开启Replicate Set 模式
发布 2022-01-24 · 永久链接
现有一台单机运行中的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"}]}
```
初始化