13.7.5.34 Вывод состояния репликации
SHOW SLAVE STATUS [FOR CHANNEL channel]
Данное утверждение предоставляет информацию о статусе ключевых параметров потоков репликации. Оно требует либо привилегии SUPER, либо привилегии REPLICATION CLIENT.
Если вы используете клиент mysql, вы можете использовать \G-оператор завершения, вместо точки с запятой, для получения более читаемой вертикальной структуры вывода:
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: repl
Master_Port: 13000
Connect_Retry: 60
Master_Log_File: source-bin.000002
Read_Master_Log_Pos: 1307
Relay_Log_File: replica-relay-bin.000003
Relay_Log_Pos: 1508
Relay_Master_Log_File: source-bin.000002
Slave_IO_Running: Yes
Slave_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_Master_Log_Pos: 1307
Relay_Log_Space: 1858
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 3e11fa47-71ca-11e1-9e33-c80aa9429562
Master_Info_File: /var/mysqld.2/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Reading event from the relay log
Master_Retry_Count: 10
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5
Executed_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_name:
Master_TLS_Version: TLSv1.2
Performance Schema предоставляет таблицы, которые отображают репликационную информацию. Это аналогично информации, доступной из утверждения SHOW SLAVE STATUS, но представленной в табличной форме. Подробнее см. Раздел 25.12.11, «Таблицы репликации Performance Schema».
Следующий список описывает поля, возвращаемые утверждением SHOW SLAVE STATUS. Дополнительную информацию о толковании их значений можно найти в Разделе 16.1.7.1, «Проверка статуса репликации».
-
Slave_IO_StateКопия поля
Stateиз выводаSHOW PROCESSLISTдля потока репликации I/O. Это показывает, что делает поток: пытается подключиться к источнику, ожидает событий от источника, переподключается к источнику и так далее. Список возможных состояний см. в разделе 8.14.6, «Состояния потока репликации I/O». -
Master_HostХост источника, к которому подключена реплика.
-
Master_UserИмя пользователя учетной записи, используемой для подключения к источнику.
-
Master_PortПорт, используемый для подключения к источнику.
-
Connect_RetryКоличество секунд между попытками подключения (по умолчанию 60). Это можно установить с помощью оператора
CHANGE MASTER TO. -
Master_Log_FileИмя файла двоичного журнала источника, из которого поток I/O в данный момент читает.
-
Read_Master_Log_PosПозиция в текущем файле двоичного журнала источника, до которой поток I/O прочитал.
-
Relay_Log_FileИмя файла журнала реле, из которого поток SQL в данный момент читает и выполняет.
-
Relay_Log_PosПозиция в текущем файле журнала реле, до которой поток SQL прочитал и выполнил.
-
Relay_Master_Log_FileИмя файла двоичного журнала источника, содержащего последнее событие, выполненное потоком SQL.
-
Slave_IO_RunningЗапущен ли поток I/O и успешно ли подключен к источнику. Внутренне состояние этого потока представлено одним из следующих трех значений:
MYSQL_SLAVE_NOT_RUN. Поток репликации I/O не запущен. Для этого состояния
Slave_IO_RunningравноNo.MYSQL_SLAVE_RUN_NOT_CONNECT. Поток репликации I/O запущен, но не подключен к источнику репликации. Для этого состояния
Slave_IO_RunningравноConnecting.MYSQL_SLAVE_RUN_CONNECT. Поток репликации I/O запущен и подключен к источнику репликации. Для этого состояния
Slave_IO_RunningравноYes.
Значение системной переменной состояния
Slave_runningсоответствует этому значению. -
Slave_SQL_RunningЗапущен ли поток SQL.
-
Replicate_Do_DB,Replicate_Ignore_DBСписки баз данных, указанные с помощью параметров
--replicate-do-dbи--replicate-ignore-db, если таковые имеются. -
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, если таковые имеются. -
Last_Errno,Last_ErrorЭти столбцы являются псевдонимами для
Last_SQL_ErrnoиLast_SQL_Error.Выполнение
RESET MASTERилиRESET SLAVEсбрасывает значения, показанные в этих столбцах.ПримечаниеКогда поток SQL реплики получает ошибку, он сначала сообщает об ошибке, а затем останавливает поток SQL. Это означает, что существует небольшой промежуток времени, в течение которого
SHOW SLAVE STATUSпоказывает ненулевое значение дляLast_SQL_Errno, даже еслиSlave_SQL_Runningвсе еще отображаетYes. -
Skip_CounterТекущее значение системной переменной
sql_slave_skip_counter. См. раздел 13.4.2.4, «Синтаксис SET GLOBAL sql_slave_skip_counter». -
Exec_Master_Log_PosПозиция в текущем файле двоичного журнала источника, до которой поток SQL прочитал и выполнил, отмечая начало следующей транзакции или события для обработки. Вы можете использовать это значение с параметром
MASTER_LOG_POSоператораCHANGE MASTER TOпри запуске новой реплики из существующей реплики, чтобы новая реплика читала с этой точки. Координаты, заданные (Relay_Master_Log_File,Exec_Master_Log_Pos) в двоичном журнале источника, соответствуют координатам, заданным (Relay_Log_File,Relay_Log_Pos) в журнале реле.Несоответствия в последовательности транзакций из журнала реле, которые были выполнены, могут привести к тому, что это значение будет “меткой нижней границы”. Другими словами, гарантируется, что транзакции, появляющиеся до позиции, завершены, но транзакции после позиции могут быть завершены или нет. Если необходимо исправить эти пробелы, используйте
START SLAVE UNTIL SQL_AFTER_MTS_GAPS. См. раздел 16.4.1.32, «Репликация и несоответствия транзакций» для получения дополнительной информации. -
Relay_Log_SpaceОбщий объединенный размер всех существующих файлов журнала реле.
-
Until_Condition,Until_Log_File,Until_Log_PosЗначения, указанные в предложении
UNTILоператораSTART SLAVE.Until_Conditionимеет следующие значения:Noneесли предложениеUNTILне было указаноMasterесли реплика читает до заданной позиции в двоичном журнале источника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см. раздел 13.4.2.5, «Оператор START SLAVE». -
Master_SSL_Allowed,Master_SSL_CA_File,Master_SSL_CA_Path,Master_SSL_Cert,Master_SSL_Cipher,Master_SSL_CRL_File,Master_SSL_CRL_Path,Master_SSL_Key,Master_SSL_Verify_Server_CertЭти поля показывают параметры SSL, используемые репликой для подключения к источнику, если таковые имеются.
Master_SSL_Allowedимеет следующие значения:Yesесли разрешено SSL-подключение к источникуNoесли SSL-подключение к источнику не разрешеноIgnoredесли SSL-подключение разрешено, но на сервере реплики не включена поддержка SSL
Значения других полей, связанных с SSL, соответствуют значениям параметров
MASTER_SSL_CA,MASTER_SSL_CAPATH,MASTER_SSL_CERT,MASTER_SSL_CIPHER,MASTER_SSL_CRL,MASTER_SSL_CRLPATH,MASTER_SSL_KEYиMASTER_SSL_VERIFY_SERVER_CERTоператораCHANGE MASTER TO. См. раздел 13.4.2.1, «Оператор CHANGE MASTER TO».
-
Seconds_Behind_MasterЭто поле указывает, насколько “отстаёт” реплика:
Когда реплика активно обрабатывает обновления, это поле показывает разницу между текущей меткой времени на реплике и исходной меткой времени, записанной на источнике для события, в настоящее время обрабатываемого на реплике.
Когда на реплике в настоящее время не обрабатывается ни одно событие, это значение равно 0.
По сути, это поле измеряет разницу во времени в секундах между потоком SQL реплики и потоком ввода-вывода реплики. Если сетевое соединение между источником и репликой быстрое, поток ввода-вывода реплики очень близок к источнику, поэтому это поле является хорошим приближением того, насколько отстаёт поток SQL реплики по сравнению с источником. Если сеть медленная, это не хорошее приближение; поток SQL реплики может довольно часто догонять медленный поток ввода-вывода реплики, поэтому
Seconds_Behind_Masterчасто показывает значение 0, даже если поток ввода-вывода отстаёт от источника. Другими словами, этот столбец полезен только для быстрых сетей.Этот расчёт разницы во времени работает даже если у источника и реплики не совпадают системные часы, при условии, что разница, рассчитанная при запуске потока ввода-вывода реплики, остаётся постоянной с этого момента. Любые изменения — включая обновления NTP — могут привести к сдвигам во времени, что может сделать вычисление
Seconds_Behind_Masterменее надёжным.В MySQL 5.7 это поле является
NULL(неопределённым или неизвестным), если поток SQL реплики не работает или если поток SQL обработал весь лог ретрансляции, а поток ввода-вывода реплики не работает. (В более старых версиях MySQL это поле былоNULL, если поток SQL реплики или поток ввода-вывода реплики не работал или не был подключён к источнику.) Если поток ввода-вывода работает, но лог ретрансляции пуст,Seconds_Behind_Masterустанавливается в 0.Значение
Seconds_Behind_Masterосновано на метках времени, хранящихся в событиях, которые сохраняются при репликации. Это означает, что если источник M1 сам является репликой M0, любое событие из двоичного журнала M1, происходящее из двоичного журнала M0, имеет метку времени M0 для этого события. Это позволяет MySQL успешно реплицироватьTIMESTAMP. Однако проблема дляSeconds_Behind_Masterзаключается в том, что если M1 также получает прямые обновления от клиентов, значениеSeconds_Behind_Masterслучайным образом колеблется, потому что иногда последнее событие из M1 происходит от M0, а иногда является результатом прямого обновления на M1.При использовании многопоточной реплики следует учитывать, что это значение основано на
Exec_Master_Log_Pos, и поэтому может не отражать положение последней успешно подтверждённой транзакции. -
Last_IO_Errno,Last_IO_ErrorНомер ошибки и сообщение об ошибке последней ошибки, которая привела к остановке потока ввода-вывода. Номер ошибки 0 и сообщение — пустая строка означают “нет ошибки”. Если значение
Last_IO_Errorне пустое, значения ошибок также появляются в журнале ошибок реплики.Информация об ошибках ввода-вывода включает метку времени, показывающую, когда произошла последняя ошибка потока ввода-вывода. Эта метка времени использует формат
YYMMDD hh:mm:ssи отображается в столбцеLast_IO_Error_Timestamp.Выполнение
RESET MASTERилиRESET SLAVEсбрасывает значения, отображаемые в этих столбцах. -
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 SLAVE STATUSили координаторной таблицей.Информация об ошибках SQL включает метку времени, показывающую, когда произошла последняя ошибка потока SQL. Эта метка времени использует формат
YYMMDD hh:mm:ssи отображается в столбцеLast_SQL_Error_Timestamp.Выполнение
RESET MASTERилиRESET SLAVEсбрасывает значения, отображаемые в этих столбцах.В MySQL 5.7 все коды и сообщения об ошибках, отображаемые в столбцах
Last_SQL_ErrnoиLast_SQL_Error, соответствуют значениям ошибок, перечисленным в . Это не всегда было верно в предыдущих версиях. (Ошибка #11760365, Ошибка #52768) -
Replicate_Ignore_Server_IdsВ MySQL 5.7 вы можете настроить реплику на игнорирование событий с 0 или более источников, используя опцию
IGNORE_SERVER_IDSдля оператораCHANGE MASTER TO. По умолчанию это пустое значение, и обычно оно изменяется только при использовании кольцевой или другой конфигурации репликации с несколькими источниками. Сообщение, показываемое дляReplicate_Ignore_Server_Ids, когда оно не пустое, состоит из списка, разделённого запятыми, одного или более чисел, указывающих идентификаторы серверов, которые нужно игнорировать. Например:Replicate_Ignore_Server_Ids: 2, 6, 9
ПримечаниеIgnored_server_idsтакже показывает идентификаторы серверов для игнорирования, но это список, разделённый пробелами, которому предшествует общее количество идентификаторов серверов для игнорирования. Например, если операторCHANGE MASTER TOс опциейIGNORE_SERVER_IDS = (2,6,9)был выдан, чтобы сказать реплике игнорировать источники с идентификаторами серверов 2, 6 или 9, эта информация отображается так:Ignored_server_ids: 3, 2, 6, 9
Первое число (в данном случае
3) показывает количество игнорируемых идентификаторов серверов.Фильтрация
Replicate_Ignore_Server_Idsвыполняется потоком ввода-вывода, а не потоком SQL, что означает, что события, которые были отфильтрованы, не записываются в лог ретрансляции. Это отличается от действий фильтрации, выполняемых серверными опциями, такими как--replicate-do-table, которые применяются к потоку SQL. -
Master_Server_IdЗначение
server_idиз источника. -
Master_UUIDЗначение
server_uuidиз источника. -
Master_Info_FileПуть к файлу
master.info. -
SQL_DelayКоличество секунд, на которое реплика должна отставать от источника.
-
SQL_Remaining_DelayКогда
Slave_SQL_Running_StateявляетсяWaiting until MASTER_DELAY seconds after master executed event, это поле содержит оставшееся количество секунд задержки. В остальных случаях это поле являетсяNULL. -
Slave_SQL_Running_StateСостояние потока SQL (аналогично
Slave_IO_State). Значение идентично значениюStateпотока SQL, отображаемому командойSHOW PROCESSLIST. Раздел 8.14.7, «Состояния потока SQL реплики» содержит список возможных состояний. -
Master_Retry_CountКоличество попыток реплики переподключиться к источнику в случае потери соединения. Это значение можно установить с помощью опции
MASTER_RETRY_COUNTоператораCHANGE MASTER TO(предпочтительно) или более старой опции сервера--master-retry-count(по-прежнему поддерживается для обратной совместимости). -
Master_BindСетевой интерфейс, к которому привязана реплика, если таковой имеется. Это устанавливается с помощью опции
MASTER_BINDоператораCHANGE MASTER 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 SLAVEилиCHANGE MASTER TO, или из-за влияния параметра--relay-log-recovery, множество очищается. При использованииrelay_log_purge = 1, самый новый журнал репликации всегда сохраняется, и множество не очищается. -
Executed_Gtid_SetМножество глобальных идентификаторов транзакций, записанных в бинарный журнал. Это то же самое, что значение для глобальной
gtid_executedсистемной переменной на этом сервере, а также значение дляExecuted_Gtid_Setв выходных данныхSHOW MASTER STATUSна этом сервере. Пусто, если GTID не используются. Дополнительную информацию см. в наборе GTID. -
Auto_Position1, если используется автопозиционирование; в противном случае 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)
Дополнительную информацию см. в разделе 13.4.2.2 «Управление фильтром репликации».
-
Channel_nameКанал репликации, который отображается. Всегда есть канал репликации по умолчанию, и можно добавить больше каналов репликации. Дополнительную информацию см. в разделе 16.2.2 «Каналы репликации».
-
Master_TLS_VersionВерсия TLS, используемая на источнике. Сведения о версии TLS см. в разделе 6.3.2 «Протоколы и шифры TLS защищенных соединений». Этот столбец был добавлен в MySQL 5.7.10.
© 2025 Oracle
Licensed under the GPLv2 License.