如何将 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。
一个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。