• 删除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

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

  • 相关阅读:
    Intent
    What should we do next in general after collecting relevant data
    NOTE FOR Secure Friend Discovery in Mobile Social Networks
    missing pcap.h
    after building Android Source code
    plot point(one column)
    When talking to someone else, don't infer that is has been talked with others at first. It may bring repulsion to the person who is talking with you.
    进程基本知识
    Python input和raw_input的区别
    强制 code review:reviewboard+svn 的方案
  • 原文地址:https://www.cnblogs.com/xuanzhi201111/p/4084869.html
Copyright © 2020-2023  润新知