Spec-Zone.ru › MySQL 8.4

19.2.4.2 Репозитории метаданных репликации

Сервер реплики создает два репозитория метаданных репликации: репозиторий метаданных соединения и репозиторий метаданных приложения. Репозитории метаданных репликации сохраняются после остановки сервера реплики. Если используется репликация на основе позиции файла бинарного лога, при перезапуске реплики она считывает два репозитория, чтобы определить, до какой точки она ранее прочитала бинарный лог источника и обработала свой собственный релейный лог. Если используется репликация на основе GTID, реплика не использует репозитории метаданных репликации для этой цели, но нуждается в них для других содержащихся в них метаданных.

  • Репозиторий метаданных соединения реплики содержит информацию, необходимую потоку ввода-вывода репликации (приемнику), чтобы подключиться к серверу источника репликации и получить транзакции из бинарного лога источника. Метаданные в этом репозитории включают конфигурацию подключения, данные учетной записи пользователя репликации, настройки SSL для подключения и имя файла и позицию, с которой поток приемника репликации в настоящее время считывает данные из бинарного лога источника.

  • Репозиторий метаданных приложения реплики содержит информацию, необходимую потоку SQL репликации (приложению), чтобы прочитать и применить транзакции из релейного лога реплики. Метаданные в этом репозитории включают имя файла и позицию, до которой поток приложения репликации выполнил транзакции в релейном логе, а также эквивалентную позицию в бинарном логе источника. Он также включает метаданные для процесса применения транзакций, такие как количество потоков-работников и PRIVILEGE_CHECKS_USER учетную запись для канала.

Репозиторий метаданных соединения записывается в таблицу slave_master_info в схеме системы mysql, а репозиторий метаданных приложения записывается в таблицу slave_relay_log_info в схеме системы mysql. Выводится сообщение об ошибке, если mysqld не может инициализировать таблицы для репозиториев метаданных репликации, но реплика разрешает продолжить запуск. Такая ситуация чаще всего возникает при обновлении с версии MySQL, не поддерживающей использование таблиц для репозиториев, на версию, которая их поддерживает.

Важно
  1. Не пытайтесь вручную обновлять или вставлять строки в таблицы mysql.slave_master_info или mysql.slave_relay_log_info. Это может привести к неопределенному поведению и не поддерживается. Выполнение любого оператора, требующего блокировки записи на одной или обеих таблицах slave_master_info и slave_relay_log_info, запрещено во время текущей репликации (хотя операторы, выполняющие только чтение, разрешены в любое время).

  2. Права доступа к таблице репозитория метаданных соединения mysql.slave_master_info должны быть ограничены администратором базы данных, так как она содержит имя и пароль учетной записи пользователя репликации для подключения к источнику. Используйте режим ограниченного доступа для защиты резервных копий базы данных, которые включают эту таблицу. Вы можете очистить учетные данные пользователя репликации из репозитория метаданных соединения и вместо этого всегда предоставлять их с помощью оператора START REPLICA для запуска канала репликации. Этот подход означает, что для перезапуска канала репликации всегда требуется вмешательство оператора, но имя и пароль учетной записи не записываются в репозиториях метаданных репликации.

RESET REPLICA очищает данные в репозиториях метаданных репликации, за исключением параметров подключения репликации (в зависимости от версии MySQL Server). Подробности см. в описании для RESET REPLICA.

Вы можете установить параметр GTID_ONLY оператора CHANGE REPLICATION SOURCE TO, чтобы канал репликации прекратил сохранение имен файлов и позиций файлов в репозиториях метаданных репликации. Это предотвращает запись и чтение в таблицы в ситуациях, когда репликация на основе GTID фактически не требует их. С настройкой GTID_ONLY репозитории метаданных соединения и приложения не обновляются при очереди и применении репликой событий в транзакции или при остановке и запуске потоков репликации. Позиции файлов отслеживаются в памяти и могут быть просмотрены с помощью SHOW REPLICA STATUS, если они необходимы. Репозитории метаданных репликации синхронизируются только в следующих ситуациях:

  • При выполнении оператора CHANGE REPLICATION SOURCE TO.

  • При выполнении оператора RESET REPLICA. RESET REPLICA ALL удаляет, а не обновляет репозитории, поэтому они синхронизируются неявно.

  • При инициализации канала репликации.

  • Если репозитории метаданных репликации перемещаются из файлов в таблицы.

По умолчанию репозитории метаданных репликации создаются как таблицы; использование файлов устарело.

Таблицы mysql.slave_master_info и mysql.slave_relay_log_info создаются с помощью транзакционного хранилища данных InnoDB. Обновления таблицы репозитория метаданных приложения выполняются вместе с транзакциями, что означает, что информация о прогрессе реплики, записанная в этом репозитории, всегда согласована с тем, что было применено к базе данных, даже в случае неожиданной остановки сервера. Сведения о комбинации настроек реплики, обеспечивающей наибольшую устойчивость к неожиданным остановкам, см. в Разделе 19.4.2, «Обработка неожиданной остановки реплики».

При создании резервной копии данных реплики или передаче снимка данных для создания новой реплики убедитесь, что вы включаете таблицы mysql.slave_master_info и mysql.slave_relay_log_info, содержащие репозитории метаданных репликации. Для операций клонирования обратите внимание, что при создании репозиториев метаданных репликации как таблиц они копируются к получателю во время операции клонирования, а при создании их как файлов — нет. При использовании репликации на основе позиции файла бинарного лога репозитории метаданных репликации необходимы для возобновления репликации после перезапуска восстановленной, скопированной или клонированной реплики. Если у вас нет файлов релейного лога, но есть репозиторий метаданных приложения, вы можете проверить его, чтобы определить, насколько далеко поток SQL репликации выполнил операции в бинарном логе источника. Затем вы можете использовать оператор CHANGE REPLICATION SOURCE TO с параметрами SOURCE_LOG_FILE и SOURCE_LOG_POS, чтобы указать реплике повторно прочитать бинарные логи источника с этой точки (при условии, что требуемые бинарные логи все еще существуют на источнике).

Дополнительный репозиторий, репозиторий метаданных рабочих потоков приложения, создается в первую очередь для внутреннего использования и содержит информацию о состоянии потоков-работников в реплике с множеством потоков. Репозиторий метаданных рабочих потоков приложения включает имена и позиции файлов релейного лога и бинарного лога источника для каждого потока-работника. Если репозиторий метаданных приложения создается как таблица, что является по умолчанию, репозиторий метаданных рабочих потоков приложения записывается в таблицу mysql.slave_worker_info. Если репозиторий метаданных приложения записывается в файл, репозиторий метаданных рабочих потоков приложения записывается в файл worker-relay-log.info. Для внешнего использования информация о состоянии потоков-работников представлена в таблице Performance Schema replication_applier_status_by_worker.

Репозитории метаданных репликации первоначально содержали информацию, аналогичную той, что отображается в выводе оператора SHOW REPLICA STATUS, которая обсуждается в Разделе 15.4.2, «SQL-операторы для управления серверами реплики». Позднее в репозиториях метаданных репликации была добавлена дополнительная информация, которая не отображается оператором SHOW REPLICA STATUS.

Для репозитория метаданных соединения следующая таблица показывает соответствие между столбцами в таблице mysql.slave_master_info, столбцами, отображаемыми оператором SHOW REPLICA STATUS, и строками в устаревшем файле master.info.

slave_master_info Столбец таблицы SHOW REPLICA STATUS Столбец master.info Строка файла Описание
Number_of_lines [None] 1 Количество столбцов в таблице (или строк в файле)
Master_log_name Source_Log_File 2 Имя двоичного журнала, который в данный момент считывается со источника
Master_log_pos Read_Source_Log_Pos 3 Текущая позиция в двоичном журнале, прочитанном со источника
Host Source_Host 4 Имя хоста сервера репликации-источника
User_name Source_User 5 Имя учетной записи пользователя репликации, используемой для подключения к источнику
User_password Пароль (не отображается в SHOW REPLICA STATUS) 6 Пароль учетной записи пользователя репликации, используемой для подключения к источнику
Port Source_Port 7 Сеть порт, используемый для подключения к серверу репликации-источнику
Connect_retry Connect_Retry 8 Период (в секундах), который реплика ожидает перед попыткой повторного подключения к источнику
Enabled_ssl Source_SSL_Allowed 9 Поддерживает ли реплика подключения SSL
Ssl_ca Source_SSL_CA_File 10 Файл, используемый для сертификата Центра сертификации (CA)
Ssl_capath Source_SSL_CA_Path 11 Путь к файлу сертификата Центра сертификации (CA)
Ssl_cert Source_SSL_Cert 12 Имя файла SSL-сертификата
Ssl_cipher Source_SSL_Cipher 13 Список возможных шифров, используемых в рукопожатии для SSL-соединения
Ssl_key Source_SSL_Key 14 Имя файла SSL-ключа
Ssl_verify_server_cert Source_SSL_Verify_Server_Cert 15 Требовать проверку серверного сертификата
Heartbeat [None] 16 Интервал между сердцебиениями репликации в секундах
Bind Source_Bind 17 Какой из сетевых интерфейсов реплики должен использоваться для подключения к источнику
Ignored_server_ids Replicate_Ignore_Server_Ids 18 Список идентификаторов серверов, которые следует игнорировать. Обратите внимание, что для Ignored_server_ids список идентификаторов серверов предваряется общим количеством идентификаторов серверов для игнорирования.
Uuid Source_UUID 19 Уникальный идентификатор источника
Retry_count Source_Retry_Count 20 Максимальное количество разрешенных попыток повторного подключения
Ssl_crl [None] 21 Путь к файлу списка отзыва SSL-сертификатов
Ssl_crlpath [None] 22 Путь к каталогу, содержащему файлы списка отзыва SSL-сертификатов
Enabled_auto_position Auto_position 23 Используется ли автоматическое позиционирование GTID
Channel_name Channel_name 24 Имя канала репликации
Tls_version Source_TLS_Version 25 Версия TLS на источнике
Public_key_path Source_public_key_path 26 Имя файла открытого ключа RSA
Get_public_key Get_source_public_key 27 Запрашивать ли открытый ключ RSA у источника
Network_namespace Network_namespace 28 Сетевое пространство имен
Master_compression_algorithm [None] 29 Разрешенные алгоритмы сжатия для подключения к источнику
Master_zstd_compression_level [None] 30 zstd уровень сжатия
Tls_ciphersuites [None] 31 Разрешенные наборы шифров для TLSv1.3
Source_connection_auto_failover [None] 32 Активирован ли механизм аварийного переключения асинхронного соединения
Gtid_only [None] 33 Использует ли канал только GTID и не сохраняет позиции

Для хранилища метаданных приложения следующая таблица показывает соответствие столбцов в таблице mysql.slave_relay_log_info, столбцов, отображаемых SHOW REPLICA STATUS, и строк устаревшего файла relay-log.info.

slave_relay_log_info Столбец таблицы SHOW REPLICA STATUS Столбец Строка в файле relay-log.info Описание
Number_of_lines [None] 1 Количество столбцов в таблице или строк в файле
Relay_log_name Relay_Log_File 2 Имя текущего файла журнала ретрансляции
Relay_log_pos Relay_Log_Pos 3 Текущая позиция в файле журнала ретрансляции; события до этой позиции были выполнены в базе данных реплики
Master_log_name Relay_Source_Log_File 4 Имя файла двоичного журнала источника, из которого были прочитаны события в файле журнала ретрансляции
Master_log_pos Exec_Source_Log_Pos 5 Эквивалентная позиция в файле двоичного журнала источника событий, которые были выполнены в реплике
Sql_delay SQL_Delay 6 Количество секунд, на которое реплика должна отставать от источника
Number_of_workers [None] 7 Количество потоков обработчиков для одновременного применения транзакций репликации
Id [None] 8 Идентификатор, используемый для внутренних целей; в настоящее время он всегда равен 1
Channel_name Channel_name 9 Имя канала репликации
Privilege_checks_username [None] 10 Имя пользователя для учетной записи PRIVILEGE_CHECKS_USER для канала
Privilege_checks_hostname [None] 11 Имя хоста для учетной записи PRIVILEGE_CHECKS_USER для канала
Require_row_format [None] 12 Принимает ли канал только события на основе строк
Require_table_primary_key_check [None] 13 Политика канала относительно необходимости наличия первичных ключей у таблиц для операций CREATE TABLE и ALTER TABLE
Assign_gtids_to_anonymous_transactions_type [None] 14 Если канал присваивает GTID реплицированным транзакциям, которые его еще не имеют, используя локальный UUID реплики, это значение является LOCAL; если канал делает это, используя вместо этого UUID, который был задан вручную, значение является UUID. Если канал не присваивает GTID в таких случаях, значение является OFF.
Assign_gtids_to_anonymous_transactions_value [None] 15 UUID, используемый в GTID, присвоенных анонимным транзакциям

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/replica-logs-status.html

Spec-Zone.ru

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