Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30802
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 177
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-09 10:25
个人简介

我叫陆哥,一位热爱学习,热爱分享营销案例、裂变营销、商业模式的斜杠青年。

文章分类

全部博文(12)

文章存档

2019年(1)

2014年(11)

我的朋友

分类: Mysql/postgreSQL

2014-12-10 19:08:39

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

注意事项:

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

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

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

 

方法一:

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

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

  1. mysql> reset master;
  2. Query OK, 0 rows affected (0.12 sec)

  3. mysql> system ls -ltr /data/mysql/
  4. 总用量 28708
  5. drwx------. 2 mysql root 4096 12月 8 08:06 test
  6. drwx------. 2 mysql mysql 4096 12月 8 08:06 performance_schema
  7. drwx------. 2 mysql root 4096 12月 8 08:06 mysql
  8. -rw-rw----. 1 mysql mysql 5242880 12月 8 08:06 ib_logfile1
  9. -rw-rw----. 1 mysql mysql 5 12月 8 08:40 localhost.localdomain.pid
  10. -rw-r-----. 1 mysql root 3270 12月 8 08:56 localhost.localdomain.err
  11. drwx------. 2 mysql mysql 4096 12月 8 11:53 testdb
  12. -rw-rw----. 1 mysql mysql 18874368 12月 8 11:53 ibdata1
  13. -rw-rw----. 1 mysql mysql 5242880 12月 8 11:53 ib_logfile0
  14. drwx------. 2 mysql mysql 4096 12月 8 13:34 database
  15. -rw-rw----. 1 mysql mysql 107 12月 8 16:54 mysql-bin.000001
  16. -rw-rw----. 1 mysql mysql 19 12月 8 16:54 mysql-bin.index
  17. mysql>

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

  1. mysql> system ls -ltr /data/mysql
  2. 总用量 29756
  3. drwx------. 2 mysql root 4096 12月 8 08:06 test
  4. drwx------. 2 mysql mysql 4096 12月 8 08:06 performance_schema
  5. drwx------. 2 mysql root 4096 12月 8 08:06 mysql
  6. -rw-rw----. 1 mysql mysql 29698 12月 8 08:06 mysql-bin.000001
  7. -rw-rw----. 1 mysql mysql 1036239 12月 8 08:06 mysql-bin.000002
  8. -rw-rw----. 1 mysql mysql 5242880 12月 8 08:06 ib_logfile1
  9. -rw-rw----. 1 mysql mysql 264 12月 8 08:38 mysql-bin.000003
  10. -rw-rw----. 1 mysql mysql 76 12月 8 08:40 mysql-bin.index
  11. -rw-rw----. 1 mysql mysql 5 12月 8 08:40 localhost.localdomain.pid
  12. -rw-r-----. 1 mysql root 3270 12月 8 08:56 localhost.localdomain.err
  13. drwx------. 2 mysql mysql 4096 12月 8 11:53 testdb
  14. -rw-rw----. 1 mysql mysql 18874368 12月 8 11:53 ibdata1
  15. -rw-rw----. 1 mysql mysql 5242880 12月 8 11:53 ib_logfile0
  16. drwx------. 2 mysql mysql 4096 12月 8 13:34 database
  17. -rw-rw----. 1 mysql mysql 1243 12月 8 13:35 mysql-bin.000004
执行命令后的结果如下:

  1. mysql> purge master logs to 'mysql-bin.000004';
  2. Query OK, 0 rows affected (0.08 sec)

  3. mysql> system ls -ltr /data/mysql
  4. 总用量 28708
  5. drwx------. 2 mysql root 4096 12月 8 08:06 test
  6. drwx------. 2 mysql mysql 4096 12月 8 08:06 performance_schema
  7. drwx------. 2 mysql root 4096 12月 8 08:06 mysql
  8. -rw-rw----. 1 mysql mysql 5242880 12月 8 08:06 ib_logfile1
  9. -rw-rw----. 1 mysql mysql 5 12月 8 08:40 localhost.localdomain.pid
  10. -rw-r-----. 1 mysql root 3270 12月 8 08:56 localhost.localdomain.err
  11. drwx------. 2 mysql mysql 4096 12月 8 11:53 testdb
  12. -rw-rw----. 1 mysql mysql 18874368 12月 8 11:53 ibdata1
  13. -rw-rw----. 1 mysql mysql 5242880 12月 8 11:53 ib_logfile0
  14. drwx------. 2 mysql mysql 4096 12月 8 13:34 database
  15. -rw-rw----  1 mysql mysql 1243 12月 8 13:35 mysql-bin.000004
  16. -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”之前的所有日志:

  1. mysql> system ls -ltr /data/mysql
  2. 总用量 29756
  3. drwx------. 2 mysql root 4096 12月 8 08:06 test
  4. drwx------. 2 mysql mysql 4096 12月 8 08:06 performance_schema
  5. drwx------. 2 mysql root 4096 12月 8 08:06 mysql
  6. -rw-rw----. 1 mysql mysql 29698 12月 8 08:06 mysql-bin.000001
  7. -rw-rw----. 1 mysql mysql 1036239 12月 8 08:06 mysql-bin.000002
  8. -rw-rw----. 1 mysql mysql 5242880 12月 8 08:06 ib_logfile1
  9. -rw-rw----. 1 mysql mysql 264 12月 8 08:38 mysql-bin.000003
  10. -rw-rw----. 1 mysql mysql 76 12月 8 08:40 mysql-bin.index
  11. -rw-rw----  1 mysql mysql 5 12月 8 08:40 localhost.localdomain.pid
  12. -rw-r-----. 1 mysql root 3270 12月 8 08:56 localhost.localdomain.err
  13. drwx------  2 mysql mysql 4096 12月 8 11:53 testdb
  14. -rw-rw----. 1 mysql mysql 18874368 12月 8 11:53 ibdata1
  15. -rw-rw----. 1 mysql mysql 5242880 12月 8 11:53 ib_logfile0
  16. drwx------  2 mysql mysql 4096 12月 8 13:34 database
  17. -rw-rw----  1 mysql mysql 1243 12月 8 13:35 mysql-bin.000004
执行命令后的结果:
  1. mysql> purge master logs before "2013-12-08 13:00:00";
  2. Query OK, 0 rows affected (0.09 sec)

  3. mysql> system ls -ltr /data/mysql
  4. 总用量 28708
  5. drwx------. 2 mysql root 4096 12月 8 08:06 test
  6. drwx------. 2 mysql mysql 4096 12月 8 08:06 performance_schema
  7. drwx------. 2 mysql root 4096 12月 8 08:06 mysql
  8. -rw-rw----. 1 mysql mysql 5242880 12月 8 08:06 ib_logfile1
  9. -rw-rw----  1 mysql mysql 5 12月 8 08:40 localhost.localdomain.pid
  10. -rw-r-----. 1 mysql root 3270 12月 8 08:56 localhost.localdomain.err
  11. drwx------  2 mysql mysql 4096 12月 8 11:53 testdb
  12. -rw-rw----. 1 mysql mysql 18874368 12月 8 11:53 ibdata1
  13. -rw-rw----. 1 mysql mysql 5242880 12月 8 11:53 ib_logfile0
  14. drwx------  2 mysql mysql 4096 12月 8 13:34 database
  15. -rw-rw----  1 mysql mysql 1243 12月 8 13:35 mysql-bin.000004
  16. -rw-rw----. 1 mysql mysql 19 12月 8 16:57 mysql-bin.index
很多人直接去到对应的目录rm -rf 去删除,这是很危险的,如果真的要删除binlog,希望用正规的方法执行!

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




阅读(421) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~