Spec-Zone.ru › MySQL 8.4

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

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

Spec-Zone.ru

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