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 (приемник) в данный момент читает. После запуска сервера для канала репликации с параметром
GTID_ONLYон устанавливается вINVALID. Он будет обновлен, когда реплика свяжется с источником. -
Read_Source_Log_PosПозиция в текущем файле двоичного журнала источника, до которой поток I/O (приемник) прочитал. После запуска сервера для канала репликации с параметром
GTID_ONLYон устанавливается в ноль. Он будет обновлен, когда реплика свяжется с источником. -
Relay_Log_FileИмя файла журнала ретрансляции, из которого поток SQL (применитель) в данный момент читает и выполняет.
-
Relay_Log_PosПозиция в текущем файле журнала ретрансляции, до которой поток SQL (применитель) прочитал и выполнил.
-
Relay_Source_Log_FileИмя файла двоичного журнала источника, содержащего последнее событие, выполненное потоком SQL (применитель). После запуска сервера для канала репликации с параметром
GTID_ONLYон устанавливается вINVALID. Он будет обновлен при выполнении или пропуске транзакции. -
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.35, «Репликация и несоответствия транзакций». -
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 (приёмником). Если сетевое соединение между источником и репликой быстрое, поток приёмника репликации очень близок к источнику, поэтому это поле является хорошим приближением того, насколько отстаёт поток приложения репликации по сравнению с источником. Если сеть медленная, это не является хорошим приближением; поток приложения репликации часто оказывается в ситуации, когда он догоняет медленный поток приёма репликации, поэтому поле часто показывает значение 0, даже если поток приёма репликации отстаёт от источника. Другими словами, этот столбец полезен только для быстрых сетей.
Этот расчет разницы во времени работает даже если у источника и реплики разное время, при условии, что разница, вычисленная при запуске потока приёма репликации, остаётся постоянной с этого момента. Любые изменения, включая обновления NTP, могут привести к расхождению во времени, что может снизить надёжность вычисления
Seconds_Behind_Source.В MySQL 9.2, это поле
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 9.2, все коды ошибок и сообщения об ошибках, отображаемые в столбцах
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_log_event. Это может привести к тому, что частично переданным транзакциям будут включены их GTID в набор.При потере всех журналов репликации из-за выполнения
RESET REPLICAилиCHANGE REPLICATION SOURCE TO, или из-за эффекта опции--relay-log-recovery, набор очищается. При использовании опцииrelay_log_purge = 1самый новый журнал репликации всегда сохраняется, и набор не очищается. -
Executed_Gtid_SetНабор глобальных идентификаторов транзакций, записанных в бинарный журнал. Это то же самое, что и значение глобальной переменной системы
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.