15.4.2.3 Заявление RESET REPLICA
RESET REPLICA [ALL] [channel_option]
channel_option:
FOR CHANNEL channel
RESET REPLICA заставляет реплику забыть своё положение в двоичном журнале источника.
Это утверждение предназначено для чистого начала; оно очищает репозитории метаданных репликации, удаляет все файлы журнала релеев и начинает новый файл журнала релеев. Оно также сбрасывает задержку репликации, указанную с помощью опции SOURCE_DELAY утверждения CHANGE REPLICATION SOURCE TO, до 0.
Все файлы журнала релеев удаляются, даже если они не были полностью выполнены потоком 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 репликации и поток ввода/вывода репликации (приемник) должны быть остановлены, поэтому на работающей реплике используйте 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 Cluster, 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.