Spec-Zone.ru › MySQL 8.4

19.2.4.1 Журнал ретрансляции

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

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

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

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

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

Имена и расположение файла журнала ретрансляции и файла индекса журнала ретрансляции по умолчанию можно изменить соответственно с помощью системных переменных relay_log и relay_log_index (см. Раздел 19.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

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

  • Каждый раз, когда поток репликации I/O (приемник) запускается.

  • При сбросе журналов (например, с помощью 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-8.4-en/replica-logs-relaylog.html

Spec-Zone.ru

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