21.7.9.2 Восстановление данных по состоянию на определённый момент времени с использованием репликации NDB Cluster
Восстановление данных по состоянию на определённый момент времени — то есть восстановление изменений данных с определённого момента — выполняется после восстановления полного резервного копирования, которое возвращает сервер в состояние, в котором он находился в момент создания резервной копии. Выполнение восстановления данных по состоянию на определённый момент времени для таблиц NDB Cluster с использованием NDB Cluster и NDB Cluster Replication может быть выполнено с помощью нативного резервного копирования данных NDB (созданного с помощью команды CREATE
BACKUP в клиенте ndb_mgm) и восстановления таблицы ndb_binlog_index (из дампа, созданного с помощью mysqldump).
Для выполнения восстановления данных по состоянию на определённый момент времени для NDB Cluster необходимо выполнить следующие шаги:
Создайте резервные копии всех баз данных
NDBв кластере, используя командуSTART BACKUPв клиенте ndb_mgm (см. Раздел 21.6.8, «Онлайн-резервное копирование NDB Cluster»).-
В какой-то момент времени, до восстановления кластера, создайте резервную копию таблицы
mysql.ndb_binlog_index. Вероятно, проще всего для этого использовать mysqldump. Также в этот момент создайте резервную копию файлов бинарного журнала.Эта резервная копия должна обновляться регулярно — возможно, даже ежечасно — в зависимости от ваших потребностей.
(Произошёл катастрофический сбой или ошибка.)
Найдите последнюю известную работоспособную резервную копию.
-
Очистите файловые системы узлов данных (используя ndbd
--initialили ndbmtd--initial).ПримечаниеТаблицы хранилища данных NDB Cluster и файлы журналов не удаляются с помощью
--initial. Их необходимо удалить вручную. Используйте
DROP TABLEилиTRUNCATE TABLEдля таблицыmysql.ndb_binlog_index.Выполните ndb_restore, восстанавливая все данные. При выполнении ndb_restore необходимо указать опцию
--restore-epoch, чтобы таблицаndb_apply_statusзаполнялась правильно. (См. Раздел 21.5.24, «ndb_restore — Восстановление резервной копии NDB Cluster» для получения дополнительной информации.)Восстановите таблицу
ndb_binlog_indexиз вывода mysqldump и, при необходимости, восстановите файлы бинарного журнала из резервной копии.-
Найдите последний применённый эпох — то есть максимальное значение столбца
epochв таблицеndb_apply_status— как переменную пользователя@LATEST_EPOCH(выделено):SELECT @LATEST_EPOCH:=MAX(epoch) FROM mysql.ndb_apply_status; -
Найдите самый последний файл бинарного журнала (
@FIRST_FILE) и позицию (значение столбцаPosition) в этом файле, соответствующие@LATEST_EPOCHв таблицеndb_binlog_index:SELECT Position, @FIRST_FILE:=File FROM mysql.ndb_binlog_index WHERE epoch > @LATEST_EPOCH ORDER BY epoch ASC LIMIT 1;
Используя mysqlbinlog, воспроизведите события бинарного журнала от указанного файла и позиции до момента сбоя. (См. Раздел 4.6.7, «mysqlbinlog — Утилита для обработки файлов бинарных журналов».)
Дополнительную информацию о бинарном журнале, репликации и инкрементальном восстановлении см. в Разделе 7.5, «Восстановление по состоянию на определённый момент времени (инкрементальное)».
© 2025 Oracle
Licensed under the GPLv2 License.