mysql清理和关闭binlog日志

由于某个业务有大量的数据写入数据库,大概300/S,日夜不停,导致数据库占用磁盘空间过大,现整理解决思路
1.字段设置比较随意,导致一般的数据存储浪费,修改字段为更小的单位
2.Mysql为InnoDB模式,但是业务单纯的写入和读取数据库,没有涉及事务,修改模式为Myisam
3.大量的写入会生成大量的binglog文件,Mysql默认30天删除,设置binlog的自动删除机制或者关闭binglog日志

操作步骤:

1.登录mysql数据库,mysql -uroot –p
2.查看binlog是否开启,log_bin的状态未ON,表明binlog日志开启

 3.show binary logs;

 4.删除binlog日志文件,切勿删除正在使用的binlog!!(所以删除老年的即可,不要全删)
        不要轻易手动去删除binlog,会导致binlog.index和真实存在的binlog不匹配,使用PURGE,根据自己需求改写下面命令
        //删除1天前的binlog日志文件

  PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY);

        //将指定时间之前的binlog清掉

 PURGE BINARY LOGS BEFORE '2020-11-25 13:09:51';

        //将bin.000088之前的binlog清掉:

PURGE BINARY LOGS TO 'bin.000088'; 

5.设置binlog的过期时间 

  binlog失效日期参数为 binlog_expire_logs_seconds,默认2592000(30天)过期,可以设置 604800(7天)

 操作:

       //显示binlog的过期时间

 show variables like '%expire%';

       //设置过期时间

set global binlog_expire_logs_seconds=60*60*24;

       //手动刷新日志

 flush logs;

6.设置过期时间也可以直接修改my.ini配置文件,关闭修改再重启
   expire_logs_days = 7 #自动删除15天前的日志。默认值为0,表示从不删除。  

7.关闭binlog
                操作:8.0版本情况下,关闭mysql服务,找到my.ini, 在[mysqld] 下添加 skip-log-bin,然后重启MySQL,不可以不关闭的情况 下,修改重启。
                在关闭后,可以下使用reset master把现有的binlog都删除掉,因为binlog关闭了,不会有正在使用的binlog,所以没问题。
 ps:
                1.如果找不到my.ini,可以手动打开显示C盘的隐藏文件选项(不会百度),就会出现ProgramData文件夹,找到mysql文件夹,就可以找到my.ini文件
                 2.使用RESET MASTER可以删除任何二进制日志文件及其相关的二进制日志索引文件,从而使主数据库恢复到开始二进制日志记录之前的状态
posted @ 2022-01-12 08:48  贾斯丁哔哔  阅读(12777)  评论(0编辑  收藏  举报