If you see lots of disk space quickly disappearing on your MySQL or MariaDB server, then you may want to look into the BinLog directory, it is located at /var/log/mysql/.

In my case I saw this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
usr@server-1:/var/log/mysql# ll
total 5571044
drwxr-s---  2 x x         4096 Mar 25 18:18 ./
drwxrwxr-x 12 x  x      4096 Mar 25 05:25 ../
-rw-rw----  1 x x    104857748 Mar 23 09:29 mariadb-bin.000301
-rw-rw----  1 x x    104859422 Mar 23 10:07 mariadb-bin.000302
-rw-rw----  1 x x    104857708 Mar 23 11:10 mariadb-bin.000303
-rw-rw----  1 x x    104860750 Mar 23 12:29 mariadb-bin.000304
...truncated...
-rw-rw----  1 x x    104857809 Mar 25 16:46 mariadb-bin.000352
-rw-rw----  1 x x    104858231 Mar 25 17:17 mariadb-bin.000353
-rw-rw----  1 x x    104857709 Mar 25 18:18 mariadb-bin.000354
-rw-rw----  1 x x     24833125 Mar 25 18:32 mariadb-bin.000355
-rw-rw----  1 x x         1870 Mar 25 18:18 mariadb-bin.index

I looked to see how much space this was all taking:

1
2
usr@server-1:/var/log/mysql# du -h
5.4G	.

Almost 5.5Gb in this instance. I have seen servers go up into the many hundreds of Gigabytes before anyone notices.

I am not replicating logs to a cluster, or any slave nodes, so this is only taking up space, with no value add.

I can safely delete this, but how do I go about doing that?

How to safely purge Binary Logs

You can clear a specific log:

1
PURGE BINARY LOGS TO 'mariadb-bin.000301';

Or before a certain date:

1
PURGE BINARY LOGS BEFORE '2020-03-26';

Or before an exact time and date:

1
PURGE BINARY LOGS BEFORE '2020-03-26 08:45:13';

Make the Binary Logs go away forever

It’s also possible to remove the bin logs for good.

Open the /etc/mysql/my.cnf file on the server and look for the section:

1
2
3
4
5
log_bin           = /var/log/mysql/mariadb-bin
log_bin_index     = /var/log/mysql/mariadb-bin.index
sync_binlog       = 1
expire_logs_days  = 10
max_binlog_size   = 100M

Now we can either comment these lines out and restart the MySQL/MariaDB server or adjust the values to expire quicker.

The commented out version looks like this:

1
2
3
4
5
#log_bin           = /var/log/mysql/mariadb-bin
#log_bin_index     = /var/log/mysql/mariadb-bin.index
#sync_binlog       = 1
#expire_logs_days  = 10
#max_binlog_size   = 100M

Completely disable Binary Logs to disk

Within your /etc/mysql/my.cnf file, you can add a line under the [mysqld] section:

1
2
[mysqld]
skip-log-bin