У меня есть сервер MySQL с репликацией ведомого на другой хост. Сегодня я наткнулся на высокую загрузку диска подчиненным хостом и обнаружил, что занимает все пространство. Как оказалось, это место занято журналами реле подчиненных устройств.
Я попытался повернуть expire_logs_days
переменной вниз и перезапустил демон MySQL, но сообщенное дисковое пространство осталось прежним. Я не мог найти ничего кроме этого FLUSH LOGS
следует очистить старые журналы. Я пробовал это безрезультатно.
Есть ли способ уменьшить дисковое пространство, занимаемое журналами реле?
Параметр expire_logs_days управляет двоичным журналированием, а не релейным журналированием.
Обычно журналы реле очищаются, когда ведомое устройство завершает применение данных из них. Это можно изменить с помощью relay-log-purge, но по умолчанию это 1.
Если ваше ведомое устройство просто отстает, оно намеренно продолжит накапливать журналы реле. Возможно, вы захотите установить ограничение пространства журнала реле, чтобы предотвратить проблемы с нехваткой места на диске. Этот параметр обеспечивает ограничение дискового пространства, которое поток ввода-вывода может использовать для хранения журналов реле.
Убедитесь, что вы не установили relay_log_purge=0
в вашей конфигурации. Я установил эту опцию при устранении неполадок репликации и забыл ее удалить. Позже мы обнаружили, что диск журналов заполнялся из-за того, что журналы реле не очищались после применения.
Вы можете проверить и установить состояние этой переменной динамически следующим образом:
> SELECT @@global.relay_log_purge;
+--------------------------+
| @@global.relay_log_purge |
+--------------------------+
| 0 |
+--------------------------+
> SET @@global.relay_log_purge = 1;
Query OK, 0 rows affected (0.04 sec)
> SELECT @@global.relay_log_purge;
+--------------------------+
| @@global.relay_log_purge |
+--------------------------+
| 1 |
+--------------------------+