Search code examples
mysqldatabasedatabase-backupsdatabase-restore

How to restore MySQL database to a point in time


A MySQL database is used for test purpose, so I want to run backend API tests on this (multiple transactions), simulating a real database in production.

When tests execution are finished, I want to restore the database in the point before that execution, to be able to run more tests with that database snapshot.

I don't have any MySQL version restriction, because it'll be a fresh database server.

What's the most performant way to restore this database?


Solution

  • I'd use Percona XtraBackup to create a physical backup. This can be restored a lot faster than a dump created by mysqldump.

    If the database is large enough (over 100GB), even a physical backup won't be fast enough. I'd use LVM snapshots of the filesystem. See https://www.lullabot.com/articles/mysql-backups-using-lvm-snapshots for example.