docker托pipe的数据库以某种方式免于备份最佳实践?

据我所知,对于MS SQL,PostgreSQL, 甚至是MySQL数据库(所以,我假设,一般RDBMS引擎),你不能简单地备份他们托pipe的文件系统,但需要做一个SQL-对内部一致性有任何希望,因此能够实际恢复。

但是,然后这样的答案 ,实际上引用的官方文档似乎表明,可以打开数据库数据:

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

这两个想法似乎彼此不一致。 有没有什么特别的Docker如何工作,使得没有必要使用SQL级别的备份? 如果不是的话,我的理解是什么? (当你不能用它来备份一个生产数据库时,为什么要用这个官方的例子呢?这是不对的…)

在某些情况下,在磁盘上使用数据库的映像应该是安全的:

  • 数据库服务器没有运行。
  • 所有持久性数据位于正在备份的磁盘系统上(日志,表空间,临时存储)。
  • 所有组件都一起恢复。
  • 您正在将图像还原到同一path上的相同服务器。

最后一个条件很重要,因为数据库configuration的某些方面可能存储在操作系统文件中。

每当服务器运行时,您都需要在数据库中进行备份。 服务器负责数据的内部一致性,并且磁盘映像可能不完整或不可恢复。 如果服务器没有运行,那么数据库的状态应该在持久存储中保持一致。