15.4.2.3 Заявление RESET REPLICA
RESET REPLICA [ALL] [channel_option]
channel_option:
FOR CHANNEL channel
RESET REPLICA заставляет реплику забыть свое положение в двоичном журнале источника.
Это утверждение предназначено для чистой перезагрузки; оно очищает репозитории метаданных репликации, удаляет все файлы журнала релея и запускает новый файл журнала релея. Оно также сбрасывает значение задержки репликации, указанной с помощью параметра SOURCE_DELAY утверждения CHANGE REPLICATION SOURCE TO.
Все файлы журнала релея удаляются, даже если они еще не были полностью выполнены потоком SQL репликации. (Это состояние, вероятно, будет существовать на реплике, если вы выдали утверждение STOP
REPLICA или если реплика сильно загружена.)
Для сервера, где используются GTID (gtid_mode равно ON), выполнение RESET REPLICA не влияет на историю выполнения GTID. Утверждение не изменяет значения gtid_executed или gtid_purged, или таблицу mysql.gtid_executed. Если вам необходимо сбросить историю выполнения GTID, используйте RESET
BINARY LOGS AND GTIDS, даже если сервер с поддержкой GTID является репликой, где двоичная регистрация отключена.
RESET REPLICA требует привилегии RELOAD.
Для использования RESET REPLICA, поток репликации SQL и поток репликации I/O (приемник) должны быть остановлены, поэтому на работающей реплике используйте STOP
REPLICA перед выполнением RESET
REPLICA. Для использования RESET REPLICA на узле группы репликации, статус узла должен быть OFFLINE, что означает, что плагин загружен, но узел в данный момент не принадлежит ни к какой группе. Узел группы можно вывести из строя с помощью утверждения STOP
GROUP REPLICATION.
Необязательная клауза FOR CHANNEL
позволяет указать, к какому каналу репликации применяется утверждение. Применение клаузы channelFOR CHANNEL
применяет утверждение channelRESET REPLICA к определённому каналу репликации. Объединение клаузы FOR CHANNEL
с опцией channelALL удаляет указанный канал. Если канал не указан и не существует дополнительных каналов, утверждение применяется к по умолчанию каналу. Выполнение утверждения RESET REPLICA
ALL без клаузы FOR CHANNEL
, когда существует несколько каналов репликации, удаляет все каналы репликации и воссоздаёт только канал по умолчанию. Дополнительную информацию см. в Разделе 19.2.2, «Каналы репликации». channel
RESET REPLICA не изменяет параметры подключения репликации, которые включают имя хоста и порт источника, учётную запись пользователя репликации и её пароль, учётную запись PRIVILEGE_CHECKS_USER, параметр REQUIRE_ROW_FORMAT, параметр REQUIRE_TABLE_PRIMARY_KEY_CHECK и параметр ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS. Если вы хотите изменить параметры подключения репликации, вы можете сделать это, используя утверждение CHANGE
REPLICATION SOURCE TO после запуска сервера. Если вы хотите удалить все параметры подключения репликации, используйте RESET REPLICA ALL. RESET REPLICA ALL также очищает список IGNORE_SERVER_IDS, заданный CHANGE REPLICATION SOURCE TO. После использования RESET REPLICA ALL, если вы хотите снова использовать экземпляр в качестве реплики, вам необходимо выполнить утверждение CHANGE REPLICATION SOURCE TO после запуска сервера, чтобы указать новые параметры подключения.
Можно задать параметр GTID_ONLY в утверждении CHANGE REPLICATION SOURCE TO, чтобы остановить сохранение имён файлов и позиций файлов в репозиториях метаданных репликации. При выполнении RESET
REPLICA, репозитории метаданных репликации синхронизируются. RESET REPLICA ALL удаляет, а не обновляет репозитории, поэтому они неявно синхронизируются.
В случае неожиданного завершения работы сервера или преднамеренной перезагрузки после выполнения RESET REPLICA, но перед выполнением START REPLICA, параметры подключения репликации сохраняются в безопасных для сбоев таблицах InnoDB mysql.slave_master_info и mysql.slave_relay_log_info как часть операции RESET REPLICA. Они также сохраняются в памяти. В случае неожиданного завершения работы сервера или преднамеренной перезагрузки после выполнения RESET
REPLICA, но перед выполнением START
REPLICA, параметры подключения репликации извлекаются из таблиц и повторно применяются к каналу. Это относится как к параметрам подключения, так и к репозиториям метаданных приложения.
RESET REPLICA не изменяет настройки фильтров репликации (например, --replicate-ignore-table) для каналов, затронутых утверждением. Однако RESET
REPLICA ALL удаляет фильтры репликации, которые были установлены на каналах, удалённых утверждением. Когда удалённый канал или каналы воссоздаются, все глобальные фильтры репликации, указанные для реплики, копируются в них, и никакие специфичные для канала фильтры репликации не применяются. Для получения дополнительной информации см. Раздел 19.2.5.4, «Фильтры репликации, основанные на каналах».
RESET REPLICA вызывает неявную фиксацию текущей транзакции. См. Раздел 15.3.3, «Утверждения, вызывающие неявную фиксацию».
Если поток SQL репликации находился в середине репликации временных таблиц, когда он был остановлен, и выполняется RESET
REPLICA, эти временные таблицы реплицируются на реплике удаляются.
При использовании на реплике узла SQL кластера NDB RESET
REPLICA очищает таблицу mysql.ndb_apply_status. При использовании данного утверждения следует помнить, что ndb_apply_status использует движок хранилища NDB и, следовательно, совместно используется всеми узлами SQL, подключенными к кластеру.
Можно переопределить это поведение, выполнив SET GLOBAL
@@ndb_clear_apply_status=OFF перед выполнением RESET REPLICA, что предотвращает очистку таблицы ndb_apply_status в таких случаях.
© 2025 Oracle
Licensed under the GPLv2 License.