I have a MySQL server with slave replication on another host. Today I stumbled across the high disk usage of the slave host and invastigated what takes up all the space. As it turns out this space is occupied by the slaves relay logs.

I tried to turn the expire_logs_days variable down and restarted the MySQL daemon but the reported disk space stays the same. I could't really find anything exept that FLUSH LOGS should clear old logs. I tried that with no result.

Is there any way I can reduce the disk space that the relay logs take?

  • Is the slave up to date with the master? It should delete relay logs when it is so if it isn't deleting them, I'd suspect it's not up to date. – Ladadadada Jun 26 '13 at 8:36
  • It seems to be behind. So I'll wait until it's up to date and see if it deleted the old files. – Izzy Jun 26 '13 at 8:54
  • Run 'mysqladmin refresh' daily in a cron job. Description: "Flush all tables and close and open log files." If the replication is caught up, it will close the relay log file, create and use a new one, and delete the old one. – Todd Lyons Jun 26 '13 at 17:40

The expire_logs_days setting controls binary logging, not relay logging.

Normally, the relay logs are purged when the slave has finished applying the data from them. This can be changed with relay-log-purge, but it's default is 1.

If your slave is simply behind, it will continue to accumulate relay logs by design. You might want to consider setting relay-log-space-limit to prevent out of disk space problems. This setting provides a disk space limit for the IO thread to use for storing relay logs.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.