13.4.2.3 Выполнение оператора RESET SLAVE
RESET SLAVE [ALL] [channel_option]
channel_option:
FOR CHANNEL channel
RESET SLAVE заставляет реплика забыть свою позицию репликации в двоичном журнале источника. Этот оператор предназначен для чистого запуска: он очищает хранилища метаданных репликации, удаляет все файлы журнала ретрансляции и начинает новый файл журнала ретрансляции. Он также сбрасывает до 0 задержку репликации, указанную с помощью опции MASTER_DELAY для CHANGE MASTER
TO.
Все файлы журнала ретрансляции удаляются, даже если они ещё не были полностью обработаны потоком SQL репликации. (Это состояние, вероятно, существует на реплике, если вы выполнили оператор STOP SLAVE, или если реплика сильно загружена.)
Для сервера, где используются GTID (gtid_mode равен ON), выполнение RESET
SLAVE не влияет на историю выполнения GTID. Оператор не меняет значения gtid_executed или gtid_purged, или таблицу mysql.gtid_executed. Если вам нужно сбросить историю выполнения GTID, используйте RESET
MASTER, даже если сервер с поддержкой GTID является репликой, где двоичная регистрация отключена.
RESET SLAVE требует привилегии RELOAD.
Для использования RESET SLAVE, потоки репликации должны быть остановлены, поэтому на работающей реплике используйте STOP SLAVE перед выполнением RESET SLAVE. Для использования RESET SLAVE на члене группы Group Replication, статус члена должен быть OFFLINE, что означает, что плагин загружен, но член в данный момент не принадлежит к группе. Член группы может быть выведен из строя с помощью оператора STOP
GROUP REPLICATION.
Необязательная клауза FOR CHANNEL
позволяет указать канал репликации, к которому применяется оператор. Указание клаузы channelFOR CHANNEL
применяет оператор channelRESET SLAVE к определённому каналу репликации. Сочетание клаузы FOR CHANNEL
с опцией channelALL удаляет указанный канал. Если канал не указан и дополнительных каналов не существует, оператор применяется к каналу по умолчанию. Выполнение оператора RESET SLAVE
ALL без клаузы FOR CHANNEL
, когда существует несколько каналов репликации, удаляет все каналы репликации и создаёт только канал по умолчанию. Более подробную информацию см. в Разделе 16.2.2, «Каналы репликации». channel
RESET SLAVE не изменяет параметры соединения репликации, такие как имя хоста и порт источника, имя пользователя репликации и его пароль.
С MySQL 5.7.24, когда
master_info_repository=TABLEустановлено на сервере, параметры соединения репликации сохраняются в безопасной при сбоях таблицеInnoDBmysql.slave_master_infoкак часть операцииRESET SLAVE. Они также сохраняются в памяти. В случае неожиданного выхода из строя сервера или преднамеренной перезагрузки после выполненияRESET SLAVE, но до выполненияSTART SLAVE, параметры соединения репликации извлекаются из таблицы и повторно используются для нового соединения.Когда
master_info_repository=FILEустановлено на сервере (что является значением по умолчанию в MySQL 5.7), параметры соединения репликации сохраняются только в памяти. Если реплика mysqld перезагружается сразу после выполненияRESET SLAVEиз-за неожиданного выхода из строя сервера или преднамеренной перезагрузки, параметры соединения теряются. В этом случае необходимо выполнить операторCHANGE MASTER TOпосле запуска сервера, чтобы снова указать параметры соединения, прежде чем выполнятьSTART SLAVE.
Если вы хотите намеренно сбросить параметры соединения, вам нужно использовать RESET SLAVE
ALL, что очистит параметры соединения. В этом случае необходимо выполнить оператор CHANGE MASTER
TO после запуска сервера, чтобы указать новые параметры соединения.
RESET SLAVE вызывает неявное подтверждение текущей транзакции. Смотрите Раздел 13.3.3, «Операторы, вызывающие неявное подтверждение».
Если поток репликации SQL находился в середине репликации временных таблиц, когда он был остановлен, и выполняется RESET SLAVE, эти реплицированные временные таблицы удаляются на реплике.
До MySQL 5.7.5, RESET SLAVE также имел эффект сброса как периода ожидания сердцебиения (Slave_heartbeat_period), так и SSL_VERIFY_SERVER_CERT. Эта проблема исправлена в MySQL 5.7.5 и более поздних версиях. (Ошибка #18777899, Ошибка #18778485)
До MySQL 5.7.5, RESET SLAVE ALL не очищал список IGNORE_SERVER_IDS, заданный оператором CHANGE MASTER TO. В MySQL 5.7.5 и более поздних версиях оператор очищает этот список. (Ошибка #18816897)
При использовании на узле SQL реплики NDB Cluster, RESET
SLAVE очищает таблицу mysql.ndb_apply_status. Следует помнить, что ndb_apply_status использует хранилище NDB, и поэтому совместно используется всеми узлами SQL, подключёнными к кластеру реплик.
Вы можете переопределить это поведение, выполнив SET GLOBAL
@@ndb_clear_apply_status=OFF перед выполнением RESET SLAVE, что предотвращает очистку таблицы ndb_apply_status в таких случаях.
© 2025 Oracle
Licensed under the GPLv2 License.