如何将 MySQL 数据库恢复到某个时间点

How to restore MySQL database to a point in time

一个MySQL数据库用于测试目的,所以我想运行后端API测试这个(多个事务),模拟生产中的真实数据库。

测试执行完成后,我想恢复执行前的数据库,以便能够 运行 使用该数据库快照进行更多测试。

我没有任何 MySQL 版本限制,因为它将是一个全新的数据库服务器。

恢复此数据库的最高效方法是什么?

你有很多选择:

  • 使用 mysqldump 之类的工具创建快照,稍后从该快照恢复以重置数据库。
  • 在像 ZFS 一样支持它的文件系统上创建一个 volume-level 快照并在以后恢复它。
  • 创建虚拟机并为其创建快照,稍后将其恢复到快照。大多数 VM 环境(如 VirtualBox)都支持此功能。
  • 使用带有附加卷的 Docker 容器,您可以创建快照和恢复。

我会使用 Percona XtraBackup 创建物理备份。这可以比 mysqldump.

创建的转储更快地恢复

如果数据库足够大(超过 100GB),即使是物理备份也不够快。我会使用文件系统的 LVM 快照。例如,参见 https://www.lullabot.com/articles/mysql-backups-using-lvm-snapshots