SystemdDoctor
служба не работает mysql диск

MySQL: журнал двоичных изменений заполнил диск

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Не настроен срок хранения журнала

    Без срока файлы копятся годами. На нагруженной базе это десятки гигабайт в месяц.

  2. Реплика отстала и держит файлы

    База не удаляет журнал, пока он нужен подписчику. Отставшая или отключённая реплика приводит к росту.

  3. Раздел мал для объёма изменений

    При интенсивной записи журнал занимает много места между очистками.

Диагностика

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

Размер файлов журнала изменений.

sudo du -sh /var/lib/mysql/*bin.* 2>/dev/null | tail -5

Список файлов журнала с размерами.

mysql -e 'SHOW BINARY LOGS;' 2>/dev/null | tail -5

Свободное место на разделе базы.

df -h /var/lib/mysql

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Не настроен срок хранения журнала
Почему происходит
Без срока файлы копятся годами. На нагруженной базе это десятки гигабайт в месяц.
Как проверить
Посмотрите срок и размер журнала.
mysql -e "SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';" 2>/dev/null
sudo du -sh /var/lib/mysql/*bin.* 2>/dev/null | tail -3
Как исправить
Задайте срок хранения в настройках. Удалять файлы вручную из файловой системы нельзя: база потеряет их учёт.
2. Реплика отстала и держит файлы
Почему происходит
База не удаляет журнал, пока он нужен подписчику. Отставшая или отключённая реплика приводит к росту.
Как проверить
Посмотрите состояние репликации.
mysql -e 'SHOW REPLICAS;' 2>/dev/null || mysql -e 'SHOW SLAVE HOSTS;' 2>/dev/null
Как исправить
Восстановите репликацию или уберите ненужного подписчика. Пока он числится, файлы будут храниться.
3. Раздел мал для объёма изменений
Почему происходит
При интенсивной записи журнал занимает много места между очистками.
Как проверить
Посмотрите место и размеры файлов.
df -h /var/lib/mysql
sudo ls -lh /var/lib/mysql/ | grep bin | tail -5
Как исправить
Вынесите журнал на отдельный раздел или сократите срок хранения.

Пример вывода

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

mysqld[1200]: [ERROR] [MY-000035] [Server] Disk is full writing './binlog.000412' (OS errno 28 - No space left on device). Waiting for someone to free space...
mysqld[1200]: [ERROR] [MY-011072] [Server] Retry attempt 1 ...

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация MySQL: журнал двоичных изменений документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено заполнением раздела файлами журнала изменений.
    собственная проверка, systemd 255
    сверено 15 сентября 2026