Spec-Zone.ru › MySQL Enterprise Backup 8.4

5.3 Восстановление базы данных по состоянию на определённую точку времени

Вы можете восстановить сервер базы данных до его состояния на произвольное время, используя файлы бинарных журналов, включённые в резервные копии. Процесс предполагает соблюдение следующих условий:

  • На сервере MySQL, из которого созданы резервные копии, включено ведение бинарного журнала (по умолчанию это включено). Чтобы проверить выполнение этого условия, выполните на сервере следующий запрос:

    mysql> SHOW VARIABLES LIKE 'log_bin';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_bin       | ON    |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    

    Если значение равно OFF, ведение бинарного журнала не включено. Обратитесь к для получения инструкций по включению ведения бинарного журнала для сервера.

  • Для сервера были созданы резервные копии, состоящие обычно из полной резервной копии, за которой следуют ряд инкрементных резервных копий. Последняя резервная копия в серии охватывает целевую точку времени для восстановления. Пример ниже иллюстрирует типичный случай.

  • Последняя резервная копия в серии резервных копий включает в себя соответствующие файлы бинарного журнала. (Чтобы обеспечить выполнение этого требования, не используйте следующие параметры MySQL Enterprise Backup при создании резервной копии: --skip-binlog, --use-tts, --no-locking или --start-lsn.)

Вот шаги для восстановления по состоянию на определённую точку времени:

  1. Восстановите серию резервных копий на сервер, за исключением последней инкрементной резервной копии в серии (которая охватывает целевую точку времени для восстановления). После завершения обратите внимание на позицию бинарного журнала, до которой был восстановлен сервер. Информация доступна из файла backup_variables.txt в восстановленной директории данных сервера: найдите значение записи binlog_position в файле. Например:

    binlog_position=binlog.000012:426

    Это означает, что после восстановления серии резервных копий сервер теперь находится на позиции журнала 426, найденной в файле бинарного журнала binlog.000012. Вам понадобится эта информация позже.

    Примечание

    Хотя последняя позиция восстановленного бинарного журнала также отображается InnoDB после восстановления, это не надёжный способ получения конечной позиции журнала восстановления, поскольку могут быть события DDL и изменения, не относящиеся к InnoDB, которые произошли после времени, отражённого отображаемой позицией.

  2. Извлеките бинарный журнал из последней инкрементной резервной копии в серии резервных копий (т. е. резервной копии, охватывающей целевую точку времени для восстановления). Для этого разархивируйте образ инкрементной резервной копии в директорию резервной копии, используя команду image-to-backup-dir; например:

    mysqlbackup --backup-dir=incr-backup-dir2 --backup-image=incremental_image2.bi image-to-backup-dir

    Далее перейдите в полученную директорию резервной копии (incr-backup-dir2 в этом примере) и в директории данных найдите файл(ы) бинарного журнала (binlog.000012 в этом примере):

    incr-backup-dir2$ ls datadir
    binlog.000012       ibbackup_logfile  mysql               pets      undo_002
    ...
    
  3. Проведите пошаговое выполнение сервера базы данных до его состояния в целевую точку времени для восстановления, определённой как tR в данном примере, используя извлечённый в последнем шаге файл бинарного журнала. Затем с помощью утилиты воспроизведите SQL-операции, записанные в файле бинарного журнала, начиная с позиции журнала, до которой был восстановлен сервер на шаге 1 (что составляет 426 в нашем примере), до времени tR. Укажите диапазон событий бинарного журнала для воспроизведения с помощью опции --start-position и опции --stop-position (которая указывает соответствующую позицию бинарного журнала для tR), и передайте вывод в клиент mysql:

    mysqlbinlog --start-position="binary-log-position-at-the-end-of-backup-restores" \
             --stop-position="binary-log-position-corresponding-to-tR" \
             binary-log-filename  |   mysql -uadmin -p
    Примечания
    • Использование опции --start-datetime или --stop-datetime для указания диапазона сегмента бинарного журнала для воспроизведения не рекомендуется: существует большая вероятность пропуска событий бинарного журнала при использовании этой опции. Используйте --start-position и --stop-position вместо этого.

    • Если у вас несколько файлов бинарного журнала в вашей инкрементной резервной копии и все они необходимы для возврата сервера в состояние на tR, вы должны передать все их на сервер в одном подключении; например:

      mysqlbinlog --start-position="426" --stop-position="binary-log-position-corresponding-to-tR" \
        binlog.000012 binlog.000013 binlog.000014 |   mysql -u admin -p

    Вы также можете сначала вывести весь вывод mysqlbinlog в один файл, а затем перенаправить или выполнить файл в клиент mysql.

    Для получения дополнительных объяснений использования бинарного журнала для восстановления по состоянию на определённую точку времени см. .

  4. Проверьте, что сервер был восстановлен до желаемой точки времени.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-enterprise-backup-8.4-en/advanced.point.html

Spec-Zone.ru

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