Журнал репликации
Журнал репликации представляет собой набор журнальных файлов, созданных репликой во время репликации.
Он имеет тот же формат, что и бинарный журнал, содержащий запись о событиях, которые влияют на данные или структуру; таким образом, mariadb-binlog можно использовать для отображения его содержимого. Он состоит из набора файлов журнала репликации и файла индекса, содержащего список всех файлов журнала репликации.
События считываются из бинарного журнала первичного сервера и записываются в журнал репликации вторичного сервера. Затем они выполняются на реплике. Старые файлы журнала репликации автоматически удаляются, когда они больше не нужны.
Создание файлов журнала репликации
Новые файлы журнала репликации создаются репликой в следующие моменты:
- при запуске потока IO
- при сбросе журналов с помощью команды FLUSH LOGS или mariadb-admin flush-logs.
- при достижении максимального размера, определяемого системной переменной max_relay_log_size
Имена файлов журнала репликации
По умолчанию, журналу репликации будет присвоено имя host_name-relay-bin.nnnnnn, где host_name относится к имени хоста сервера, а #nnnnnn the sequence number.
Это может вызвать проблемы, если имя хоста реплики изменится, приведя к ошибке Failed to open the relay log и Could not find target log during relay log initialization. Чтобы избежать этого, можно указать имя файла журнала репликации, задав системные переменные relay_log и relay_log_index.
Если вам необходимо решить эту проблему, когда репликация уже запущена, вы можете остановить реплику, добавить старый файл индекса журнала репликации к новому файлу индекса журнала репликации и перезапустить реплику.
Например:
shell> cat NEW_relay_log_name.index >> OLD_relay_log_name.index shell> mv OLD_relay_log_name.index NEW_relay_log_name.index
Просмотр журналов репликации
Команда SHOW RELAYLOG EVENTS отображает события в журнале репликации, и, поскольку файлы журнала репликации имеют тот же формат, что и файлы бинарного журнала, их можно прочитать с помощью утилиты mariadb-binlog.
Удаление старых журналов репликации
Старые журналы репликации автоматически удаляются, как только все события будут реализованы на реплике, и файл журнала репликации больше не нужен. Это поведение можно изменить, изменив системную переменную relay_log_purge со значения по умолчанию 1 на 0, в этом случае журналы репликации останутся на сервере.
Журналы репликации также удаляются операцией CHANGE MASTER, если не используется опция журнала репликации.
Также можно выполнить сброс журналов с помощью команды FLUSH RELAY LOGS.
Если журналы репликации занимают слишком много места на реплике, можно установить системную переменную relay_log_space_limit для ограничения размера. Поток IO остановится, пока поток SQL не очистит очередь. По умолчанию ограничения нет.
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/relay-log/