作者 GitiJun 2017.07.20 09:56:08 写了58篇文章,回复33人, Mysql 日志清理 阅读:1503· 评论:0· 喜欢:1 ## Mysql 日志清理 #### 1.关闭mysql主从,关闭binlog; ``` # 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; ``` # 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 ``` > show binary logs; > show variables like '%log%'; > set global expire_logs_days = 10; ``` #### 3.手动清除binlog文件, ``` > PURGE MASTER LOGS TO ‘MySQL-bin.010’; # /usr/local/mysql/bin/mysql -u root -p > PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY); //删除10天前的MySQL binlog日志,附录2有关于PURGE MASTER LOGS手动删除用法及示例 > show master logs; 也可以重置master,删除所有binlog文件: # /usr/local/mysql/bin/mysql -u root -p > reset master; //附录3有清除binlog时,对从mysql的影响说明 ``` #### 4.自动清理方法(修改配置文件和在mysql内设置参数可无需重启服务) ``` vim my.cnf expire_logs_days = 7 // 表示日志保留7天,超过7天则设置为过期的 # mysql -u root -p > show binary logs; > show variables like '%log%'; > set global expire_logs_days = 7; ``` #### 5.手动清理方法(独立,主从) 如果没有主从复制,可以通过下面的命令重置数据库日志,清除之前的日志文件: reset master 如果存在复制关系,应当通过 PURGE 的名来清理 bin-log 日志,语法如下: ``` # mysql -u root -p > purge master logs to 'mysql-bin.010’; //清除mysql-bin.010日志 > purge master logs before '2016-02-28 13:00:00'; //清除2016-02-28 13:00:00前的日志 > purge master logs before date_sub(now(), interval 3 day); //清除3天前的bin日志 ``` 注意,不要轻易手动去删除binlog,会导致binlog.index和真实存在的binlog不匹配,而导致expire_logs_day失效 #### 其他关于操作的几个命令 查看二进制日志列表: ``` show binary logs; ``` 命令清理mysql-tb-bin.000005这个日志文件: ``` purge binary logs to 'mysql-tb-bin.000005'; ``` 保留最近3天的日志, ``` MySQL> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); ``` 在mysql里show了一下variables, ``` mysql> show variables like '%log%'; ``` #### 直接粗暴处理(有一定的风险) 关闭日志记录 关闭服务 删掉data下日志文件 赞 | 1 赏 标签:none