mysql - docker 托管的数据库是否以某种方式免于备份最佳实践?

标签 mysql database postgresql docker database-backups

据我所知,对于 MS SQL、PostgreSQL 和 even MySQL数据库(所以,我假设,一般来说对于 RDBMS 引擎),你不能简单地备份它们所在的文件系统,而是需要做一个 SQL 级别的备份以获得内部一致性的希望,从而获得实际恢复的能力。

然后answers like this确实the official docs referenced似乎建议可以tar 处理数据库数据:

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

这两个想法似乎相互矛盾。 Docker 的工作方式有什么特别之处,可以不必使用 SQL 级别的备份吗?如果不是,我的理解中缺少什么? (当您不能使用它来备份生产数据库时,为什么将其用作官方示例?那不可能是对的...)

最佳答案

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

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

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

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

关于mysql - docker 托管的数据库是否以某种方式免于备份最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31049402/

相关文章:

python - 为什么带有 SQL 查询参数的 psycopg2 cursor.execute() 会导致语法错误?

mysql - 哪些 DBMS 提供索引组织表?

mysql - 如何编码日期以在 mysql 中进行高效查询

php - 在循环内将数组数据更新到数据库

python - Mysqldb 未安装在使用 pycharm 的 Flask 应用程序中

mysql - 如何从三个表中删除行 - 查询错误

database - aerospike-go 库中的嵌入式结构意外行为

php - PDO 不会给出结果

sql - Mysql - 我可以有一个 View ,它是表的内存图像

postgresql - Postgres : How to sort by string date with timezone?