Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
то ждем ваше обращение в нашей службе тех поддержки.
Очень часто на сервере с виртуальной машиной битрикс 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
как видно свыше тысячи файлов размером по 100 мб, имеем
1146 * 101M = ~113 гб журналов mysql-bin
3/
Как очистить эти файлы?
# 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
см. также:
Если у вас остались вопросы - свяжитесь с нами любым удобным вам сопособом.
Назад в раздел
Для справки:
Двоичный журнал БД (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
см. также:
Если у вас остались вопросы - свяжитесь с нами любым удобным вам сопособом.
Назад в раздел
Подписаться на новые материалы раздела: