在Docker中使用MongoDB - 在容器关闭时备份数据库

6
我正在尝试使用Node和MongoDB设置docker-compose。与官方的Mongo容器结合使用,我使用专用容器(mongodb-backup)对数据库进行持续备份,并在启动时进行初始恢复。
我的问题是如何在通过docker-compose stop进行优雅关闭时触发备份。 因此,首先需要关闭Node容器以确保没有进程正在向数据库写入。然后备份数据库,最后关闭mongodb和mongodb-backup容器。
这个repository包含了我的mongodb和mongodb-backup的docker-compose设置。
有人有想法如何实现这个吗?

你的问题对我来说不是100%清楚。你的意思是,mongo容器出了问题后,你如何从备份中恢复数据? - RichArt
不,恢复操作由mongodb-backup容器处理。我想在mongodb容器关闭之前备份(转储)数据库。 - Tobias Wittwer
1
我想你备份的目的是为了防止mongodb容器出现故障而导致数据丢失。因此,唯一的方法是安排每日或每小时备份。你如何知道下一次mongodb容器何时关闭?只有在计划维护期间才会关闭。这是你的情况吗? - RichArt
预定的备份已经实现。我的使用情况现在是例如维护。 因此,我希望在计划的 docker-compose stop 的情况下自动保存最新的数据。 - Tobias Wittwer
好的,现在我明白你想做什么了。也许你想更新你上面的问题,以便尽快得到社区的答案。 - RichArt
1个回答

1
您可以为此情况编写一个小型维护脚本。不要执行原始的docker-compose stop,而是运行这个脚本。我们称之为maintenance.sh:
#!/bin/sh
docker-compose stop app
docker-compose stop mongo-backup # ensure only one is active
docker-compose run --rm -e INIT_BACKUP=1 # do the backup manually
docker-compose stop mongo # stop the database

能否给那些点踩的人留下评论呢?如果有问题,我很乐意调整我的回答。 - ShrimpPhaser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接