zoukankan      html  css  js  c++  java
  • 删除MySQL binlog日志的方法

    对于比较繁忙的OLTP(在线事务处理)系统,由于每天生成日志量大,这些日志如果长时间不清除,将会对磁盘空间带来很大的浪费。因此,定期删除日志是DBA维护MySQL数据库的一个重要工作内容。下面跟大家分享几种删除MySQL binlog的方法。出自《深入浅出MySQL》第二版,如果你在虚拟机做实验导致binlog过大使得磁盘空间不多,下面的方法清理最合适不了过了

    注意事项:

    1.MySQL binlog日志是数据库灾难后恢复的关键,删除前一定要做好备份

    2.如果做了MySQL主从,从服务器,会读取主服上的binlog,所以删除前要注意

    3.个人建议,若真要删除binlog腾出硬盘空间,那先清理几个月前的binlog

    方法一:

    执行“RESET MASTER;”命令,该命令将删除所有BINLOG日志,新日志编号从“000001”开始。下例删除当前所有日志

    mysql> system ls -ltr /data/mysql/  
    总用量 29756
    drwx------. 2 mysql root      4096 12月  8 08:06 test
    drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
    drwx------. 2 mysql root      4096 12月  8 08:06 mysql
    -rw-rw----. 1 mysql mysql    29698 12月  8 08:06 mysql-bin.000001
    -rw-rw----. 1 mysql mysql  1036239 12月  8 08:06 mysql-bin.000002
    -rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
    -rw-rw----. 1 mysql mysql      264 12月  8 08:38 mysql-bin.000003
    -rw-rw----. 1 mysql mysql       76 12月  8 08:40 mysql-bin.index
    -rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
    -rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
    drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
    -rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
    -rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
    drwx------  2 mysql mysql     4096 12月  8 13:34 database
    -rw-rw----  1 mysql mysql     1243 12月  8 13:35 mysql-bin.000004

    查看结果:

    mysql> reset master;
    Query OK, 0 rows affected (0.12 sec)
    
    mysql> system ls -ltr /data/mysql/
    总用量 28708
    drwx------. 2 mysql root      4096 12月  8 08:06 test
    drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
    drwx------. 2 mysql root      4096 12月  8 08:06 mysql
    -rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
    -rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
    -rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
    drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
    -rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
    -rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
    drwx------  2 mysql mysql     4096 12月  8 13:34 database
    -rw-rw----  1 mysql mysql      107 12月  8 16:54 mysql-bin.000001
    -rw-rw----  1 mysql mysql       19 12月  8 16:54 mysql-bin.index
    mysql> 

    第二种方法:
    执行“PURGE MASTER LOGS TO 'mysql-bin.*******'”命令。该命令将删除“******”编号之前的所有日志。下例删除了“mysql-bin.000004”编号之前的所有日志:

    mysql> system ls -ltr /data/mysql
    总用量 29756
    drwx------. 2 mysql root      4096 12月  8 08:06 test
    drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
    drwx------. 2 mysql root      4096 12月  8 08:06 mysql
    -rw-rw----. 1 mysql mysql    29698 12月  8 08:06 mysql-bin.000001
    -rw-rw----. 1 mysql mysql  1036239 12月  8 08:06 mysql-bin.000002
    -rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
    -rw-rw----. 1 mysql mysql      264 12月  8 08:38 mysql-bin.000003
    -rw-rw----. 1 mysql mysql       76 12月  8 08:40 mysql-bin.index
    -rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
    -rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
    drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
    -rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
    -rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
    drwx------  2 mysql mysql     4096 12月  8 13:34 database
    -rw-rw----  1 mysql mysql     1243 12月  8 13:35 mysql-bin.000004

    执行命令后的结果如下:

    mysql> purge master logs to 'mysql-bin.000004';
    Query OK, 0 rows affected (0.08 sec)
    
    mysql> system ls -ltr /data/mysql
    总用量 28708
    drwx------. 2 mysql root      4096 12月  8 08:06 test
    drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
    drwx------. 2 mysql root      4096 12月  8 08:06 mysql
    -rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
    -rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
    -rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
    drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
    -rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
    -rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
    drwx------  2 mysql mysql     4096 12月  8 13:34 database
    -rw-rw----  1 mysql mysql     1243 12月  8 13:35 mysql-bin.000004
    -rw-rw----. 1 mysql mysql       19 12月  8 16:55 mysql-bin.index


    第三种方法以:

    执行“PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh24:mi:ss'”  命令,该命令将删除日期为“hh24:mi:ss”之前产生的所有日志。下例中删除了日期在“2013-12-08 13:00:00”之前的所有日志:

    mysql> system ls -ltr /data/mysql
    总用量 29756
    drwx------. 2 mysql root      4096 12月  8 08:06 test
    drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
    drwx------. 2 mysql root      4096 12月  8 08:06 mysql
    -rw-rw----. 1 mysql mysql    29698 12月  8 08:06 mysql-bin.000001
    -rw-rw----. 1 mysql mysql  1036239 12月  8 08:06 mysql-bin.000002
    -rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
    -rw-rw----. 1 mysql mysql      264 12月  8 08:38 mysql-bin.000003
    -rw-rw----. 1 mysql mysql       76 12月  8 08:40 mysql-bin.index
    -rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
    -rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
    drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
    -rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
    -rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
    drwx------  2 mysql mysql     4096 12月  8 13:34 database
    -rw-rw----  1 mysql mysql     1243 12月  8 13:35 mysql-bin.000004

    执行命令后的结果:

    mysql> purge master logs  before "2013-12-08 13:00:00";
    Query OK, 0 rows affected (0.09 sec)
    
    mysql> system ls -ltr /data/mysql
    总用量 28708
    drwx------. 2 mysql root      4096 12月  8 08:06 test
    drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
    drwx------. 2 mysql root      4096 12月  8 08:06 mysql
    -rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
    -rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
    -rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
    drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
    -rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
    -rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
    drwx------  2 mysql mysql     4096 12月  8 13:34 database
    -rw-rw----  1 mysql mysql     1243 12月  8 13:35 mysql-bin.000004
    -rw-rw----. 1 mysql mysql       19 12月  8 16:57 mysql-bin.index

    嘻嘻,如果想了解更多删除MySQL binlog的方法以,可以去参考官网或者书籍《深入浅出MySQL》第二版

    作者:陆炫志

    出处:xuanzhi的博客 http://www.cnblogs.com/xuanzhi201111

    您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

  • 相关阅读:
    CAD中的各种Polyline
    在CAD二次开发中使用状态条按钮
    在CAD二次开发中使用进度条
    EXSI6.5复制文件太慢的解决方法
    vlan交换机的端口模式有哪几种
    此计算机上的安全设置禁止访问其他域的数据源
    Could not write to output file 'c:WindowsMicrosoft.NET ASP.NET Filesxx' -- 'Access is denied
    添加现有文件夹到项目解决方案
    SSM-MyBatis-18:Mybatis中二级缓存和第三方Ehcache配置
    SSM-MyBatis-17:Mybatis中一级缓存(主要是一级缓存存在性的证明,增删改对一级缓存会造成什么影响)
  • 原文地址:https://www.cnblogs.com/xuanzhi201111/p/4084869.html
Copyright © 2011-2022 走看看