ЭТАП БЭКАПА
Команды BACKUP STAGE были введены в MariaDB 10.4.1.
Команды BACKUP STAGE — это набор команд, позволяющий создать эффективную внешнюю утилиту резервного копирования.
Синтаксис
BACKUP STAGE [START | FLUSH | BLOCK_DDL | BLOCK_COMMIT | END ]
В тексте ниже термин «транзакционная таблица» означает InnoDB или «движок, похожий на InnoDB, с журналом переигрывания, который может блокировать удаление записей из журнала переигрывания и может быть скопирован без блокировок внешним процессом».
Цели команд ЭТАП БЭКАПА
- Выполнять большую часть резервного копирования с минимальным количеством блокировок сервера. Особенно для транзакционных таблиц (InnoDB, MyRocks и т. д.) требуется лишь очень короткий блок новых фиксаций при копировании статистики и таблиц журналов.
- DDL необходимо блокировать только на очень короткое время при копировании таблиц, затронутых DDL, во время начальной части резервного копирования инструментом mariabackup.
- Большинство таблиц, не являющихся транзакционными (которые не используются), будут скопированы в течение
BACKUP STAGE START. Исключение составляют таблицы системной статистики и журналов, которые не блокируются во время резервного копирования доBLOCK_COMMIT. - Эффективная работа с инструментами резервного копирования, использующими снимки дисков.
- Эффективная работа со всеми типами таблиц, хранящих данные на локальных дисках.
- Минимальное копирование на этапах/блокировках более высокого уровня. Например, файлы .frm (словаря) и .trn (триггера) должны копироваться вместе с данными таблицы.
BACKUP STAGE Команды
BACKUP STAGE START
Этап START предназначен для следующих задач:
- Блокировка удаления файлов переигрывания для хранилищ данных, которым это необходимо (Aria)
- Начало регистрации команд DDL в 'datadir'/ddl.log. Это может занять короткое время, так как команде нужно подождать, пока не будет активных команд DDL.
BACKUP STAGE FLUSH
Этап FLUSH предназначен для следующих задач:
- Очистка всех изменений для неактивных нетранзакционных таблиц, за исключением таблиц статистики и журналов.
- Закрытие всех неиспользуемых таблиц для обеспечения их закрытого состояния при резервном копировании.
- БЛОКИРОВАТЬ все новые записи блокировок для всех нетранзакционных таблиц (за исключением таблиц статистики и журналов). Команда не будет ждать таблицы, используемые только для чтений (только для чтения).
DDL не нужно блокировать на данном этапе, так как они не могут привести к несогласованному состоянию таблицы. Это также верно для нетранзакционных таблиц.
BACKUP STAGE BLOCK_DDL
Этап BLOCK_DDL предназначен для следующих задач:
- Ожидание завершения всех операторов, использующих нетранзакционные таблицы с блокировкой записи.
- Блокировка CREATE TABLE, DROP TABLE, TRUNCATE TABLE и RENAME TABLE.
- Блокировка также нового ALTER TABLE и окончательной фазы переименования ALTER TABLE. Запущенные ALTER TABLE не блокируются.
BACKUP STAGE BLOCK_COMMIT
Этап BLOCK_COMMIT предназначен для следующих задач:
- Блокировка двоичного журнала и фиксация/откат для предотвращения фиксации изменений в каких-либо таблицах. Если есть активные фиксации или данные для копирования в двоичный журнал, это будет разрешено завершить. Активные транзакции не повлияют на
BLOCK_COMMIT. - Это не блокирует временные таблицы, которые не используются репликацией. Однако они будут заблокированы, когда придет время записи в двоичный журнал.
- Блокировка системных таблиц журналов и таблиц статистики, их очистка и пометка как закрытых.
Когда этапы BLOCK_COMMIT возвращаются, это «время резервного копирования». Все, что было зафиксировано, будет в резервной копии, а все, что не было зафиксировано, будет откатано.
Транзакционные движки будут продолжать вносить изменения в журнал переигрывания на этапе BLOCK COMMIT, но это не важно, поскольку все они будут откатаны позже, так как изменения не будут зафиксированы.
BACKUP STAGE END
Этап END предназначен для следующих задач:
- Завершение регистрации DDL
- Освобождение ресурсов
Использование BACKUP STAGE команд с инструментами резервного копирования
Использование BACKUP STAGE команд с Mariabackup
Команды BACKUP STAGE — это набор команд, позволяющий создать эффективную внешнюю утилиту резервного копирования. Способ использования Mariabackup этих команд зависит от того, используете ли вы версию, входящую в состав MariaDB Community Server, или версию, входящую в состав MariaDB Enterprise Server. См. Mariabackup и команды ЭТАП БЭКАПА для примеров использования Mariabackup этих команд.
Если вы хотите использовать версию Mariabackup, которая эффективно использует команды ЭТАП БЭКАПА, одним из вариантов является использование MariaDB Enterprise Backup, входящей в состав MariaDB Enterprise Server.
Использование BACKUP STAGE команд со снимками хранилища
Команды BACKUP STAGE — это набор команд, позволяющих создать эффективную внешнюю утилиту резервного копирования. Эти команды могут даже использоваться инструментами, выполняющими резервное копирование путем создания снимка файловой системы, SAN или другого типа хранилища. См. Снимки хранилища и команды ЭТАП БЭКАПА для примеров эффективного использования каждой BACKUP STAGE команды.
Права доступа
Для BACKUP STAGE требуется право RELOAD.
Примечания
- Только одно соединение может запускать
BACKUP STAGE START. Если второе соединение попытается, оно будет ждать, пока первое выполнитBACKUP STAGE END. - Если пользователь пропускает
BACKUP STAGE, все промежуточные этапы резервного копирования будут автоматически выполнены. Это позволит нам в будущем добавлять новые этапы в иерархииBACKUP STAGEс более точными блокировками без проблем для инструментов, использующих более раннюю версию реализацииBACKUP STAGE. - Можно использовать системные переменные max_statement_time или lock_wait_timeout, чтобы гарантировать, что команда
BACKUP STAGEне блокирует сервер слишком долго. - Регистрация DDL будет доступна только в MariaDB Enterprise Server 10.2 и более поздних версиях.
- Отключение автоматически освобождает этапы резервного копирования.
- Нет простого способа определить текущий этап.
См. также
- BACKUP LOCK Блокировка таблицы от DDL.
- MDEV-5336. Реализация ЭТАПА БЭКАПА для безопасных внешних резервных копий.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/backup-stage/