Spec-Zone.ru › MySQL Enterprise Backup 4.1

7.2 Архивирование и восстановление реплики базы данных

Для архивирования реплики базы данных добавьте опцию --slave-info в вашу команду архивирования.

Для восстановления архива на сервере реплики следуйте тем же шагам, что и в разделе 7.1, «Настройка новой реплики».

Временные таблицы в реплике при репликации на основе заявок (SBR). MySQL Enterprise Backup не включает временные таблицы в архив. В результате, для сервера реплики в настройке репликации на основе заявок (SBR) или смешанной настройке репликации (см. для получения подробностей), любые временные таблицы, которые всё ещё открыты в конце процесса архивирования, будут отсутствовать на восстановленном сервере реплики, что сделает состояние репликации несогласованным, и любые последующие реплицированные запросы, которые ссылаются на временные таблицы, завершатся ошибкой. Чтобы избежать этой проблемы, после фазы горячего архивирования, в котором mysqlbackup копирует все таблицы InnoDB, он входит в цикл, в котором происходит следующее:

  1. mysqlbackup ждёт, пока все временные таблицы не будут закрыты потоком SQL репликации. mysqlbackup проверяет это, проверяя, имеет ли переменная значение ноль.

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

  3. Чтобы избежать непредвиденных последствий из-за гонки, после того, как поток SQL репликации был остановлен, mysqlbackup ещё раз проверяет, верно ли значение:

    • Если значение верно, mysqlbackup выходит из цикла и завершает архивирование, устанавливая глобальную блокировку чтения и копируя все таблицы, не являющиеся InnoDB.

    • Если значение не верно, на реплике были только что созданы и открыты новые временные таблицы. mysqlbackup затем перезапускает поток SQL репликации, чтобы можно было внести больше обновлений на серверы реплики. mysqlbackup затем возвращается к шагу 1 этого цикла.

Помимо условия выхода, описанного в шаге (3) выше (а именно, что действительно больше нет открытых временных таблиц и mysqlbackup готов завершить архивирование), mysqlbackup будет ожидать определённое время, оставаясь в описанном цикле, чтобы дождаться закрытия всех временных таблиц. Время ожидания mysqlbackup перед таймаутом задаётся опцией --safe-slave-backup-timeout.

Кроме того, mysqlbackup также выполняет начальную проверку в начале архивирования реплики, чтобы увидеть, становится ли значение верным в течение времени, установленного опцией --safe-slave-backup-timeout. См. описание для --safe-slave-backup-timeout для подробностей о проверке.

Обратите внимание, что описанная выше проблема с временными таблицами не существует для настройки репликации на основе строк (RBR), для которой временные таблицы не реплицируются на реплику. Пользователи, которые уверены, что SBR не происходит для реплики, могут установить --safe-slave-backup-timeout=0, что предотвратит mysqlbackup от входа в упомянутый выше цикл.

Примечание

См. ограничение, которое применяется при архивировании реплики в приложении B, Ограничения MySQL Enterprise Backup.

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

Spec-Zone.ru

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