13.4.2.6 Остановка репликации (STOP SLAVE)
STOP SLAVE [thread_types] [channel_option]
thread_types:
[thread_type [, thread_type] ... ]
thread_type: IO_THREAD | SQL_THREAD
channel_option:
FOR CHANNEL channel
Останавливает потоки репликации. Для использования STOP
SLAVE требуется привилегия SUPER. Рекомендуется выполнить STOP SLAVE на реплике перед остановкой сервера репликации (подробнее см. Раздел 5.1.16, «Процесс остановки сервера»).
При использовании формата журналов на основе строк: Если вы реплицируете таблицы, использующие нетранзакционный движок хранения, перед остановкой сервера репликации необходимо выполнить STOP SLAVE или STOP SLAVE SQL_THREAD на реплике (см. Примечание далее в этом разделе).
Как и START SLAVE, данная команда может использоваться с опциями IO_THREAD и SQL_THREAD для указания потоков, которые необходимо остановить. Обратите внимание, что канал приложения Group Replication (group_replication_applier) не имеет потока ввода/вывода репликации, только поток SQL репликации. Использование опции SQL_THREAD полностью останавливает этот канал.
STOP SLAVE вызывает неявное подтверждение текущей транзакции. Смотрите Раздел 13.3.3, «Команды, вызывающие неявное подтверждение».
gtid_next необходимо установить в значение AUTOMATIC перед выполнением данной команды.
Вы можете контролировать время ожидания STOP SLAVE перед истечением таймаута, установив системную переменную rpl_stop_slave_timeout. Это может использоваться для предотвращения тупиков между STOP SLAVE и другими операциями SQL, использующими различные клиентские подключения к реплике. Когда таймаут достигнут, клиент-инициатор возвращает сообщение об ошибке и прекращает ожидание, но инструкция STOP SLAVE остается в силе. После того как потоки репликации больше не активны, выполняется команда STOP SLAVE, и реплика останавливается.
Некоторые CHANGE MASTER TO команды разрешены во время работы реплики, в зависимости от состояния потока SQL репликации и потока ввода/вывода репликации. Однако использование STOP SLAVE перед выполнением CHANGE MASTER TO в таких случаях все еще поддерживается. Смотрите Раздел 13.4.2.1, «Команда CHANGE MASTER TO» и Раздел 16.3.7, «Переключение источников во время переключения» для получения дополнительной информации.
Необязательная клауза FOR CHANNEL
позволяет указать, к какому каналу репликации относится данная команда. Указание клаузы channelFOR CHANNEL
применяет команду channelSTOP SLAVE к определенному каналу репликации. Если канал не указан и дополнительных каналов нет, команда применяется к по умолчанию. Если команда STOP SLAVE не указывает канал при использовании нескольких каналов, данная команда останавливает указанные потоки для всех каналов. Данная команда не может использоваться с каналом group_replication_recovery. Смотрите Раздел 16.2.2, «Каналы репликации» для получения дополнительной информации.
При использовании репликации на основе операторов: изменение источника при открытых временных таблицах потенциально небезопасно. Это одна из причин, по которой репликация на основе операторов временных таблиц не рекомендуется. Вы можете определить наличие временных таблиц на реплике, проверив значение Slave_open_temp_tables; при использовании репликации на основе операторов это значение должно быть 0 перед выполнением CHANGE MASTER TO. Если на реплике открыты временные таблицы, выполнение команды CHANGE
MASTER TO после STOP
SLAVE вызывает предупреждение.
При использовании многопоточной реплики (slave_parallel_workers имеет ненулевое значение), любые пробелы в последовательности транзакций, выполняемых из релейного журнала, закрываются в рамках остановки потоков-рабочих нитей. Если реплика останавливается неожиданно (например, из-за ошибки в потоке-рабочей нити или из-за другой нити, выпустившей KILL) во время выполнения команды STOP SLAVE, последовательность выполненных транзакций из релейного журнала может стать несовместимой. Смотрите Раздел 16.4.1.32, «Несоответствия репликации и транзакций» для получения дополнительной информации.
Если текущая группа событий репликации изменила одну или несколько нетранзакционных таблиц, STOP SLAVE ожидает до 60 секунд, пока группа событий завершит работу, если вы не выпустите команду KILL QUERY или KILL CONNECTION для потока SQL репликации. Если группа событий остается не завершенной после таймаута, выводится сообщение об ошибке.
© 2025 Oracle
Licensed under the GPLv2 License.