美文网首页
清理MySQL的binlog日志

清理MySQL的binlog日志

作者: 催化剂 | 来源:发表于2022-10-12 10:41 被阅读0次

mysql怎么查询数据库版本

利用“select version();”语句查询;

利用“show variables like ‘%version%’”语句查询;

MySQL5.7开启 binlog参考链接:https://blog.csdn.net/hundan_520520/article/details/123792968

# server-id表示单个结点的id,这里由于只有一个结点,所以可以把id随机指定为一个数,这里将id设置成1。若集群中有多个结点,则id不能相同

server-id=1

# log-bin日志文件的名字为mysql-bin,以及其存储路径

log-bin=/usr/local/mysql/log-bin/mysql-bin

技术分享 | MySQL:你的 binlog_expire_logs_seconds 可能正在失效 参考链接:https://blog.csdn.net/ActionTech/article/details/121337414

参考:https://www.cnblogs.com/XY-Heruo/p/16052738.html

(mysql5.7、8.0通用)查看binlog文件:show binary logs;

mysql5.7:

show variables like '%expire_logs_days%';

这个默认是0,也就是logs不过期,可通过设置全局的参数,使他临时生效:

mysql5.7:

set global expire_logs_days=7;

设置了只保留7天BINLOG, 下次重启mysql这个参数默认会失败,所以需在my.cnf中设置

mysql5.7:

expire_logs_days = 7

手动删除BINLOG (purge binary logs)

用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件

PURGE {MASTER | BINARY} LOGS TO 'log_name'

PURGE {MASTER | BINARY} LOGS BEFORE 'date'

例如:

PURGE MASTER LOGS TO 'mysql-bin.010';

PURGE MASTER LOGS BEFORE '2022-09-22 13:00:00';

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);

Mysql8.0(日志过期时间,binlog_expire_logs_seconds)

-- mysql8.0以下版本查看当前数据库日志binlog保存时效 以天为单位,默认0 永不过期,最多只能设置99天

show variables like 'expire_logs_days';

set global expire_logs_days=60;

-- mysql8.0以上版本通过设置全局参数binlog_expire_logs_seconds修改binlog保存时间 以秒为单位;默认2592000 30天  14400  4小时;86400  1天;259200  3天

show variables like '%binlog_expire_logs_seconds%';

set global binlog_expire_logs_seconds=259200;

① show master status;

查看当前二进制日志文件

② flush binary logs;

刷新二进制文件 执行一次,二进制文件生成一个新的

③ 查看二进制日志(events)

show binlog events in 'bin.000003'

MySQL的binlog是以二进制形式打印的日志,没设置自动删除的话,时间长了就会占用大量存储空间。删除MySQL的binlog日志有两种方法:自动删除和手动删除。

自动删除

永久生效:修改MySQL配置文件my.cnf,配置binlog的过期时间,重启生效。

expire_logs_days=30

临时生效:即时生效,重启后失效。

-- 设置过期时间为30天setglobalexpire_logs_days=30;

手动删除

手动删除前需要先确认主从库当前在用的binlog文件。

主库:show master status;

从库:show slave status\G

假设当前在用的binlog文件为master-bin.000277,现需要删除master-bin.000277之前的所有binlog日志文件(不删master-bin.000277):

命令汇总:

#set global expire_logs_days=7;

#show variables like '%expire_logs_days%';

show binary logs;

#PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';

#show variables like '%binlog_expire_logs_seconds%';

#select version();

#PURGE MASTER LOGS TO 'binlog.000022';

show variables like '%binlog_expire_logs_seconds%';

set global binlog_expire_logs_seconds=1296000;

flush binary logs;

show master status;

show binlog events in 'binlog.000033'

相关文章

网友评论

      本文标题:清理MySQL的binlog日志

      本文链接:https://www.haomeiwen.com/subject/iestzrtx.html