mongodb - docker备份和恢复mongodb

标签 mongodb docker

创建仅数据容器:

docker create -v /mongodb_data --name mongodb_data mongo

创建monogdb容器:

docker run --volumes-from mongodb_data --name mongo_db --restart always -d mongo

然后要在我自己的容器中使用 mongodb,我使用链接命令:

--link mongo_db:mongo

所以一切正常。现在我想根据文档备份 mongodb:http://docs.docker.com/userguide/dockervolumes/#backup-restore-or-migrate-data-volumes这个命令:

docker run --volumes-from mongodb_data -v $(pwd):/backup busybox tar cvf /backup/backup.tar /mongodb_data

然而,创建的 tar 文件只有一个空的 /mongodb_data 文件夹。该文件夹不包含单个文件。

任何想法有什么问题吗?我在 ubuntu 14.04 LTS 上使用 docker 1.7。

最佳答案

问题在于您的数据容器。您使用不存储任何 mongo db 数据的路径 /mongodb_data 创建卷。默认情况下,mongo db存储路径为/data/db(根据this#Where to Store Data Section)

因此,您的 mongodb 数据不会保存在您的仅数据容器中。所以这里有一个解决方法:

  • /data/db 复制到 mongodb 容器中的 /mongodb_data docker exec -it mongo_db bash 然后 cp -r/data/db/*/mongodb_data/

  • 按照 doc 进行备份你提到了

  • 构建一个新的仅数据容器并加载备份

  • 删除当前 mongo_db 容器并使用新的仅数据容器重新创建一个新容器

或者,您可以修改您的 mongodb 配置,将默认目录更改为 /mongodb_data/data/db 复制所有数据后> 到 /mongodb_data。您可能会发现这很有用Changing MongoDB data store directory

关于mongodb - docker备份和恢复mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31370253/

相关文章:

node.js - Mongoose 聚合 : MongoError: unknown operator: $or

java - 无法从 Java 连接到在 Docker 中运行的 Kafka

spring - 我如何从 Docker 'run' 命令设置 Spring Boot 属性

c++ - 在docker中编译不同内核的代码会受到什么影响?

php - 谷歌云空间/图像部署错误,构建未完成

mongodb - 关于 MongoDB 模式设计的建议

mongodb - 在 pymongo 中计算查询结果时使用 with_limit_and_skip=True 是否更快

javascript - Mongoose/MongoDB 查询 .find() 任何 int > 0?

MongoDB compass - 从文档中的 3 个字段及其值中获取具有最大值的字段名称(键)

docker - 在运行时传递环境变量而不带引号