Что нового?

Добро пожаловать на портал KOXX

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы в существующих темах, повышать репутацию своих коллег-участников, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?

Файлы mysql-bin огромного размера. Как почистить и настроить бинарные логи mysql в VMBitrix 7.5.X и Percona?

Kolobok

Участник
Участник
Регистрация
17 Окт 2023
Сообщения
32
Реакции
1
Баллы
8
Файлы 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
 
Сверху Снизу