gpt4 book ai didi

mongodb - Docker数据安全

转载 作者:可可西里 更新时间:2023-11-01 09:39:15 25 4
gpt4 key购买 nike

今天我有一个悲伤的故事。我丢失了自周六以来所做的所有数据库更改。

我们使用 mongodb (3.4.1),在这种特殊情况下,它在其带有映射卷的官方 docker 容器内运行。

容器是使用 docker-compose 创建的,docker-compose.yml 如下所示:

version: "2"
services:
database:
image: mongo:3.4.1
restart: always
container_name: cvs-db
volumes:
- ~/data/db:/data/db
ports:
- "27017:27017"

~/data/db 只是很久以前创建的一个普通文件夹。

在我重新启动容器后(使用 docker-compose up -d),数据恢复到两天前的状态。甚至删除也消失了。

我们昨天清理了所有集合并开始用真实数据填充它们,现在它包含我们最近删除的所有测试数据。

所以,我的问题是:1)如何保护mongodb数据免受此类灾难?2)有人能说出可能导致这些结果的确切条件吗?3) 如何恢复数据?

编辑:经过一些研究,我认为这是 docker-compose 错误。但是问题仍然有效:)

最佳答案

查看您的撰写文件,您将源目录引用为相对 ~/data/db。如果您在系统上有多个用户帐户可以访问该组合文件(即 root 加上一个指定的用户帐户),那么 "~/data/db" 目录将是不同的 取决于哪个用户运行 compose 来启动容器。也许在您的环境中发生过类似的事情。

最好使用主机卷的绝对路径(即 /opt/data/db:/data/db),而不是可以根据用户或父目录更改的路径上下文以避免出现此类问题的可能性。

使用标准主机目录作为数据卷不应导致数据自发回滚。如果它不是上述目录上下文的问题,则可能涉及其他一些因素,例如有人恢复文件系统快照、恢复备份或直接更改数据库。

关于mongodb - Docker数据安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41837893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com