YunHe.ME | 云和の小屋 - 日志
type: channel
link: https://www.yunhe.me/tag/%E6%97%A5%E5%BF%97/
items: 清除MySQL二进制日志

清除MySQL二进制日志
type: item
date: 2015-04-07T16:28:00+08:00
description: 二进制日志二进制日志记录了所有的DDL（数据定义语言）语句和DML（数据操作语言）语句，但是不记录包括数据查询的语句。语句以“事件”的形式保存，它描述了数据的更改过程，此日志对于灾难时的数据恢复起着极其重要的作用。日志的位置和格式当用--log-bin[=file_name]选项启动时，mysqld将包含所有更新数据的SQL命令写入日志文件。如果没有给出file_name值，默认名为主机名后面跟_bin，如果给出了文件名，但没有包含路劲，则文件默认被写入参数DATADIR（数据目录）指定的目录。。日志的读取由于日志以二进制的方式存储，不能直接读取，需要用mysqlbinlog工具来查看，语法如下：mysqlbinlog log_file日志的删除对于比较繁忙的OLTP系统，由于每天生产日志量大，这些日志如果长时间不清理，将会对磁盘空间带来很大的浪费，因此，定期删除日志是DBA维护Mysql数据库的一个重要工作内容，下面将介绍几种删除日志的常见方法。（1）执行“reset master;”命令，该命令将删除所有二进制日志，新日志的编号从“000001”开始，命令如下：Mysql>RESET MASTER;（2）执行“Purge master logs to ‘mysql-bin.’”命令，该命令将删除“”编号之前的所有日志，下列中删除了“mysql-bin.000001”之前编号的所有日志。Mysql>PURGE MASTER LOGS TO 'mysql-bin.000015';从结果中发现，编号000015之前的所有日志都已经删除（3）执行“purge master logs before ‘yyyy-mm-dd hh24:min:ss’”命令，该命令将删除日期为“yyyy-mm-dd hh24:mi:ss”之前产生的所有日志，下列中删除了日期在“2008-06-22 13:00:00”之前的所有日志。（4）设置参数—expire_logs_days=#(days)，此参数的含义是设置日志的过期天数，过来指定的天数后日志将会被自动删除，这样将有利于减少DBA管理日志的工作量。#vi /etc/my.cnf [mysqld] --expire_logs_days=3这样，3天前的日志都会被删除，系统自动删除。