25.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 (см. Раздел 25.6.8, «Оперативное резервное копирование NDB Cluster»).-
В некоторый момент времени, до восстановления кластера, создайте резервную копию таблицы
mysql.ndb_binlog_index. Вероятно, проще всего использовать mysqldump для этой задачи. Также создайте резервную копию файлов журнала двоичных логов в это время.Эта резервная копия должна обновляться регулярно — возможно, даже каждый час — в зависимости от ваших потребностей.
(Произошел катастрофический сбой или ошибка.)
Найдите последнюю известную рабочую резервную копию.
-
Очистите файловые системы узлов данных (используя ndbd
--initialили ndbmtd--initial).ПримечаниеТаблицы и файлы журнала пространства данных диска также удаляются с помощью
--initial. Используйте
DROP TABLEилиTRUNCATE TABLEс таблицейmysql.ndb_binlog_index.Выполните ndb_restore, восстанавливая все данные. Вы должны включить опцию
--restore-epochпри выполнении ndb_restore, чтобы таблицаndb_apply_statusзаполнилась правильно. (См. Раздел 25.5.23, «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, воспроизведите события из журнала двоичных логов из заданного файла и позиции до момента сбоя. (См. Раздел 6.6.9, «mysqlbinlog — Утилита для обработки файлов журнала двоичных логов».)
См. также Раздел 9.5, «Восстановление данных по состоянию на определённый момент времени (инкрементальное)» для получения дополнительной информации о журнале двоичных логов, репликации и инкрементальном восстановлении.
© 2025 Oracle
Licensed under the GPLv2 License.