Basically what I'm looking for is a way to tell mysql (percona-flavored) to take the following steps:
- Flush all committed transactions to the filesystem
- Start buffering all transactions (keep the filesystem in a coherent state)
- Wait for me to do something (take a zfs snapshot)
- Unbuffer writes and resume normal operations
A solution which allows DDL statements to break the backup are acceptable (because this backup solution will be applied frequently and DDL statements will be very infrequent - worst-case scenario would be having to roll back a db one hour more than expected).
Backup operations should be minimally disruptive to performance, but this is not a system under heavy load. Solutions which perform this procedure per-database or system-wide are both fine, though the latter is somewhat preferred.
If all of your databases are in InnoDB format, then you don't need to do this. InnoDB will automatically make your data consistent at startup if you do a restore.