Spec-Zone.ru › MySQL 9.2

25.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 (см. Раздел 25.6.8, «Оперативное резервное копирование NDB Cluster»).

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

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

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

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

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

    Примечание

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

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

  7. Выполните ndb_restore, восстанавливая все данные. Вы должны включить опцию --restore-epoch при выполнении ndb_restore, чтобы таблица ndb_apply_status заполнилась правильно. (См. Раздел 25.5.23, «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, воспроизведите события из журнала двоичных логов из заданного файла и позиции до момента сбоя. (См. Раздел 6.6.9, «mysqlbinlog — Утилита для обработки файлов журнала двоичных логов».)

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

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

Spec-Zone.ru

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