Spec-Zone.ru › MySQL 5.7

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

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

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

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

По умолчанию репозитории метаданных репликации создаются как файлы в каталоге данных, имеющие имена master.info и relay-log.info, или с альтернативными именами и расположениями, указанными параметром --master-info-file и системной переменной relay_log_info_file. Для создания репозиториев метаданных репликации в виде таблиц укажите master_info_repository=TABLE и relay_log_info_repository=TABLE при запуске сервера. В этом случае репозиторий метаданных подключения реплики записывается в таблицу slave_master_info в системной схеме mysql, а репозиторий метаданных аппликатоpa реплики записывается в таблицу 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. Доступ к файлу или таблице репозитория метаданных подключения реплики должен быть ограничен администратором базы данных, поскольку он содержит имя и пароль учетной записи пользователя репликации для подключения к источнику. Используйте режим ограниченного доступа для защиты резервных копий базы данных, включающих этот репозиторий.

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

Если вы установите master_info_repository и relay_log_info_repository в значение TABLE, таблицы mysql.slave_master_info и mysql.slave_relay_log_info создаются с использованием транзакционного хранилища данных InnoDB. Обновления в таблице репозитория метаданных аппликатоpa реплики выполняются вместе с транзакциями, что означает, что информация о прогрессе реплики, записанная в этом репозитории, всегда согласована с тем, что было применено к базе данных, даже в случае непредвиденной остановки сервера. Необходимо включить параметр --relay-log-recovery на реплике для обеспечения устойчивости. Более подробную информацию см. в разделе 16.3.2 «Обработка непредвиденной остановки реплики».

При резервном копировании данных реплики или переносе моментального снимка данных для создания новой реплики убедитесь, что вы включаете таблицы mysql.slave_master_info и mysql.slave_relay_log_info, содержащие репозитории метаданных репликации, или эквивалентные файлы (master.info и relay-log.info в каталоге данных, если вы не указали альтернативные имена и расположения). Если используется репликация на основе позиции файла бинарного журнала, репозитории метаданных репликации необходимы для возобновления репликации после перезапуска восстановленной или скопированной реплики. Если у вас нет файлов журнала реле, но у вас есть репозиторий метаданных аппликатоpa реплики, вы можете проверить его, чтобы определить, насколько далеко поток SQL репликации выполнил транзакции в бинарном журнале источника. Затем вы можете использовать оператор CHANGE MASTER TO с параметрами MASTER_LOG_FILE и MASTER_LOG_POS, чтобы указать реплике повторно прочитать бинарные журналы из источника с этой точки (при условии, что необходимые бинарные журналы все еще существуют на источнике).

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

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

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

master.info Строка файла slave_master_info Столбец таблицы SHOW SLAVE STATUS Столбец Описание
1 Number_of_lines [None] Количество строк в файле или столбцов в таблице
2 Master_log_name Master_Log_File Имя двоичного журнала, который в данный момент читается с источника
3 Master_log_pos Read_Master_Log_Pos Текущая позиция в двоичном журнале, прочитанная с источника
4 Host Master_Host Имя хоста сервера-источника
5 User_name Master_User Имя пользователя репликации, используемого для подключения к источнику
6 User_password Пароль (не отображается командой SHOW SLAVE STATUS) Пароль, используемый для подключения к источнику
7 Port Master_Port Сеть порт, используемый для подключения к источнику
8 Connect_retry Connect_Retry Период (в секундах), который реплика ждет перед повторной попыткой подключения к источнику
9 Enabled_ssl Master_SSL_Allowed Указывает, поддерживает ли сервер подключения SSL
10 Ssl_ca Master_SSL_CA_File Файл, используемый для сертификата центра сертификации (CA)
11 Ssl_capath Master_SSL_CA_Path Путь к каталогу сертификатов центра сертификации (CA)
12 Ssl_cert Master_SSL_Cert Имя файла SSL-сертификата
13 Ssl_cipher Master_SSL_Cipher Список возможных шифров, используемых в рукопожатии для SSL-соединения
14 Ssl_key Master_SSL_Key Имя файла SSL-ключа
15 Ssl_verify_server_cert Master_SSL_Verify_Server_Cert Требуется ли проверка сертификата сервера
16 Heartbeat [None] Интервал между ударами репликации сердца, в секундах
17 Bind Master_Bind Какой из сетевых интерфейсов реплики должен использоваться для подключения к источнику
18 Ignored_server_ids Replicate_Ignore_Server_Ids Список идентификаторов серверов, которые следует игнорировать. Обратите внимание, что для Ignored_server_ids список идентификаторов серверов предваряется общим числом игнорируемых идентификаторов серверов.
19 Uuid Master_UUID Уникальный идентификатор источника
20 Retry_count Master_Retry_Count Максимальное количество разрешенных попыток повторного подключения
21 Ssl_crl [None] Путь к файлу списка аннулированных SSL-сертификатов
22 Ssl_crlpath [None] Путь к каталогу, содержащему файлы списков аннулированных SSL-сертификатов
23 Enabled_auto_position Auto_position Включена ли автоматическая позиция или нет
24 Channel_name Channel_name Имя канала репликации
25 Tls_version Master_TLS_Version Версия TLS на источнике

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

Строка в файле relay-log.info slave_relay_log_info Столбец таблицы SHOW SLAVE STATUS Столбец Описание
1 Number_of_lines [None] Количество строк в файле или столбцов в таблице
2 Relay_log_name Relay_Log_File Имя текущего файла релейного журнала
3 Relay_log_pos Relay_Log_Pos Текущая позиция в файле релейного журнала; события до этой позиции были выполнены на базе данных реплики
4 Master_log_name Relay_Master_Log_File Имя файла двоичного журнала источника, из которого были прочитаны события в файле релейного журнала
5 Master_log_pos Exec_Master_Log_Pos Эквивалентная позиция в файле двоичного журнала источника событий, которые уже были выполнены
6 Sql_delay SQL_Delay Количество секунд, которое реплика должна отставать от источника
7 Number_of_workers [None] Количество рабочих потоков на реплике для параллельного выполнения событий репликации (транзакций)
8 Id [None] Идентификатор, используемый для внутренних целей; в настоящее время он всегда равен 1
9 Channel_name Channel_name Имя канала репликации

В версиях MySQL до MySQL 5.6 файл relay-log.info не содержит количество строк или значение задержки (и таблица slave_relay_log_info недоступна).

Строка Столбец Статус Описание
1 Relay_Log_File Имя текущего файла релейного журнала
2 Relay_Log_Pos Текущая позиция в файле релейного журнала; события до этой позиции были выполнены на базе данных реплики
3 Relay_Master_Log_File Имя файла двоичного журнала источника, из которого были прочитаны события в файле релейного журнала
4 Exec_Master_Log_Pos Эквивалентная позиция в файле двоичного журнала источника событий, которые уже были выполнены
Примечание

Если вы понижаете сервер реплики до версии, более старой, чем MySQL 5.6, более старый сервер не будет правильно читать файл relay-log.info. Для решения этой проблемы измените файл в текстовом редакторе, удалив начальную строку, содержащую количество строк.

Содержимое файла relay-log.info и состояния, отображаемые командой SHOW SLAVE STATUS, могут не совпадать, если файл relay-log.info не был записан на диск. В идеале вы должны просматривать relay-log.info только на реплике, которая находится в автономном режиме (то есть, mysqld не работает). Для работающей системы вы можете использовать SHOW SLAVE STATUS, или запросить таблицы mysql.slave_master_info и mysql.slave_relay_log_info, если вы записываете хранилища метаданных репликации в таблицы.

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

Spec-Zone.ru

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