【问题标题】:Rsync MariaDB Data Folder Docker Safe?Rsync MariaDB 数据文件夹 Docker 安全吗?
【发布时间】:2020-01-30 06:41:15
【问题描述】:

我正在寻找一些见解,无论从 docker 中运行良好的 MariaDB rsync 数据文件夹的副本是否会提供可用的备份。我正在使用 docker 在生产环境中部署多个带有映射文件夹的容器。

我正在考虑使用 rsnapshot 进行夜间备份,因为它逐渐使用硬链接,我可以指定要保留的每周/每天/每月副本的数量。对于代码和实际文件,我怀疑这会很好地工作。

对于 MariaDB,我可以每晚运行 mysqldump,但这实际上每次都会使用数据库的新副本,而不是增量副本。如果我可以 rsync 数据文件夹并 100% 确定备份将完全完好无损,我认为这将是有利的。如果在 rsync 期间写入数据,这种备份方法是否有可能失败? MariaDB 中的所有文件是否会随着日常使用而变化(如果是这样就没有优势了)?

【问题讨论】:

  • MySQL的数据在哪里?在 Docker 映像中?还是从操作系统“挂载”?

标签: mysql docker mariadb database-backups


【解决方案1】:

这可能是一个常见问题,但我现在找不到真正完全匹配的问题。

答案是 — 除非 mysqld 进程停止,否则您不能使用文件系统级别的复制工具来备份 MySQL 数据库。在 Docker 环境中,如果 mysqld 进程停止,我希望容器停止。

即使没有查询运行,InnoDB 引擎也可能在后台执行写入操作,以将内存中的页面刷新到表空间中、清理回滚事务或完成一些延迟的索引合并。

如果您尝试使用rsynccp 或任何其他文件系统级工具来复制 InnoDB 文件,您只会得到无法恢复的损坏文件。

有些人使用 LVM 快照来获取整个文件系统在单个瞬间的原子快照,这可用于获取快速备份。

另一个有用的工具是 Percona XtraBackup,它在复制 InnoDB 表空间文件的同时也不断地复制 InnoDB 事务日志。只有这两者同步,才能恢复备份。在此处阅读文档:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html

在我目前的工作中,我们使用 Percona XtraBackup 为数千个 MySQL 实例进行夜间备份。我们在 Docker pod 中运行 Percona Server(不是 MariaDB),Percona XtraBackup 作为 pod 中的另一个容器运行。它运行良好,而且是免费的开源软件。

【讨论】:

  • 我同意,应该始终使用适当的工具来备份您的数据。 PostgreSQL 的 pg_dump。 Recovery Manager 用于 Oracle 数据库。 sqlcmd 用于 MS SQL Server。对于 MySQL 服务器,mysqldump —single-transaction 在磁盘很热时创建一致的备份。
  • 但是 OP 说他们不想使用 mysqldump 因为从技术上恢复它会创建一个包含相同数据的不同数据库。我为一致的物理备份提供了两个选项。
猜你喜欢
  • 2021-09-30
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2013-09-26
  • 2022-10-02
  • 1970-01-01
相关资源
最近更新 更多