MongoDB 备份和 Docker 问题
MongoDB Backup and Docker Problems
我花了几周的时间尝试从我的 docker 进行备份,但没有成功。
我的Docker撰写:
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: user
MONGO_INITDB_ROOT_PASSWORD: password
networks:
- internal
volumes:
- /opt/rpg/mongo/data:/data/db
输入:docker exec mongo sh -c 'exec mongodump -d rpg --archive' > /home/rpg/all-collections.archive
输出:Failed: error getting collections for database rpg: error running listCollections. Database: rpg Err: command listCollections requires authentication
然后我尝试使用密码
输入:docker exec mongo sh -c 'exec mongodump -d rpg —uri="mongodb://user:password@mongo:27017/rpg?authSource=admin" --archive' > /home/rpg/all-collections.archive
输出:SASL authentication step: Authentication failed.
经过数周的尝试,我连接上了:
sudo docker run -it --rm --network internal mongo \
mongo --host mongo \
-u user \
-p password \
--authenticationDatabase admin \
rpg
现在我可以看到 collections 和所有内容,但我仍然无法获得备份。
也尝试过:
输入:
sudo docker run --rm --network internal mongo \
mongodump --host mongo \
-u user \
-p password \
--authenticationDatabase admin \
--db rpg
> ~/rpg2-collections.archive
输出:
Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.
没有成功,有人可以帮助我吗?
我是这样做的:
mongodump --host='{mongo_server}' --db='{mongo_db}' --collection='{collection_name}' --out={output_folder}
而且效果很好。
尽管如您所见,我正在通过单独主机上的 python 脚本逐个收集转储,因为我无法一次备份所有内容。
所以第一步是从安装了 mongo 客户端的容器中获取所有集合:
mongo {mongo_server}/{mongo_db} --eval 'db.getCollectionNames()' --quiet
我的脚本还将每个集合转储上传到 s3 存储桶 s3cmd
,这就是为什么您只看到其中一部分的原因...
几周后,我从文件(不是 mongodump)获得了备份。
sudo tar czvf /home/backup.tar.gz /opt/rpg/mongo
然后我修理了我的电脑并开始工作。
mongod --repair ./{{folder}}
遇到相同的身份验证问题,并且此命令有效:
docker exec <docker_container_name> sh -c 'mongodump --uri="mongodb://username:password@localhost:27017/db_name?authSource=admin&readPreference=primary" --archive' > db.dump
我花了几周的时间尝试从我的 docker 进行备份,但没有成功。
我的Docker撰写:
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: user
MONGO_INITDB_ROOT_PASSWORD: password
networks:
- internal
volumes:
- /opt/rpg/mongo/data:/data/db
输入:docker exec mongo sh -c 'exec mongodump -d rpg --archive' > /home/rpg/all-collections.archive
输出:Failed: error getting collections for database rpg: error running listCollections. Database: rpg Err: command listCollections requires authentication
然后我尝试使用密码
输入:docker exec mongo sh -c 'exec mongodump -d rpg —uri="mongodb://user:password@mongo:27017/rpg?authSource=admin" --archive' > /home/rpg/all-collections.archive
输出:SASL authentication step: Authentication failed.
经过数周的尝试,我连接上了:
sudo docker run -it --rm --network internal mongo \
mongo --host mongo \
-u user \
-p password \
--authenticationDatabase admin \
rpg
现在我可以看到 collections 和所有内容,但我仍然无法获得备份。
也尝试过:
输入:
sudo docker run --rm --network internal mongo \
mongodump --host mongo \
-u user \
-p password \
--authenticationDatabase admin \
--db rpg
> ~/rpg2-collections.archive
输出:
Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.
没有成功,有人可以帮助我吗?
我是这样做的:
mongodump --host='{mongo_server}' --db='{mongo_db}' --collection='{collection_name}' --out={output_folder}
而且效果很好。 尽管如您所见,我正在通过单独主机上的 python 脚本逐个收集转储,因为我无法一次备份所有内容。
所以第一步是从安装了 mongo 客户端的容器中获取所有集合:
mongo {mongo_server}/{mongo_db} --eval 'db.getCollectionNames()' --quiet
我的脚本还将每个集合转储上传到 s3 存储桶 s3cmd
,这就是为什么您只看到其中一部分的原因...
几周后,我从文件(不是 mongodump)获得了备份。
sudo tar czvf /home/backup.tar.gz /opt/rpg/mongo
然后我修理了我的电脑并开始工作。
mongod --repair ./{{folder}}
遇到相同的身份验证问题,并且此命令有效:
docker exec <docker_container_name> sh -c 'mongodump --uri="mongodb://username:password@localhost:27017/db_name?authSource=admin&readPreference=primary" --archive' > db.dump