Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Docker数据安全_Mongodb_Docker_Docker Compose_Recovery - Fatal编程技术网

Mongodb Docker数据安全

Mongodb Docker数据安全,mongodb,docker,docker-compose,recovery,Mongodb,Docker,Docker Compose,Recovery,我今天有一个悲伤的故事。 我丢失了自周六以来所做的所有数据库更改 我们使用mongodb(3.4.1),在这个特殊的例子中,它在其官方docker容器中运行,并带有映射卷 容器是使用docker compose创建的,docker compose.yml如下所示: version: "2" services: database: image: mongo:3.4.1 restart: always conta

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

我们使用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的错。
但是问题仍然有效:)

查看您的撰写文件,您引用的源目录是相对的
~/data/db
。如果系统上有多个用户帐户可以访问该compose文件(即root用户帐户和命名用户帐户),则
“~/data/db”
目录会有所不同,具体取决于哪个用户运行compose来启动容器。也许在你的环境中发生了类似的事情

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


使用标准主机目录作为数据卷不应导致数据的自动回滚。如果这不是上面提到的目录上下文的问题,那么可能还涉及到其他一些因素,例如有人还原文件系统快照、还原备份或直接更改数据库。

您能详细介绍一下术语“映射卷”吗?您是如何创建/连接此卷的?在Docker中创建卷有多种方法,每种方法都有不同的行为/限制/风险。我使用了Docker compose:volumes:-~/data/db:/data/db。这并没有告诉我们任何事情,请编辑问题并提供有关如何映射或创建卷的更多详细信息。您认为它不是mongodb吗?docker可以将我的卷回滚到以前的状态吗?我已经添加了一些细节。谢谢!你说得对!用户依赖路径是我的错。。。我几乎开始相信魔法…太棒了。很高兴你把它整理好了!