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.