25.7.9.2 Восстановление данных по состоянию на определенный момент времени с использованием репликации NDB Cluster
Восстановление данных по состоянию на определенный момент времени — то есть восстановление изменений данных, внесённых с момента заданного времени, — выполняется после восстановления полного резервного копирования, которое возвращает сервер в состояние на момент создания резервной копии. Выполнение восстановления данных по состоянию на определенный момент времени для таблиц NDB Cluster с NDB Cluster и репликацией NDB Cluster можно выполнить с помощью родного 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.