Безопасное удаление (чистка) логов mysql-bin в MySQL или MariaDB

Thank you for reading this post, don't forget to subscribe!

Фай­лы mysql-bin.xxxxxx пред­став­ля­ют из себя бинар­ные логи со все­ми запро­са­ми к базе. Они необ­хо­ди­мы для репли­ка­ции дан­ных или вос­ста­нов­ле­ния инфор­ма­ции в слу­чае необходимости.

Так дан­ные фай­лы со вре­ме­нем могут зани­мать мно­го дис­ко­во­го про­стран­ства, необ­хо­ди­мо выпол­нить их чист­ку или, вовсе, настро­ить авто­ма­ти­че­ское удаление.

Дан­ная инструк­ция не при­вя­за­на к какой-либо систе­ме — она подой­дет как для Windows, так и Linux, напри­мер, Ubuntu или CentOS. Так как MariaDB — ответв­ле­ние от MySQL, инструк­ция так­же акту­аль­но и для нее.

Преж­де чем чистить логи, необ­хо­ди­мо убе­дить­ся, что для СУБД не настро­е­на репли­ка­ция дан­ных с дру­ги­ми сер­ве­ра­ми. Если репли­ка­ция есть, необ­хо­ди­мо убе­дить­ся, что все дан­ные кор­рект­но ско­пи­ро­ва­ны. Уда­ле­ние лога, для кото­ро­го еще не про­шла син­хро­ни­за­ция при­ве­дет к необ­хо­ди­мо­сти вос­ста­нав­ли­вать репликацию.

Ручная чистка логов

Запро­сы выпол­ня­ют­ся из команд­ной обо­лоч­ки MySQL.

Для уда­ле­ния кон­крет­но­го bin-файла:

> PURGE BINARY LOGS TO 'mysql-bin.000145';

* где mysql-bin.000145 — имя фай­ла с логами.

Для уда­ле­ния логов за опре­де­лен­ный период:

> PURGE BINARY LOGS BEFORE '2017-05-07 00:00:00';

* уда­ля­ем логи до 5-о мая 2017 года.

Или так:

PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 90 DAY) + INTERVAL 0 SECOND;

* уда­ля­ем все, остав­ля­ем логи за послед­ние 90 дней.

Автоматическое удаление

Откры­ва­ем кон­фи­гу­ра­ци­он­ный файл СУБД:

vi /etc/my.cnf.d/server.cnf

или в более ран­них версиях:

vi /etc/my.cnf

и в сек­цию [mysqld] добав­ля­ем следующее:

expire_logs_days = 90

* в дан­ном при­ме­ре мы настро­и­ли срок хра­не­ния логов в 90 дней.

Настрой­ки при­ме­ня­ют­ся после пере­за­груз­ки сер­ве­ра баз данных:

systemctl restart mysql || systemctl restart mariadb

Так­же будет выпол­не­на чист­ка логов, кото­рые стар­ше выстав­лен­ной даты (90 дней в нашем примере).