現在、Docker で実行されている単一の MongoDB があり、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 モードで実行し、設定ファイルの場所を指定します。 -
設定ファイルとキーファイルの場所を指定します。
3. mongod.conf 設定ファイル#
ファイルでデータの場所とキーファイルの場所を指定します。
storage:
dbPath: /data/db
journal:
enabled: true
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: enabled
keyFile: /etc/mongo.keyfile
4. mongo.keyfile#
キーファイルの内容は openssl ツールを使用して生成します。
openssl rand -base64 756 > mongo.keyfile
権限を設定します:
chmod 400 mongo.keyfile
ユーザーを設定します:
chown 999:999 mongo.keyfile
そうしないと、「permission too open」などの権限エラーが発生し、MongoDB が起動しなくなります。
5. MongoDB の起動#
MongoDB コンテナのクライアントに入ります。
rs.initiate({ _id: "rs", members: [{_id:0,host:"ip:port"}]}
初期化します。