15.4.2.5 Останов Отражения Заявок
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_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_applier и group_replication_recovery) управляются автоматически экземпляром сервера. STOP
REPLICA вообще не может использоваться с каналом group_replication_recovery и должен использоваться только с каналом group_replication_applier, когда групповая репликация не запущена. Канал group_replication_applier имеет только поток применителя и не имеет потока приемника, поэтому его можно остановить при необходимости, используя параметр SQL_THREAD без параметра IO_THREAD.
Если реплика многопоточная (replica_parallel_workers имеет ненулевое значение), любые пробелы в последовательности транзакций, выполняемых из журнала репликации, закрываются в рамках остановки рабочих потоков. Если реплика неожиданно останавливается (например, из-за ошибки в рабочем потоке или другого потока, выпустившего KILL) во время выполнения утверждения STOP REPLICA, последовательность выполняемых транзакций из журнала репликации может стать несогласованной. См. Раздел 19.5.1.34, «Несогласованности репликации и транзакций» для получения дополнительной информации.
Когда источник использует формат двоичного журналирования на основе строк, вы должны выполнить 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.