Spec-Zone.ru › MySQL 5.7

16.3.1.3 Архивирование источника или реплики, сделав их только для чтения

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

  1. Сделайте сервер только для чтения, чтобы он обрабатывал только запросы на получение данных и блокировал обновления.

  2. Выполните архивацию.

  3. Верните сервер в нормальное состояние чтения/записи.

Примечание

Инструкции в этом разделе помещают сервер, подлежащий архивации, в состояние, безопасное для методов архивации, получающих данные с сервера, таких как mysqldump (см. Раздел 4.5.4, «mysqldump — Программа резервного копирования базы данных»). Не следует использовать эти инструкции для создания двоичной копии путём прямого копирования файлов, так как на сервере могут храниться изменённые данные в кэше памяти, которые ещё не записаны на диск.

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

  • Сервер источника S1

  • Сервер реплики R1, у которого S1 является источником

  • Клиент C1, подключённый к S1

  • Клиент C2, подключённый к R1

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

Сценарий 1: Архивация с источником только для чтения

Переведите источник S1 в состояние только для чтения, выполнив эти утверждения на нём:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SET GLOBAL read_only = ON;

Пока S1 находится в состоянии только для чтения, справедливы следующие свойства:

  • Запросы на обновления, отправленные клиентом C1 на S1, блокируются, поскольку сервер находится в режиме только для чтения.

  • Запросы на результаты запросов, отправленные клиентом C1 на S1, выполняются успешно.

  • Архивация на S1 безопасна.

  • Архивация на R1 небезопасна. Этот сервер всё ещё работает и может обрабатывать двоичный журнал или запросы на обновление, поступающие от клиента C2.

При S1 в режиме только для чтения выполните архивацию. Например, вы можете использовать mysqldump.

После завершения операции архивации на S1 верните S1 в нормальное рабочее состояние, выполнив эти утверждения:

mysql> SET GLOBAL read_only = OFF;
mysql> UNLOCK TABLES;

Хотя архивация на S1 безопасна (с точки зрения архивации), она не является оптимальной с точки зрения производительности, потому что клиенты S1 блокируются от выполнения обновлений.

Эта стратегия применима к архивации сервера источника в настройке репликации, но также может использоваться для одиночного сервера в настройке без репликации.

Сценарий 2: Архивация с репликой только для чтения

Переведите реплику R1 в состояние только для чтения, выполнив эти утверждения на ней:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SET GLOBAL read_only = ON;

Пока R1 находится в состоянии только для чтения, справедливы следующие свойства:

  • Источник S1 продолжает работать, поэтому архивация на источнике небезопасна.

  • Реплика R1 останавливается, поэтому архивация на реплике R1 безопасна.

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

При R1 в режиме только для чтения выполните архивацию. Например, вы можете использовать mysqldump.

После завершения операции архивации на R1 верните R1 в нормальное рабочее состояние, выполнив эти утверждения:

mysql> SET GLOBAL read_only = OFF;
mysql> UNLOCK TABLES;

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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/replication-solutions-backups-read-only.html

Spec-Zone.ru

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