前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql binlog日志自动清理及手动删除

mysql binlog日志自动清理及手动删除

作者头像
王图思睿
发布2021-06-15 09:56:35
6K0
发布2021-06-15 09:56:35
举报
文章被收录于专栏:膨胀的面包膨胀的面包

说明

当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。 如:

代码语言:javascript
复制
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
mysql-bin.000004
mysql-bin.000005

有三种解决方法

1、 关闭mysql主从,关闭binlog

代码语言:javascript
复制
# vim /etc/my.cnf  //注释掉log-bin,binlog_format
# Replication Master Server (default)
# binary logging is required for replication
# log-bin=mysql-bin
# binary logging format - mixed recommended
# binlog_format=mixed

操作完之后记得重启数据库

2、 开启mysql主从,设置expire_logs_days

代码语言:javascript
复制
# vim /etc/my.cnf  // 修改expire_logs_days,x是自动删除的天数,一般将x设置为短点,如10
expire_logs_days = x  // 二进制日志自动删除的天数。默认值为0,表示“没有自动删除”
此方法需要重启mysql,附录有关于expire_logs_days的英文说明

以上操作完之后记得重启数据库,当然也可以不重启mysql,开启mysql主从,直接在mysql里设置expire_logs_days

代码语言:javascript
复制
show binary logs; 
show variables like '%log%';
set global expire_logs_days = 10;

3、 登陆mysql,执行以下SQL语句手动清除binlog文件

代码语言:javascript
复制
PURGE MASTER LOGS TO 'MySQL-bin.010';  // 清除MySQL-bin.010日志
PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00'; // 清除2008-06-22 13:00:00前binlog日志
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); //清除3天前binlog日志BEFORE,变量的date自变量可以为’YYYY-MM-DD hh:mm:ss’格式。

也可以重置master,删除所有binlog文件:reset master;

附录

1、 expire_logs_days 英文说明 Where X is the number of days you’d like to keep them around. I would recommend 10, but this depends on how busy your MySQL server is and how fast these log files grow. Just make sure it is longer than the slowest slave takes to replicate the data from your master. Just a side note: You know that you should do this anyway, but make sure you back up your mysql database. The binary log can be used to recover the database in certain situations; so having a backup ensures that if your database server does crash, you will be able to recover the data.

2、 清除binlog时,对从mysql的影响 如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 有三种解决方法
  • 附录
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档