Spec-Zone.ru › MySQL 5.7

16.2.4.1 Журнал пересылки

Журнал пересылки, подобно бинарному журналу, состоит из набора пронумерованных файлов, содержащих события, описывающие изменения в базе данных, и файла индекса, содержащего имена всех используемых файлов журнала пересылки.

Термин «файл журнала пересылки» обозначает отдельный пронумерованный файл, содержащий события базы данных. Термин «журнал пересылки» обозначает набор пронумерованных файлов журнала пересылки плюс файл индекса.

Файлы журнала пересылки имеют тот же формат, что и файлы бинарного журнала, и их можно прочитать с помощью mysqlbinlog (см. Раздел 4.6.7, «mysqlbinlog — Утилита для обработки файлов бинарного журнала»).

По умолчанию имена файлов журнала пересылки имеют вид host_name-relay-bin.nnnnnn в каталоге данных, где host_name — имя хоста сервера репликации, а nnnnnn — порядковый номер. Последующие файлы журнала пересылки создаются с использованием последовательных порядковых номеров, начиная с 000001. Реплика использует файл индекса для отслеживания файлов журнала пересылки, которые в настоящее время используются. Имя файла индекса журнала пересылки по умолчанию — host_name-relay-bin.index в каталоге данных.

Имена файла журнала пересылки и файла индекса журнала пересылки по умолчанию можно переопределить соответственно с помощью системных переменных relay_log и relay_log_index (см. Раздел 16.1.6, «Параметры и переменные репликации и ведения бинарного журнала»).

Если реплика использует имена файлов журнала пересылки по умолчанию, основанные на имени хоста, изменение имени хоста реплики после настройки репликации может привести к сбоям репликации с ошибками Не удалось открыть журнал пересылки и Не удалось найти целевой журнал во время инициализации журнала пересылки. Это известная проблема (см. ошибку #2122). Если вы предполагаете, что имя хоста реплики может измениться в будущем (например, если сеть настроена на реплике таким образом, что ее имя хоста можно изменить с помощью DHCP), вы можете полностью избежать этой проблемы, используя системные переменные relay_log и relay_log_index, чтобы явно указать имена файлов журнала пересылки при первоначальной настройке реплики. Это делает имена независимыми от изменений имени хоста сервера.

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

$> cat new_relay_log_name.index >> old_relay_log_name.index
$> mv old_relay_log_name.index new_relay_log_name.index

Сервер реплики создает новый файл журнала пересылки при следующих условиях:

  • Каждый раз, когда поток ввода-вывода репликации запускается.

  • При сбросе журналов (например, с помощью FLUSH LOGS или mysqladmin flush-logs).

  • Когда размер текущего файла журнала пересылки становится слишком большим, определяется следующим образом:

    • Если значение max_relay_log_size больше 0, это максимальный размер файла журнала пересылки.

    • Если значение max_relay_log_size равно 0, max_binlog_size определяет максимальный размер файла журнала пересылки.

Поток SQL репликации автоматически удаляет каждый файл журнала пересылки после выполнения всех событий в файле и после того, как он ему больше не нужен. Нет явного механизма удаления журналов пересылки, потому что поток SQL репликации позаботится об этом. Однако FLUSH LOGS вращает журналы пересылки, что влияет на то, когда поток SQL репликации удаляет их.

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

Spec-Zone.ru

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