临时生效:进入mysql,用以下命令设置全局的参数: set global expire_logs_days=30
(上面的数字30是保留30天的意思。)
可以直接删除 binlog 文件,但是可以通过 mysql 提供的工具来删除更安全,因为 purge 会更新 mysql-bin.index 中的条目,而直接删除的话, mysql-bin.index 文件不会更新。 mysql-bin.index 的作用是加快查找 binlog 文件的速度。
命令查看 binlog 文件
删除举例:
一、修改文件配置
修改/etc/my.cnf,找到以下字符
log-bin=mysql-bin
binlog_format=mixedbash
注释这两行,如下:
#log-bin=mysql-bin
#binlog_format=mixedbash
在这两个字段之前添加“#”号注释,并保存文件。
二、重启Mysql使其生效
service mysqld restartbashSSH
执行以上命令,重启Mysql使注释生效
三、删除之前产生的日志
1)登陆MYSQL
/usr/local/mysql/bin/mysql -u root -pbashSSH
执行以上命令,输入密码后,进入MYSQL命令行模式。
2)重设帐号
reset qzkyl
#qzkyl请修改为目标数据库名
一、关闭MySql日志方法:
找到MySql的配置文件,然后注释以下两行即可(即在行首添加#符号就好了)。然后重启MySql服务
log-bin=mysql-bin
binlog_format=mixed
二、删除日志1)手动删除日志
手动删除日志的基本语法如下:
PURGE {MASTER | BINARY} LOGS TO'log_name'
PURGE {MASTER | BINARY} LOGSBEFORE 'date'
①、查看当前日志:
show binary logs
②、查看第一个二进制日志
show binlog events
③、删除指定日志之前的日志
PURGE MASTER LOGS TO'mysql-bin.010'
④、删除指定日期之前的日志
PURGE MASTER LOGS BEFORE'2018-7-12 13:00:00'
⑤、删除N天前的日志
PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL N DAY)如下面的语句可以清除 7 天前的binlog,
PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY)
注意:BEFORE变量的date自变量可以为'YYYY-MM-DDhh:mm:ss'格式。MASTER和BINARY是同义词。
2)自动删除日志
①、第一种方式:设置日志保存时间
修改MySql的配置文件,设置以下属性:expire_logs_days=10。这个值根据实际情况来定。当然对于生产环境修改配置文件需要重启,这个代价可能会很大,还可以通过这个命令来修改生效set global expire_logs_days = 10
②、第二种方式:设置定时任务
0 3 * * * `mysql -uroot -e 'PURGE BINARY LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY)'`
上面的命令是每天凌晨3点删除7天前的binlog:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)