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, не поддерживающей использование таблиц для репозиториев, на версию, в которой они поддерживаются.
Не пытайтесь вручную обновлять или вставлять строки в таблицы
mysql.slave_master_infoилиmysql.slave_relay_log_info. Это может привести к неопределенному поведению и не поддерживается. Выполнение любого оператора, требующего записи блокировки на одной или обеих таблицахslave_master_infoиslave_relay_log_info, запрещено во время работы репликации (хотя операторы, выполняющие только чтение, разрешены в любое время).Доступ к файлу или таблице репозитория метаданных подключения реплики должен быть ограничен администратором базы данных, поскольку он содержит имя и пароль учетной записи пользователя репликации для подключения к источнику. Используйте режим ограниченного доступа для защиты резервных копий базы данных, включающих этот репозиторий.
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.