mysql-binlog 日志清理

mysql binlog 日志清理方法

需求:

随着mysql服务运行时间的增加会大量积累二进制文件binlog(记录数据库执行的sql语句),占用大量磁盘空间,所以需要清除binlog文件释放可使用磁盘空间。

操作方法1:更改binlog过期时间

SHOW VARIABLES LIKE "%expire_logs%"; 查看当前数据库binlog过期时间设置

SET GLOBAL expire_logs_days=3; 设置当前数据库binlog过期时间为3天

FLUSH LOGS; 刷新日志立刻生效(执行后之前积累点binlog文件会立马删除,同时binlog.index文件会更新记录最新binlog文件名称)

操作方法2:通过puge binary logs命令来进行删除

查看当前binlog的信息

mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000006 | 201 |
| mysql-bin.000007 | 201 |
| mysql-bin.000008 | 201 |
| mysql-bin.000009 | 201 |
| mysql-bin.000010 | 201 |
| mysql-bin.000011 | 201 |
| mysql-bin.000012 | 201 |
| mysql-bin.000013 | 201 |
| mysql-bin.000014 | 201 |
| mysql-bin.000015 | 201 |
| mysql-bin.000016 | 201 |
| mysql-bin.000017 | 201 |
| mysql-bin.000018 | 201 |
| mysql-bin.000019 | 201 |
| mysql-bin.000020 | 201 |
| mysql-bin.000021 | 154 |
+------------------+-----------+
16 rows in set (0.00 sec)

purge删除binlog

mysql> purge binary logs to 'mysql-bin.000017';
Query OK, 0 rows affected (0.01 sec)

mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000017 | 201 |
| mysql-bin.000018 | 201 |
| mysql-bin.000019 | 201 |
| mysql-bin.000020 | 201 |
| mysql-bin.000021 | 154 |
+------------------+-----------+
5 rows in set (0.00 sec)

备注:通过查询结果可以知道,在17之前的日志都被清除了.不包括17本身!

如果在系统手动删除了binlog日志文件,mysql-bin.index不会自动更新binlog索引,则需要使用上述方法进行mysql-bin.index文件的恢复否则数据库重启会报错。

内容参考自:https://www.cnblogs.com/chuanzhang053/p/9336386.html

posted @   whiteY  阅读(932)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示