mysqldump: копия считается полезной после пробного восстановления

2 мин чтения

Создаём логическую копию MySQL, восстанавливаем её в отдельную базу и разбираем ограничения single-transaction.

Проверка копии на отдельной базе
  1. mysqldumpПолучаем согласованную выгрузку InnoDB
  2. ВосстановлениеЗагружаем копию в отдельное окружение
  3. Проверка данныхСверяем таблицы и контрольные операции

Задача резервирования завершилась без ошибки, файл появился. Можно ли теперь восстановить приложение? Ответ даст пробная загрузка в отдельную базу. Для таблиц InnoDB разберём выгрузку через mysqldump с single-transaction, а затем проверим не только строки, но и остальные нужные объекты.

Выгружаем и загружаем отдельно

# Команды для оболочки POSIX; замените имена и учётные записи.
mysqldump -u backup -p --single-transaction --quick   --routines --events --triggers --set-gtid-purged=OFF   --result-file=demo-app.sql demo_app
mysql -u restore -p -e "CREATE DATABASE demo_restore CHARACTER SET utf8mb4"
mysql -u restore -p demo_restore < demo-app.sql

Пароль вводится по запросу клиента, а не записывается в командную строку. Параметр result-file избегает зависимости от текстовой перекодировки при перенаправлении вывода. Состояние GTID здесь не добавляется: копия нужна для пробного восстановления, а не для подготовки реплики. Проверяйте код завершения каждой команды и сохраняйте сообщения об ошибках отдельно от выгрузки.

Когда single-transaction недостаточно

single-transaction даёт согласованное чтение транзакционных таблиц, но не делает содержимое MyISAM согласованным таким же способом. Во время выгрузки исключите изменения структуры затрагиваемых таблиц. quick позволяет читать строки последовательно, что полезно для больших наборов. Длительность и влияние на рабочую нагрузку следует оценить на своём объёме; здесь измерения не проводились.

Проверка глубже количества строк

Сравните перечень таблиц, определения, индексы и критические выборки. Для изменяемой рабочей базы простое сравнение текущего количества строк с прошлым снимком может давать естественное расхождение. Заранее подготовьте контрольные записи либо согласованную точку проверки. Отдельно протестируйте нужные процедуры, события и триггеры, включая права и наличие указанных владельцев объектов.

Ограничьте доступ к дампу и срок его хранения: внутри могут быть рабочие данные. Пользователи MySQL, файлы приложения и история бинарных журналов требуют отдельного плана. После репетиции сохраните команды, нужные права и результаты проверки приложения на восстановленной базе. Перед восстановлением рабочей системы понадобится ещё и план переключения.

Источники и дальнейшее чтение