+7 495 008 8452 пн.-пт. 10:00 – 17:00
Загрузка...
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Файлы mysql-bin огромного размера. Как почистить и настроить бинарные логи mysql в VMBitrix 7.5.X и Percona?
Очень часто на сервере с виртуальной машиной битрикс VMBitrix при очень частом изменении данных БД заполняется дисковое пространство, т.к. в машине конфигурация mysql-bin-логов идет по умолчанию (хранить журналы 30 дней, размер одного файла журнала 1гб)

Для справки:
Двоичный журнал БД (mysql-bin-log) содержит «события», которые описывают изменения базы данных, такие как операции создания таблицы или изменения данных таблицы. Он также содержит события для операторов, которые потенциально могли внести изменения (например, DELETE, который не соответствует ни одной строке). Двоичный журнал также содержит информацию о том, сколько времени потребовалось каждому оператору для обновления данных.

Статья предполагает базовые навыки администрирования серверов.

1/
Размер binlog журнала можно оценить так.

Сперва размер файлов базы данных:

# du -sh /var/lib/mysql
138G    /var/lib/mysql

кол-во файлов binlog журнала:

# ls /var/lib/mysql/mysql-bin.* -lh | wc -l
1146

сами файлы:
# ls /var/lib/mysql/mysql-bin.* -lh | more
-rw-r----- 1 mysql mysql 101M Feb  6 00:26 /var/lib/mysql/mysql-bin.013982
-rw-r----- 1 mysql mysql 101M Feb  6 00:36 /var/lib/mysql/mysql-bin.013983
-rw-r----- 1 mysql mysql 101M Feb  6 00:45 /var/lib/mysql/mysql-bin.013984
-rw-r----- 1 mysql mysql 101M Feb  6 00:55 /var/lib/mysql/mysql-bin.013985
-rw-r----- 1 mysql mysql 101M Feb  6 01:04 /var/lib/mysql/mysql-bin.013986
-rw-r----- 1 mysql mysql 101M Feb  6 01:11 /var/lib/mysql/mysql-bin.013987
...
--More--

как видно свыше тысячи файлов размером по 100 мб, имеем
1146 * 101M = ~113 гб журналов mysql-bin


3/
Как очистить эти файлы?

Самый простой способ - это зайти в командный клиент mysql (percona) под root и выполнить запрос PURGE BINARY LOGS BEFORE 'YYYY-MM-DD hh:mm:ss', где 'YYYY-MM-DD hh:mm:ss' - ваша текущая дата в указанном формате:

# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> PURGE BINARY LOGS BEFORE '2022-02-16 00:00:00';
Query OK, 0 rows affected (0.09 sec)

mysql> exit;
Bye

проверяем, что файлы почистились, смотрим их список:

# ls /var/lib/mysql/mysql-bin.* -lh | wc -l
4

файлов осталось 4 штути, что так и должно быть, т.е. остались только текущие рабочие журналы.

размер файлов базы данных:

# du -sh /var/lib/mysql
15G     /var/lib/mysql

15гб вместо 138гб с файлами журналов, неплохо, правда?

см. также:
PURGE BINARY LOGS Statement


4/
как сделать чтобы размер этих файлов не рос?

настроить сервис percona, а именно отредактировать файл /etc/mysql/conf.d/z_bx_custom.cnf
добавить или отредактировать в нем конфигурацию:

[mysqld]
expire_logs_days = 2
max_binlog_size = 512M
binlog_space_limit = 15G

затем перезапуск сервера:
# systemctl restart mysqld

см. также:

Если у вас остались вопросы - свяжитесь с нами любым удобным вам сопособом.



Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...