現有一台單機運行中的 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"}]}
初始化