Spec-Zone .ru
спецификации, руководства, описания, API

16.2.2.1. Ведомый Релейный Журнал

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

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

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

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

Файл журнала реле значения по умолчанию и имена индексного файла журнала реле могут быть переопределены с, соответственно, --relay-log и --relay-log-index параметры сервера (см. Раздел 16.1.4, "Репликация и Двоичные Опции Журналирования и Переменные").

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

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

shell> cat new_relay_log_name.index
        >> old_relay_log_name.indexshell> mv old_relay_log_name.index new_relay_log_name.index

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

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