Spec-Zone.ru › MySQL 5.7

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 Schema replication_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_Position

    1, если используется автопозиционирование; в противном случае 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/show-slave-status.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API