Spec-Zone.ru › MySQL 5.7

21.7.9.2 Восстановление данных по состоянию на определённый момент времени с использованием репликации NDB Cluster

Восстановление данных по состоянию на определённый момент времени — то есть восстановление изменений данных с определённого момента — выполняется после восстановления полного резервного копирования, которое возвращает сервер в состояние, в котором он находился в момент создания резервной копии. Выполнение восстановления данных по состоянию на определённый момент времени для таблиц NDB Cluster с использованием NDB Cluster и NDB Cluster Replication может быть выполнено с помощью нативного резервного копирования данных NDB (созданного с помощью команды CREATE BACKUP в клиенте ndb_mgm) и восстановления таблицы ndb_binlog_index (из дампа, созданного с помощью mysqldump).

Для выполнения восстановления данных по состоянию на определённый момент времени для NDB Cluster необходимо выполнить следующие шаги:

  1. Создайте резервные копии всех баз данных NDB в кластере, используя команду START BACKUP в клиенте ndb_mgm (см. Раздел 21.6.8, «Онлайн-резервное копирование NDB Cluster»).

  2. В какой-то момент времени, до восстановления кластера, создайте резервную копию таблицы mysql.ndb_binlog_index. Вероятно, проще всего для этого использовать mysqldump. Также в этот момент создайте резервную копию файлов бинарного журнала.

    Эта резервная копия должна обновляться регулярно — возможно, даже ежечасно — в зависимости от ваших потребностей.

  3. (Произошёл катастрофический сбой или ошибка.)

  4. Найдите последнюю известную работоспособную резервную копию.

  5. Очистите файловые системы узлов данных (используя ndbd --initial или ndbmtd --initial).

    Примечание

    Таблицы хранилища данных NDB Cluster и файлы журналов не удаляются с помощью --initial. Их необходимо удалить вручную.

  6. Используйте DROP TABLE или TRUNCATE TABLE для таблицы mysql.ndb_binlog_index.

  7. Выполните ndb_restore, восстанавливая все данные. При выполнении ndb_restore необходимо указать опцию --restore-epoch, чтобы таблица ndb_apply_status заполнялась правильно. (См. Раздел 21.5.24, «ndb_restore — Восстановление резервной копии NDB Cluster» для получения дополнительной информации.)

  8. Восстановите таблицу ndb_binlog_index из вывода mysqldump и, при необходимости, восстановите файлы бинарного журнала из резервной копии.

  9. Найдите последний применённый эпох — то есть максимальное значение столбца epoch в таблице ndb_apply_status — как переменную пользователя @LATEST_EPOCH (выделено):

    SELECT @LATEST_EPOCH:=MAX(epoch)
        FROM mysql.ndb_apply_status;
    
  10. Найдите самый последний файл бинарного журнала (@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;
    
  11. Используя mysqlbinlog, воспроизведите события бинарного журнала от указанного файла и позиции до момента сбоя. (См. Раздел 4.6.7, «mysqlbinlog — Утилита для обработки файлов бинарных журналов».)

Дополнительную информацию о бинарном журнале, репликации и инкрементальном восстановлении см. в Разделе 7.5, «Восстановление по состоянию на определённый момент времени (инкрементальное)».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysql-cluster-replication-pitr.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API