25.12.11 Таблицы Performance Schema для репликации
- 25.12.11.1 Таблица replication_connection_configuration
- 25.12.11.2 Таблица replication_connection_status
- 25.12.11.3 Таблица replication_applier_configuration
- 25.12.11.4 Таблица replication_applier_status
- 25.12.11.5 Таблица replication_applier_status_by_coordinator
- 25.12.11.6 Таблица replication_applier_status_by_worker
- 25.12.11.7 Таблица replication_group_member_stats
- 25.12.11.8 Таблица replication_group_members
Модуль Performance Schema предоставляет таблицы, которые отображают информацию о репликации. Это аналогично информации, доступной из оператора SHOW SLAVE STATUS, но представление в виде таблиц более доступно и удобно в использовании:
Вывод оператора
SHOW SLAVE STATUSудобен для визуального осмотра, но не так удобен для программирования. Напротив, с помощью таблиц Performance Schema информацию о статусе реплики можно искать с помощью стандартных запросовSELECT, включая сложныеWHEREусловия, объединения и так далее.Результаты запросов можно сохранять в таблицы для дальнейшего анализа или присваивать переменным, а затем использовать в хранимых процедурах.
Таблицы репликации предоставляют более подробную диагностическую информацию. Для многопоточной работы реплики, оператор
SHOW SLAVE STATUSсообщает обо всех ошибках координаторных и рабочих потоков, используя поляLast_SQL_ErrnoиLast_SQL_Error, так что видна только самая последняя ошибка, и информация может быть потеряна. Таблицы репликации хранят ошибки на уровне каждого потока без потери информации.Последняя обработанная транзакция видна в таблицах репликации на уровне каждого рабочего потока. Эта информация недоступна из
SHOW SLAVE STATUS.Разработчики, знакомые с интерфейсом Performance Schema, могут расширить таблицы репликации, добавляя строки в таблицы, чтобы предоставить дополнительную информацию.
Описание таблиц репликации
Модуль Performance Schema предоставляет следующие таблицы, связанные с репликацией:
-
Таблицы, содержащие информацию о подключении реплики к серверу-источнику репликации:
replication_connection_configuration: Параметры конфигурации для подключения к источникуreplication_connection_status: Текущий статус подключения к источнику
-
Таблицы, содержащие общую (не зависящую от потока) информацию об обработчике транзакций:
replication_applier_configuration: Параметры конфигурации для обработчика транзакций на реплике.replication_applier_status: Текущий статус обработчика транзакций на реплике.
-
Таблицы, содержащие информацию о конкретных потоках, ответственных за применение транзакций, полученных от источника:
replication_applier_status_by_coordinator: Статус координаторного потока (пуста, если реплика не многопоточная).replication_applier_status_by_worker: Статус потока-обработчика или потоков-рабочих, если реплика многопоточная.
-
Таблицы, содержащие информацию о членах группы репликации:
replication_group_members: Предоставляет сетевую и статусную информацию о членах группы.replication_group_member_stats: Предоставляет статистическую информацию о членах группы и транзакциях, в которых они участвуют.
В следующих разделах подробно описывается каждая таблица репликации, включая соответствие между столбцами, создаваемыми оператором SHOW SLAVE STATUS, и столбцами таблиц репликации, в которых отображается та же информация.
Остальная часть этого введения в таблицы репликации описывает, как модуль Performance Schema заполняет их, и какие поля из SHOW SLAVE STATUS не представлены в таблицах.
Жизненный цикл таблиц репликации
Модуль Performance Schema заполняет таблицы репликации следующим образом:
Перед выполнением
CHANGE MASTER TO, таблицы пусты.После
CHANGE MASTER TO, параметры конфигурации отображаются в таблицах. В этот момент активных потоков реплики нет, поэтому столбцыTHREAD_IDпусты, а столбцыSERVICE_STATEимеют значениеOFF.После
START SLAVE, можно увидеть значения, не являющиесяNULLTHREAD_ID. Для потоков, которые неактивны или активны, значениеSERVICE_STATEравноON. Поток, который подключается к источнику, имеет значениеCONNECTINGво время установления соединения, иONв дальнейшем, пока соединение сохраняется.После
STOP SLAVE, столбцыTHREAD_IDстановятся пустыми, а столбцыSERVICE_STATEдля потоков, которые больше не существуют, имеют значениеOFF.Таблицы сохраняются после
STOP SLAVEили после смерти потоков из-за ошибки.Таблица
replication_applier_status_by_workerнепуста только при работе реплики в многопоточном режиме. То есть, если системная переменнаяslave_parallel_workersбольше 0, эта таблица заполняется при выполненииSTART SLAVE, а количество строк отображает количество рабочих потоков.
SHOW SLAVE STATUS Информация, отсутствующая в таблицах репликации
Информация в таблицах репликации Performance Schema несколько отличается от информации, доступной из SHOW SLAVE STATUS, так как таблицы ориентированы на использование глобальных идентификаторов транзакций (GTIDs), а не имен и позиций файлов, и они представляют значения UUID сервера, а не идентификаторы сервера. Из-за этих различий несколько столбцов SHOW SLAVE STATUS не сохраняются в таблицах репликации Performance Schema или представлены иным образом:
-
Следующие поля относятся к именам файлов и позициям и не сохраняются:
Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Exec_Master_Log_Pos Until_Condition Until_Log_File Until_Log_Pos
Поле
Master_Info_Fileне сохраняется. Оно относится к файлуmaster.info, который был заменён безопасными таблицами.-
Следующие поля основаны на
server_id, а не наserver_uuid, и не сохраняются:Master_Server_Id Replicate_Ignore_Server_Ids
Поле
Skip_Counterосновано на количестве событий, а не на GTID, и не сохраняется.-
Следующие поля ошибок являются псевдонимами для
Last_SQL_ErrnoиLast_SQL_Error, поэтому они не сохраняются:Last_Errno Last_Error
В схеме Performance Schema эта информация об ошибках доступна в столбцах
LAST_ERROR_NUMBERиLAST_ERROR_MESSAGEтаблицыreplication_applier_status_by_worker(иreplication_applier_status_by_coordinator, если реплика многопоточная). Эти таблицы предоставляют более подробную информацию об ошибках по каждому потоку, чем доступно изLast_ErrnoиLast_Error. -
Поля, содержащие информацию о параметрах фильтрации командной строки, не сохраняются:
Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table
Поля
Slave_IO_StateиSlave_SQL_Running_Stateне сохраняются. При необходимости эти значения можно получить из списка процессов, используя столбецTHREAD_IDсоответствующей таблицы репликации и объединив его со столбцомIDв таблицеINFORMATION_SCHEMAPROCESSLIST, чтобы выбрать столбецSTATEпоследней таблицы.Поле
Executed_Gtid_Setможет содержать большой объём текста. Вместо этого таблицы Performance Schema показывают GTID транзакций, которые в данный момент применяются репликой. Альтернативно, набор выполненных GTID можно получить из значения системной переменнойgtid_executed.Поля
Seconds_Behind_MasterиRelay_Log_Spaceнаходятся на стадии обсуждения и не сохраняются.
Переменные состояния, перемещённые в таблицы репликации
Начиная с версии MySQL 5.7.5, следующие переменные состояния (ранее отслеживаемые с помощью SHOW
STATUS) были перемещены в таблицы репликации Perfomance Schema:
Эти переменные состояния теперь актуальны только при использовании одного канала репликации, так как они только отображают состояние канала репликации по умолчанию. При наличии нескольких каналов репликации используйте таблицы репликации Performance Schema, описанные в данном разделе, которые отображают эти переменные для каждого существующего канала репликации.
Каналы репликации
Первый столбец таблиц репликации Performance Schema — это CHANNEL_NAME. Это позволяет просматривать таблицы по каждому каналу репликации. В конфигурации репликации без нескольких источников существует один канал репликации по умолчанию. При использовании нескольких каналов репликации на реплике вы можете фильтровать таблицы по каналу репликации для мониторинга конкретного канала репликации. Дополнительную информацию см. в разделе 16.2.2, «Каналы репликации» и разделе 16.1.5.8, «Мониторинг репликации с несколькими источниками».
© 2025 Oracle
Licensed under the GPLv2 License.