15.4.2.5 Оператор STOP REPLICA
STOP REPLICA [thread_types] [channel_option]
thread_types:
[thread_type [, thread_type] ... ]
thread_type: IO_THREAD | SQL_THREAD
channel_option:
FOR CHANNEL channel
Останавливает потоки репликации.
STOP REPLICA требует привилегии REPLICATION_SLAVE_ADMIN (или устаревшей привилегии SUPER). Рекомендуется выполнить STOP REPLICA на реплике перед остановкой сервера репликации (см. Раздел 7.1.19, «Процесс завершения работы сервера» для получения дополнительной информации).
Подобно оператору START REPLICA, этот оператор может использоваться с опциями IO_THREAD и SQL_THREAD для указания потоков репликации, которые необходимо остановить. Обратите внимание, что канал применения репликации Group Replication (group_replication_applier) не имеет потока ввода/вывода репликации (получателя), а только поток SQL репликации (применителя). Использование опции SQL_THREAD, следовательно, полностью останавливает этот канал.
STOP REPLICA вызывает неявное подтверждение текущей транзакции. См. Раздел 15.3.3, «Операторы, вызывающие неявное подтверждение».
gtid_next должна быть установлена в значение AUTOMATIC перед выполнением этого оператора.
Вы можете контролировать время ожидания STOP REPLICA перед таймаутом, установив системную переменную rpl_stop_replica_timeout. Это можно использовать для предотвращения тупиков между STOP
REPLICA и другими операторами SQL, использующими различные клиентские подключения к реплике. При достижении значения таймаута клиент-отправитель возвращает сообщение об ошибке и прекращает ожидание, но инструкция STOP REPLICA остается в силе. После того, как потоки репликации больше не заняты, оператор STOP REPLICA выполняется, и реплика останавливается.
Некоторые операторы CHANGE REPLICATION SOURCE TO разрешены во время работы реплики, в зависимости от состояния потоков репликации. Однако использование STOP REPLICA перед выполнением оператора CHANGE REPLICATION SOURCE TO в таких случаях все еще поддерживается. См. Раздел 15.4.2.2, «Оператор CHANGE REPLICATION SOURCE TO» и Раздел 19.4.8, «Переключение источников при отказе» для получения дополнительной информации.
Необязательная фраза FOR CHANNEL
позволяет указать, к какому каналу репликации применяется оператор. Указание фразы channelFOR CHANNEL
применяет оператор channelSTOP REPLICA к конкретному каналу репликации. Если канал не указан и дополнительные каналы отсутствуют, оператор применяется к стандартному каналу. Если оператор STOP REPLICA не указывает канал при использовании нескольких каналов, этот оператор останавливает указанные потоки для всех каналов. См. Раздел 19.2.2, «Каналы репликации» для получения дополнительной информации.
Каналы репликации для Group Replication (group_replication_applier и group_replication_recovery) управляются автоматически экземпляром сервера. STOP
REPLICA вообще не может использоваться с каналом group_replication_recovery и должен использоваться только с каналом group_replication_applier, когда Group Replication не работает. Канал group_replication_applier имеет только поток применителя и не имеет потока получателя, поэтому его можно остановить при необходимости, используя опцию SQL_THREAD без опции IO_THREAD.
Если реплика многопоточная (replica_parallel_workers имеет ненулевое значение), любые разрывы в последовательности транзакций, выполняемых из журнала репликации, закрываются в процессе остановки рабочих потоков. Если реплика останавливается неожиданно (например, из-за ошибки в рабочем потоке или из-за другого потока, выполняющего оператор KILL) во время выполнения оператора STOP REPLICA, последовательность выполненных транзакций из журнала репликации может стать несогласованной. См. Раздел 19.5.1.35, «Репликация и несогласованности транзакций» для получения дополнительной информации.
Если источник использует формат двоичного журналирования на основе строк, вы должны выполнить STOP REPLICA или STOP REPLICA SQL_THREAD на реплике перед завершением работы сервера репликации, если вы выполняете репликацию таблиц, использующих нетранзакционный движок хранения. Если текущая группа событий репликации изменила одну или несколько нетранзакционных таблиц, STOP REPLICA ожидает до 60 секунд, пока группа событий не завершит работу, если вы не выполните оператор KILL
QUERY или KILL
CONNECTION для потока SQL репликации. Если группа событий остается не завершенной после таймаута, выводится сообщение об ошибке.
Если источник использует формат двоичного журналирования на основе операторов, изменение источника при открытых временных таблицах потенциально небезопасно. Это одна из причин, почему репликация временных таблиц на основе операторов не рекомендуется. Вы можете узнать, есть ли временные таблицы на реплике, проверив значение Replica_open_temp_tables. При использовании репликации на основе операторов это значение должно быть 0 перед выполнением оператора CHANGE REPLICATION SOURCE
TO. Если на реплике открыты временные таблицы, выполнение оператора CHANGE REPLICATION
SOURCE TO после выполнения оператора STOP
REPLICA приводит к появлению предупреждения.
© 2025 Oracle
Licensed under the GPLv2 License.