Я знайшов ряд сайтів, які говорять про те, щоб зробити саме це, але мені не вистачає кількох важливих деталей. Загальні кроки такі
- Біжи
FLUSH TABLES WITH READ LOCK
- Зробіть знімок ZFS
- Біжи
UNLOCK TABLES
Різні джерела повідомляють, що InnoDB, який я використовую, насправді не шанує FLUSH
. Посібник користувача MySQL зазначає, що існує FLUSH TABLES...FOR EXPORT
варіант для використання з InnoDB, але для цього потрібно вказувати кожну таблицю окремо, а не створювати резервну копію всієї бази даних. Я вважаю за краще уникати конкретизації кожної таблиці окремо, оскільки є пристойний шанс, що список таблиць не синхронізується з існуючими таблицями.
Інша проблема, яка у мене є, я планував зробити щось подібне mysql -h"$HOST" -u"$USERNAME" -p"$PASSWORD" --execute="FLUSH TABLES WITH READ LOCK"
. Однак це скидає блокування відразу після завершення сеансу. Це має сенс, але також дуже дратує, оскільки мені потрібно тримати блокування читання, коли я знімаю знімок.
Моя інша ідея - це зробити гарячу резервну копію за допомогою такого інструменту, як Percona XtraBackup, і зробити знімки резервної копії, але я не вважаю за краще платити кошти, щоб записати всі мої дані у друге місце лише для того, щоб зробити знімок.