日期:2014-05-16  浏览次数:20966 次

MySQL删除二进制日志

一、设置日志保留时长expire_logs_days自动删除

? ? ? ?

  1. #查看当前日志保存天数: ??
  2. show?variables?like?‘%expire_logs_days%’;??
  3. #这个默认是0,也就是logs不过期,可通过设置全局的参数,使他临时生效: ??
  4. set?global?expire_logs_days=7; ??
  5. #设置了只保留7天BINLOG,?下次重启mysql这个参数默认会失败,所以需在my.cnf中设置 ??
  6. expire_logs_days?=?7 ?

二、手动删除BINLOG (purge binary logs)

  1. #用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件 ??
  2. PURGE?{MASTER?|?BINARY}?LOGS?TO?‘log_name’ ?
  3. PURGE?{MASTER?|?BINARY}?LOGS?BEFORE?‘date’ ??
  4. #例如: ??
  5. PURGE?MASTER?LOGS?TO?‘mysql-bin.010′; ?
  6. PURGE?MASTER?LOGS?BEFORE?‘2008-06-22?13:00:00′; ?
  7. PURGE?MASTER?LOGS?BEFORE?DATE_SUB(?NOW(?),?INTERVAL?3?DAY); ?

其它:

  1. 查看当前日志文件列表:show?binary?logs;?

使用binlog日志的目的是为了方便恢复数据,所以我们不光要会删除,还要会用日志来恢复数据。

使用binlog恢复数据:

使用mysqlbinlog命令恢复日志

  1. mysqlbinlog?-d?test?/root/mysql/mysql-bin.000001|mysql?-uroot?-ppassword? ?
  2. ?
  3. ※附录? ?
  4. ?
  5. #1、关于mysqlbinlog在mysql?5.0上的使用方法,可以参考:官方资料? ?
  6. ?
  7. #2、如果不知道log-bin存放的文件位置,可以使用下面的命令查看:? ?
  8. ?
  9. mysql?-uroot?-ppassword?-e?'SHOW?BINLOG?EVENTS?\G'? ?
  10. ?
  11. #3、当只是需要恢复部分记录的时候,你可以使用时间点或位置点来定位,例如:? ?
  12. ?
  13. mysqlbinlog?--start-date="2005-04-20?9:01:00"?--stop-date="2005-04-20?10:00:01"?/var/log/mysql/bin.123456|mysql?-uroot?-ppassword[code]? ?
  14. ?
  15. #意思是恢复4月20日早上9点到10点这一段时间的数据。? ?
  16. ?
  17. mysqlbinlog?--start-position="368301"?--stop-position="368312"/var/log/mysql/bin.123456|?mysql?-uroot?-pmypwd? ?
  18. ?
  19. #意思是重做368301到368312位置点之间的操作。(位置点可以就是用mysqlbinlog看到的at?xxx节点)? ?
  20. ?
  21. mysqlbinlog?--start-date="2005-04-20?9:55:00"?--stop-date="2005-04-20?10:05:00"?/var/log/mysql/bin.123456?>?/tmp/mysql_restore.sql? ?
  22. ?
  23. #同样的,如果我们只是想查看某段时间的操作,直接把它导到一个文件即可。 ?

?