15.7.7.35 Вывод статуса репликации
SHOW REPLICA STATUS [FOR CHANNEL channel]
Данное утверждение предоставляет информацию о статусе важных параметров потоков репликации. Для использования данного утверждения требуется привилегия REPLICATION CLIENT (или устаревшая привилегия SUPER).
SHOW REPLICA STATUS является асинхронным. При одновременном выполнении с STOP
REPLICA, SHOW REPLICA STATUS возвращает результат без ожидания завершения STOP
REPLICA по завершению процесса закрытия потока репликации SQL (применителя) или потока ввода-вывода репликации (получателя) (или обоих). Это позволяет использовать его в мониторинге и других приложениях, где получение немедленного ответа от SHOW REPLICA
STATUS важнее, чем обеспечение возврата последних данных.
Если вы используете этот запрос с клиентом mysql, вы можете использовать \G разделитель вместо точки с запятой для получения более читаемого вертикального макета:
mysql> SHOW REPLICA STATUS\G
*************************** 1. row ***************************
Replica_IO_State: Waiting for source to send event
Source_Host: 127.0.0.1
Source_User: root
Source_Port: 13000
Connect_Retry: 1
Source_Log_File: master-bin.000001
Read_Source_Log_Pos: 927
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 1145
Relay_Source_Log_File: master-bin.000001
Replica_IO_Running: Yes
Replica_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Source_Log_Pos: 927
Relay_Log_Space: 1355
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Source_SSL_Allowed: No
Source_SSL_CA_File:
Source_SSL_CA_Path:
Source_SSL_Cert:
Source_SSL_Cipher:
Source_SSL_Key:
Seconds_Behind_Source: 0
Source_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Source_Server_Id: 1
Source_UUID: 73f86016-978b-11ee-ade5-8d2a2a562feb
Source_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Replica_SQL_Running_State: Replica has read all relay log; waiting for more updates
Source_Retry_Count: 10
Source_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Source_SSL_Crl:
Source_SSL_Crlpath:
Retrieved_Gtid_Set: 73f86016-978b-11ee-ade5-8d2a2a562feb:1-3
Executed_Gtid_Set: 73f86016-978b-11ee-ade5-8d2a2a562feb:1-3
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name:
Source_TLS_Version:
Source_public_key_path:
Get_Source_public_key: 0
Network_Namespace:
Performance Schema предоставляет таблицы, которые отображают информацию о репликации. Это аналогично информации, доступной из запроса SHOW REPLICA STATUS, но представлено в табличной форме. Подробнее см. Раздел 29.12.11, «Таблицы репликации Performance Schema».
Вы можете установить параметр GTID_ONLY для запроса CHANGE REPLICATION SOURCE TO, чтобы остановить сохранение имён файлов и позиций файлов в хранилищах метаданных репликации. С этим параметром позиции файлов исходного бинарного журнала и журнала репликации отслеживаются в памяти. Запрос SHOW REPLICA STATUS всё равно отображает позиции файлов при нормальном использовании. Однако, поскольку позиции файлов не обновляются регулярно в хранилище метаданных подключения и хранилище метаданных применителя, кроме некоторых ситуаций, они могут быть устаревшими после перезапуска сервера.
Для канала репликации с параметром GTID_ONLY после запуска сервера, позиции считывания и применённых файлов для исходного бинарного журнала (Read_Source_Log_Pos и Exec_Source_Log_Pos) устанавливаются в ноль, а имена файлов (Source_Log_File и Relay_Source_Log_File) устанавливаются в INVALID. Имя файла журнала репликации (Relay_Log_File) устанавливается в соответствии с параметром relay_log_recovery, либо это новый файл, созданный при запуске сервера, либо первый присутствующий файл журнала репликации. Позиция файла (Relay_Log_Pos) устанавливается в позицию 4, а автоматическое пропускание GTID используется для пропуска любых транзакций в файле, которые уже были применены.
Когда поток получателя связывается с источником и получает действительную информацию о позиции, позиция считывания (Read_Source_Log_Pos) и имя файла (Source_Log_File) обновляются с правильными данными и становятся действительными. Когда поток применителя применяет транзакцию из источника или пропускает уже выполненную транзакцию, позиция выполнения (Exec_Source_Log_Pos) и имя файла (Relay_Source_Log_File) обновляются с правильными данными и становятся действительными. Позиция файла журнала репликации (Relay_Log_Pos) также обновляется в это время.
Следующий список описывает поля, возвращаемые запросом SHOW
REPLICA STATUS. Для получения дополнительной информации об их интерпретации см. Раздел 19.1.7.1, «Проверка состояния репликации».
-
Replica_IO_StateКопия поля
Stateиз выводаSHOW PROCESSLISTдля потока репликации I/O (приемника). Это показывает, что делает поток: пытается подключиться к источнику, ожидает событий от источника, переподключается к источнику и так далее. Список возможных состояний см. в разделе 10.14.5, «Состояния потока репликации I/O (приемника)». -
Source_HostХост источника, к которому подключена реплика.
-
Source_UserИмя пользователя учетной записи, используемой для подключения к источнику.
-
Source_PortПорт, используемый для подключения к источнику.
-
Connect_RetryКоличество секунд между попытками подключения (по умолчанию 60). Это можно установить с помощью оператора
CHANGE REPLICATION SOURCE TO. -
Source_Log_FileИмя файла двоичного журнала источника, из которого поток I/O (приемник) в настоящее время читает. Это установлено в
INVALIDдля канала репликации с параметромGTID_ONLYпосле запуска сервера. Оно будет обновлено, когда реплика свяжется с источником. -
Read_Source_Log_PosПозиция в текущем файле двоичного журнала источника, до которой поток I/O (приемник) прочитал. Это установлено в ноль для канала репликации с параметром
GTID_ONLYпосле запуска сервера. Оно будет обновлено, когда реплика свяжется с источником. -
Relay_Log_FileИмя файла журнала ретрансляции, из которого поток SQL (применитель) в настоящее время читает и выполняет.
-
Relay_Log_PosПозиция в текущем файле журнала ретрансляции, до которой поток SQL (применитель) прочитал и выполнил.
-
Relay_Source_Log_FileИмя файла двоичного журнала источника, содержащего последнее событие, выполненное потоком SQL (применитель). Это установлено в
INVALIDдля канала репликации с параметромGTID_ONLYпосле запуска сервера. Оно будет обновлено при выполнении или пропуске транзакции. -
Replica_IO_RunningЗапущен ли поток репликации I/O (приемник) и успешно ли он подключился к источнику. Внутренне состояние этого потока представлено одним из следующих трех значений:
MYSQL_REPLICA_NOT_RUN. Поток репликации I/O (приемник) не запущен. Для этого состояния
Replica_IO_RunningравноNo.MYSQL_REPLICA_RUN_NOT_CONNECT. Поток репликации I/O (приемник) запущен, но не подключен к источнику репликации. Для этого состояния
Replica_IO_RunningравноConnecting.MYSQL_REPLICA_RUN_CONNECT. Поток репликации I/O (приемник) запущен и подключен к источнику репликации. Для этого состояния
Replica_IO_RunningравноYes.
-
Replica_SQL_RunningЗапущен ли поток репликации SQL (применитель).
-
Replicate_Do_DB,Replicate_Ignore_DBИмена любых баз данных, которые были указаны с помощью параметров
--replicate-do-dbи--replicate-ignore-dbили оператораCHANGE REPLICATION FILTER. Если использовалось предложениеFOR CHANNEL, отображаются фильтры репликации, специфичные для канала. В противном случае отображаются фильтры репликации для каждого канала репликации. -
Replicate_Do_Table,Replicate_Ignore_Table,Replicate_Wild_Do_Table,Replicate_Wild_Ignore_TableИмена любых таблиц, которые были указаны с помощью параметров
--replicate-do-table,--replicate-ignore-table,--replicate-wild-do-tableи--replicate-wild-ignore-tableили оператораCHANGE REPLICATION FILTER. Если использовалось предложениеFOR CHANNEL, отображаются фильтры репликации, специфичные для канала. В противном случае отображаются фильтры репликации для каждого канала репликации. -
Last_Errno,Last_ErrorЭти столбцы являются псевдонимами для
Last_SQL_ErrnoиLast_SQL_Error.Выполнение
RESET BINARY LOGS AND GTIDSилиRESET REPLICAсбрасывает значения, показанные в этих столбцах.ПримечаниеКогда поток репликации SQL получает ошибку, он сначала сообщает об ошибке, а затем останавливает поток SQL. Это означает, что существует небольшой промежуток времени, в течение которого
SHOW REPLICA STATUSпоказывает ненулевое значение дляLast_SQL_Errno, даже еслиReplica_SQL_Runningвсе еще отображаетYes. -
Skip_CounterТекущее значение системной переменной
sql_replica_skip_counter. -
Exec_Source_Log_PosПозиция в текущем файле двоичного журнала источника, до которой поток репликации SQL прочитал и выполнил, отмечая начало следующей транзакции или события для обработки. Это установлено в ноль для канала репликации с параметром
GTID_ONLYпосле запуска сервера. Оно будет обновлено при выполнении или пропуске транзакции.Вы можете использовать это значение с параметром
SOURCE_LOG_POSоператораCHANGE REPLICATION SOURCE TOпри запуске новой реплики из существующей реплики, чтобы новая реплика читала с этой точки. Координаты, заданные (Relay_Source_Log_File,Exec_Source_Log_Pos) в двоичном журнале источника, соответствуют координатам, заданным (Relay_Log_File,Relay_Log_Pos) в журнале ретрансляции.Несоответствия в последовательности транзакций из журнала ретрансляции, которые были выполнены, могут привести к тому, что это значение будет “меткой нижней границы”. Другими словами, гарантируется, что транзакции, появляющиеся до позиции, были зафиксированы, но транзакции после позиции могут быть зафиксированы или нет. Если эти пробелы необходимо исправить, используйте
START REPLICA UNTIL SQL_AFTER_MTS_GAPS. Дополнительную информацию см. в разделе 19.5.1.34, «Репликация и несоответствия транзакций». -
Relay_Log_SpaceОбщий комбинированный размер всех существующих файлов журнала ретрансляции.
-
Until_Condition,Until_Log_File,Until_Log_PosЗначения, указанные в предложении
UNTILоператораSTART REPLICA.Until_Conditionимеет следующие значения:None, если предложениеUNTILне указано.Source, если реплика читает до заданной позиции в двоичном журнале источника.Relay, если реплика читает до заданной позиции в своем журнале ретрансляции.SQL_BEFORE_GTIDS, если поток репликации SQL обрабатывает транзакции до тех пор, пока не достигнет первой транзакции, чей GTID указан вgtid_set.SQL_AFTER_GTIDS, если потоки репликации обрабатывают все транзакции до тех пор, пока последняя транзакция вgtid_setне будет обработана обоими потоками.SQL_AFTER_MTS_GAPS, если потоки SQL многопоточной реплики работают до тех пор, пока не будут найдены пробелы в журнале ретрансляции.
Until_Log_FileиUntil_Log_Posуказывают имя файла журнала и позицию, которые определяют координаты, в которых поток репликации SQL прекращает выполнение.Для получения дополнительной информации о предложениях
UNTILсм. раздел 15.4.2.4, «Оператор START REPLICA». -
Source_SSL_Allowed,Source_SSL_CA_File,Source_SSL_CA_Path,Source_SSL_Cert,Source_SSL_Cipher,Source_SSL_CRL_File,Source_SSL_CRL_Path,Source_SSL_Key,Source_SSL_Verify_Server_CertЭти поля показывают параметры SSL, используемые репликой для подключения к источнику, если таковые имеются.
Source_SSL_Allowedимеет следующие значения:Yes, если разрешено SSL-подключение к источнику.No, если SSL-подключение к источнику не разрешено.Ignored, если SSL-подключение разрешено, но на сервере реплики не включена поддержка SSL.
Значения других полей, связанных с SSL, соответствуют значениям параметров
SOURCE_SSL_*оператораCHANGE REPLICATION SOURCE TO.
-
Seconds_Behind_SourceЭто поле указывает, насколько «поздняя» копия:
Когда копия активно обрабатывает обновления, это поле показывает разницу между текущей меткой времени на копии и исходной меткой времени, зарегистрированной на источнике для события, которое в данный момент обрабатывается на копии.
Когда на копии в данный момент не обрабатывается ни одно событие, это значение равно 0.
По сути, это поле измеряет разницу во времени в секундах между потоком SQL репликации (применяющий) и потоком I/O репликации (получатель). Если сетевое соединение между источником и копией быстрое, поток получения репликации находится очень близко к источнику, поэтому это поле хорошо приближает, насколько поздно поток применения репликации по сравнению с источником. Если сеть медленная, это не хорошее приближение; поток применения репликации может довольно часто отставать от медленного потока получения репликации, поэтому
Seconds_Behind_Sourceчасто показывает значение 0, даже если поток получения репликации отстаёт от источника. Другими словами, этот столбец полезен только для быстрых сетей.Вычисление этой разницы во времени работает даже если у источника и копии не совпадают временные часы, при условии, что разница, вычисленная, когда начинается поток получения копии, остаётся постоянной с этого момента. Любые изменения, включая обновления NTP, могут привести к сдвигам во времени, что может сделать вычисление
Seconds_Behind_Sourceменее надёжным.В MySQL 8.4 это поле является
NULL(неопределённым или неизвестным), если поток применения репликации не работает или если поток применения обработал весь релейный журнал, а поток получения репликации не работает. (В более старых версиях MySQL это поле былоNULL, если поток применения репликации или поток получения репликации не работал или не был подключен к источнику.) Если поток получения репликации работает, но релейный журнал исчерпан,Seconds_Behind_Sourceустанавливается в 0.Значение
Seconds_Behind_Sourceосновано на отметках времени, хранящихся в событиях, которые сохраняются через репликацию. Это означает, что если источник M1 сам является копией M0, любое событие из двоичного журнала M1, которое происходит из двоичного журнала M0, имеет отметку времени M0 для этого события. Это позволяет MySQL успешно дублироватьTIMESTAMP. Однако проблема дляSeconds_Behind_Sourceзаключается в том, что если M1 также получает прямые обновления от клиентов, значениеSeconds_Behind_Sourceслучайным образом колеблется, потому что иногда последнее событие из M1 происходит от M0, а иногда является результатом прямого обновления в M1.При использовании многопотоковой копии следует помнить, что это значение основано на
Exec_Source_Log_Pos, и, следовательно, может не отражать позицию последней подтверждённой транзакции. -
Last_IO_Errno,Last_IO_ErrorНомер ошибки и сообщение об ошибке последней ошибки, которая привела к остановке потока I/O репликации (получатель). Номер ошибки 0 и пустое сообщение означают “нет ошибки.” Если значение
Last_IO_Errorне пустое, значения ошибок также появляются в журнале ошибок копии.Информация об ошибках I/O включает метку времени, показывающую, когда произошла последняя ошибка потока I/O (получатель). Эта метка времени использует формат
YYMMDD hh:mm:ssи отображается в столбцеLast_IO_Error_Timestamp.Выполнение
RESET BINARY LOGS AND GTIDSилиRESET REPLICAсбрасывает значения, отображаемые в этих столбцах. -
Last_SQL_Errno,Last_SQL_ErrorНомер ошибки и сообщение об ошибке последней ошибки, которая привела к остановке потока SQL репликации (применяющий). Номер ошибки 0 и пустое сообщение означают “нет ошибки.” Если значение
Last_SQL_Errorне пустое, значения ошибок также появляются в журнале ошибок копии.Если копия многопотоковая, поток SQL репликации является координатором для потоков-работников. В этом случае поле
Last_SQL_Errorпоказывает ровно то, что показывает столбецLast_Error_Messageв таблице Performance Schemareplication_applier_status_by_coordinator. Значение поля изменяется, чтобы показать, что могут быть другие сбои в других потоках-работниках, которые можно увидеть в таблицеreplication_applier_status_by_worker, которая отображает состояние каждого потока-работника. Если эта таблица недоступна, можно использовать журнал ошибок копии. Журнал или таблицаreplication_applier_status_by_workerтакже следует использовать для получения дополнительной информации о неполадке, отображаемойSHOW REPLICA STATUSили таблицей координатора.Информация о SQL ошибках включает метку времени, показывающую, когда произошла последняя ошибка потока SQL (применяющий). Эта метка времени использует формат
YYMMDD hh:mm:ssи отображается в столбцеLast_SQL_Error_Timestamp.Выполнение
RESET BINARY LOGS AND GTIDSилиRESET REPLICAсбрасывает значения, отображаемые в этих столбцах.В MySQL 8.4 все коды и сообщения об ошибках, отображаемые в столбцах
Last_SQL_ErrnoиLast_SQL_Error, соответствуют значениям ошибок, указанным в. Это не всегда было верно в предыдущих версиях. (Ошибка #11760365, Ошибка #52768) -
Replicate_Ignore_Server_IdsЛюбые идентификаторы серверов, которые были указаны с помощью опции
IGNORE_SERVER_IDSоператораCHANGE REPLICATION SOURCE TO, чтобы копия игнорировала события с этих серверов. Эта опция используется в конфигурации репликации с круговой или иной многоисточниковой репликацией, когда один из серверов удалён. Если какие-либо идентификаторы серверов были установлены таким образом, отображается список, разделённый запятыми, одного или нескольких чисел. Если никакие идентификаторы серверов не были установлены, поле пустое.ПримечаниеЗначение
Ignored_server_idsв таблицеslave_master_infoтакже показывает идентификаторы серверов, которые нужно игнорировать, но в виде списка, разделённого пробелами, перед общим количеством идентификаторов серверов, которые нужно игнорировать. Например, если операторCHANGE REPLICATION SOURCE TO, содержащий опциюIGNORE_SERVER_IDS = (2,6,9), был выдан для указания копии игнорировать источники с идентификаторами серверов 2, 6 или 9, эта информация отображается следующим образом:Replicate_Ignore_Server_Ids: 2, 6, 9
Ignored_server_ids: 3, 2, 6, 9
Фильтрация
Replicate_Ignore_Server_Idsвыполняется потоком I/O (получатель), а не потоком SQL (применяющий), что означает, что события, которые были отфильтрованы, не записываются в релейный журнал. Это отличается от действий по фильтрации, выполняемых параметрами сервера, такими как--replicate-do-table, которые применяются к потоку приложения.Если
SET gtid_mode=ONвыполняется, когда на каком-либо канале существуют установленные идентификаторы серверов с помощьюIGNORE_SERVER_IDS, оператор отклоняется с ошибкой. Перед началом репликации, основанной на GTID, используйтеSHOW REPLICA STATUSдля проверки и очистки всех списков игнорируемых идентификаторов сервера на вовлечённых серверах. Вы можете очистить список, выполнив операторCHANGE REPLICATION SOURCE TOс помощьюIGNORE_SERVER_IDS=(), то есть с пустым списком идентификаторов серверов. -
Source_Server_IdЗначение
server_idс источника. -
Source_UUIDЗначение
server_uuidс источника. -
Source_Info_FileРасположение файла
master.info, использование которого теперь устарело. По умолчанию для репозитория метаданных подключения копии используется таблица. -
SQL_DelayКоличество секунд, на которое копия должна отставать от источника.
-
SQL_Remaining_DelayКогда
Replica_SQL_Running_StateравноWaiting until SOURCE_DELAY seconds after source executed event, в этом поле содержится оставшееся количество секунд задержки. В других случаях это поле равноNULL. -
Replica_SQL_Running_StateСостояние потока SQL (аналогично
Replica_IO_State). Значение идентично значениюStateпотока SQL, отображаемомуSHOW PROCESSLIST. Раздел 10.14.6, «Состояния потока SQL репликации» содержит список возможных состояний. -
Source_Retry_CountКоличество попыток, которые копия может предпринять для повторного подключения к источнику в случае потери соединения. Это значение можно установить с помощью опции
SOURCE_RETRY_COUNTоператораCHANGE REPLICATION SOURCE TO. -
Source_BindСетевой интерфейс, к которому подключена копия, если таковой имеется. Это устанавливается с помощью опции
SOURCE_BINDдля оператораCHANGE REPLICATION SOURCE TO.
-
Last_IO_Error_TimestampОтметка времени в формате
YYMMDD hh:mm:ss, показывающая время последней ошибки ввода-вывода. -
Last_SQL_Error_TimestampОтметка времени в формате
YYMMDD hh:mm:ss, показывающая время последней ошибки SQL. -
Retrieved_Gtid_SetНабор глобальных идентификаторов транзакций (GTID), соответствующих всем транзакциям, полученным этой репликой. Пустой, если GTID не используются. Для получения дополнительной информации см. Наборы GTID.
Это набор всех GTID, которые существуют или существовали в журналах репликации. Каждый GTID добавляется, как только поступает
Gtid_log_event. Это может привести к тому, что частично переданным транзакциям будут включены их GTID в набор.При потере всех журналов репликации из-за выполнения
RESET REPLICAилиCHANGE REPLICATION SOURCE TO, или из-за влияния параметра--relay-log-recovery, набор очищается. При использованииrelay_log_purge = 1, всегда сохраняется последний журнал репликации, и набор не очищается. -
Executed_Gtid_SetНабор глобальных идентификаторов транзакций (GTID), записанных в двоичный журнал. Это то же самое, что и значение для глобальной
gtid_executedсистемной переменной на этом сервере, а также значение дляExecuted_Gtid_Setв выводеSHOW BINARY LOG STATUSна этом сервере. Пустой, если GTID не используются. Для получения дополнительной информации см. Наборы GTID. -
Auto_Position1, если для канала используется автоматическое позиционирование GTID, в противном случае 0.
-
Replicate_Rewrite_DBЗначение
Replicate_Rewrite_DBотображает любые правила фильтрации репликации, которые были указаны. Например, если было установлено следующее правило фильтрации репликации:CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB=((db1,db2), (db3,db4));
значение
Replicate_Rewrite_DBотобразит:Replicate_Rewrite_DB: (db1,db2),(db3,db4)
Для получения дополнительной информации см. Раздел 15.4.2.1, «Заявление CHANGE REPLICATION FILTER».
-
Channel_nameКанал репликации, который отображается. Всегда существует канал репликации по умолчанию, и можно добавить больше каналов репликации. Для получения дополнительной информации см. Раздел 19.2.2, «Каналы репликации».
-
Master_TLS_VersionВерсия TLS, используемая на источнике. Сведения о версиях TLS см. в Разделе 8.3.2, «Протоколы и шифры TLS для защищенных соединений».
-
Source_public_key_pathИмя пути к файлу, содержащему копию открытого ключа со стороны реплики, необходимую источнику для обмена паролем на основе пар ключей RSA. Файл должен быть в формате PEM. Этот столбец относится к репликам, которые авторизуются с помощью плагина аутентификации
sha256_password(устаревший) илиcaching_sha2_password.Если
Source_public_key_pathзадан и указывает на действительный файл открытого ключа, он имеет приоритет надGet_source_public_key. -
Get_source_public_keyТребовать ли от источника открытый ключ, необходимый для обмена паролем на основе пар ключей RSA. Этот столбец относится к репликам, которые авторизуются с помощью плагина аутентификации
caching_sha2_password. Для этого плагина источник не отправляет открытый ключ, если его не запросить.Если
Source_public_key_pathзадан и указывает на действительный файл открытого ключа, он имеет приоритет надGet_source_public_key. -
Network_NamespaceИмя пространства имен сети; пустое, если соединение использует пространство имен по умолчанию (глобальное). Сведения о пространствах имен сети см. в Разделе 7.1.14, «Поддержка пространств имен сети».
© 2025 Oracle
Licensed under the GPLv2 License.