Spec-Zone.ru › MariaDB

Flashback

Flashback — это функция, которая позволяет откатить экземпляры, базы данных или таблицы к старой копии.

В настоящее время Flashback поддерживается только для операторов DML (INSERT, DELETE, UPDATE). В будущей версии MariaDB будет добавлена поддержка Flashback для операторов DDL (DROP, TRUNCATE, ALTER и т. д.) путём копирования или перемещения текущей таблицы в резервированную и скрытую базу данных, а затем копирования или перемещения обратно при использовании Flashback. См. MDEV-10571.

Flashback в MariaDB Server реализуется с использованием существующей поддержки полных двоичных журналов изображений (binlog_row_image=FULL), поэтому он поддерживает все движки.

Фактическая работа Flashback выполняется компонентом mariadb-binlog с --flashback. Это приводит к преобразованию событий: INSERT в DELETE, DELETE в INSERT, а для UPDATE — к перестановке изображений до и после.

При выполнении mariadb-binlog с --flashback, события Flashback будут храниться в памяти. Необходимо убедиться, что на вашем сервере достаточно памяти для этой функции.

Аргументы

  • mariadb-binlog имеет параметр --flashback или -B, который позволит ему работать в режиме Flashback.
  • mariadbd / mysqld имеет параметр --flashback, который включает двоичный журнал и устанавливает binlog_format=ROW. Использование этого параметра необязательно, если вы уже включили эти параметры напрямую.

Не используйте параметры -v -vv, так как это добавляет избыточную информацию в двоичный журнал, что может привести к проблемам при импорте. См. MDEV-12066 и MDEV-12067.

Пример

С таблицей "mytable" в базе данных "test" можно сравнить вывод с --flashback и без него.

 mariadb-binlog /var/lib/mysql/mysql-bin.000001 -vv -d test -T mytable \
    --start-datetime="2013-03-27 14:54:00" > review.sql
 mariadb-binlog /var/lib/mysql/mysql-bin.000001 -vv -d test -T mytable \
    --start-datetime="2013-03-27 14:54:00" --flashback > flashback.sql

Если известна точная позиция, --start-position можно использовать вместо --start-datetime.

Затем, импортировав выходной файл (mysql < flashback.sql), можно откатить базу данных/таблицу до указанного времени или позиции.

Общий случай использования

Общий случай использования Flashback — следующая ситуация:

  • У вас есть один основной и два реплики, один из которых запущен с --flashback (т. е. с включённым двоичным протоколированием, с использованием binlog_format=ROW и binlog_row_image=FULL).
  • На главном узле произошла ошибка (например, неправильное обновление или удаление), и вы хотите вернуться к состоянию базы данных (или только таблицы) на определённый момент времени.
  • Удалите реплику с включённым Flashback из репликации.
  • Запустите mariadb-binlog, чтобы найти точную позицию журнала первой ошибочной операции после состояния, к которому вы хотите вернуться.
  • Запустите mariadb-binlog --flashback --start-position=xyz | mysql для передачи вывода mariadb-binlog напрямую клиенту mariadb, или сохраните вывод в файл, а затем направьте файл в командную строку клиента.
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки со стороны MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/flashback/

Spec-Zone.ru

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