Я обнаружил, что многие сайты говорят именно об этом, но мне не хватает нескольких важных деталей. Основные шаги
- Бегать
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, и сделать моментальные снимки резервной копии, но я бы предпочел не платить стоимость, чтобы записать все мои данные во второе место, просто чтобы сделать снимок.