—
Обсуждение тут
—
Что делать, если binlog слишком большой
1️⃣ Посмотреть, включён ли binlog и сколько занимает
mysql -e "SHOW VARIABLES LIKE 'log_bin';"
mysql -e "SHOW BINARY LOGS;"
2️⃣ Удалить старые binlog-и (БЕЗ перезапуска MySQL)
Например, удалить все binlog-и старше определённого:
mysql -e "PURGE BINARY LOGS TO 'mysql-bin.000150';"
Или удалить старее 7 дней:
mysql -e "PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;"
⚠️ Важно: если используется репликация — убедись, что slave прочитал эти логи.
3️⃣ Ограничить автоматическое хранение binlog
Открыть /etc/mysql/my.cnf или /etc/my.cnf и добавить, например:
expire_logs_days = 7
max_binlog_size = 100M
Для новых MySQL (>= 8.0.21) параметр другой:
binlog_expire_logs_seconds = 604800 # 7 дней
Перезапуск:
systemctl restart mysql
4️⃣ Если binlog вообще не нужен — можно отключить
Если у тебя нет репликации и не нужен point-in-time recovery, можно отключить:
В my.cnf:
log_bin = OFF
или полностью убрать блок:
log-bin=mysql-bin
server-id=1
И затем:
systemctl restart mysql
5️⃣ Zabbix может сильно нагружать MySQL
Если много записей, стоит:
✔ Уменьшить retention (историю)
В Zabbix frontend → Administration → Housekeeping:
Например:
- History storage: 7 дней
- Trends: 90 дней
- Events: 30 дней