设置 mongo 映像以启用复制并使用 docker 从 /data/db 恢复备份

问题描述 投票:0回答:1

我正在尝试部署一个 mongo 映像,该映像启用具有主从的副本,并通过 /data/db/ 目录中的卷恢复信息

当我不进行任何复制时,数据库可以正常工作,不需要 directConnect 并恢复所有文档,但是当我配置副本时,它不会恢复信息

我的 docker-compose 没有复制:

version: "3.7"
services:
  dbComMongoGR:
    container_name: dbComMongoTR
    image: mongo:5.0.5
    restart: always
    environment:
      - MONGO_INITDB_ROOT_USERNAME=ComAdmin
      - MONGO_INITDB_ROOT_PASSWORD=C0m202Z
      - MONGO_INITDB_DATABASE=TransactionesMD
    volumes:
      - ./databdTR:/data/db
    ports:
      - 27017:27017

我的复制设置:

Dockerfile:

FROM mongo:5.0.5

COPY mongod.conf /etc/mongod.conf

EXPOSE 27017

RUN echo  '10.192.85.46 dbRepComMongoTR' >> /etc/hosts \&& echo '10.192.85.28 dbComMongoTR' >> /etc/hosts

CMD ["mongod", "--config", "/etc/mongod.conf","--dbpath","/data/db"]

mongod.conf:

net:
  port: 27017
  bindIp: 127.0.0.1,dbComMongoTR
replication:
  replSet: "myRs0"

docker-compose.yml:

version: '3.7'
services:
  dbRepMongoTR:
    container_name: dbComMongoTR
    image: mongorep:1.0
    ports:
      - 27017:27017
    restart: always
    volumes:
      - ./databdTR:/data/db
    environment:
      - MONGO_INITDB_ROOT_USERNAME=ComAdmin
      - MONGO_INITDB_ROOT_PASSWORD=C0m202Z
      - MONGO_INITDB_DATABASE=TransactionesMD
    command: bin/sh -c "mongod --replSet myRs0 --bind_ip 127.0.0.1,dbComMongoTR --dbpath /data/db"
              \&& echo  '10.192.85.46 dbRepComMongoTR' >> /etc/hosts 
              \&& echo '10.192.85.28 dbComMongoTR' >> /etc/hosts

我需要恢复这个备份,原来的DB有150GB的数据。

这样,要连接到mongo,我必须使用直接连接,但它不会恢复卷信息,我对目录中的容器运行docker exec,确实有所有文件

从主服务器到/databdTR目录我将权限更改为777作为解决方案测试,它不起作用

mongodb docker docker-compose backup replication
1个回答
0
投票
--storageEngine wiredTiger

必须添加到启动命令中,完整的命令如下所示:

command: bin/sh -c "mongod --replSet myRs0 --bind_ip 127.0.0.1,dbComMongoTR --dbpath /data/db --storageEngine wiredTiger"

将其添加到 Dockerfile

© www.soinside.com 2019 - 2024. All rights reserved.