不需要的binlog如何手动干掉?放心,这不是删库更不用跑路。

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 不需要的binlog如何手动干掉?放心,这不是删库更不用跑路。

删除BigLog的姿势开篇

对binlog文件的维护和管理,是mysql主从复制运维场景常见的维护操作之一,当BinLOG日志文件很大、很多,快把硬盘撑爆了,怎么办?如何正确的删除binlog?如果随便删除binlog,可能会给数据库带来未知的影响,经过笔者研究和测试,现分享2个不同场景下正确删除binlog的方法

官方二进制文档:https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html

官方PURGE BINARY LOGS 语句参考文档:https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html

场景1:不需要binlog

  • 场景说明:

假设是本地开发环境的单机MySQL8,也比如不需要用于以后做数据恢复、不需要改造为主从环境做数据复制的MySQL环境,那么都可以不启用BinLog记录。但是,当你在本地开发环境安装好单机的MySQL8且运行了一段时间后,发现居然有很多的binlog,那是因为MySQL8默认就是开启binlog记录的。假设,既然是单机又是本地开发环境,且又不想开启binlog记录,那就关闭它呗!那关闭后,“残留”的binlog日志文件怎么办?看笔者的测试就知道哈。最后再罗嗦一下,其实关闭binlog,对mysql的性能方面是会有所提高的,比如在本地开发环境的时候,对mysql的性能要运行的更快,那么除了将数据放在高端磁盘阵列上或者SSD盘上,还有一个方式,就是关闭binlog。

  1. 可以看到,通过查看全局变量log_bin的状态已经为OFF,说明已经处于关闭状态
mysql> show global variables like "%log_bin%";
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | OFF   |
| log_bin_basename                |       |
| log_bin_index                   |       |
| log_bin_trust_function_creators | OFF   |
| log_bin_use_v1_row_events       | OFF   |
+---------------------------------+-------+
5 rows in set (0.00 sec)

说明:笔者这里已经将binlog记录关闭了,关于binlog的开启和关闭,后续笔者再向盆友们分享经验,希望你继续保持对我的关注哦!

  1. 在mysql的shell中,查看binlog文件列表时,它会提示error,告诉你没有启用binlog呢
mysql> show binary logs;      
ERROR 1381 (HY000): You are not using binary logging
  1. binlog已经处于关闭,那么在系统层面查看“残留”的binlog日志文件
[root@mysql8db ~]# ls -l /home/mysqlData/ 
total 188988
-rw-r----- 1 mysql mysql      179 Mar 30 20:43 binlog.000036
-rw-r----- 1 mysql mysql      704 Mar 30 21:11 binlog.000037
-rw-r----- 1 mysql mysql      346 Apr  1 15:25 binlog.000038
-rw-r----- 1 mysql mysql      179 Apr  1 15:25 binlog.000039
-rw-r----- 1 mysql mysql     4904 Apr  6 11:23 binlog.000040
-rw-r----- 1 mysql mysql      179 Apr  6 11:23 binlog.000041
-rw-r----- 1 mysql mysql    18058 Apr  7 09:07 binlog.000042
-rw-r----- 1 mysql mysql      179 Apr  7 09:07 binlog.000043
-rw-r----- 1 mysql mysql      156 Apr  8 09:30 binlog.000044
-rw-r----- 1 mysql mysql      179 Apr  8 09:30 binlog.000045
-rw-r----- 1 mysql mysql     2808 Apr 11 09:22 binlog.000046
-rw-r----- 1 mysql mysql      179 Apr 11 09:22 binlog.000047
-rw-r----- 1 mysql mysql      349 Apr 11 18:21 binlog.000048
-rw-r----- 1 mysql mysql      179 Apr 11 18:21 binlog.000049
-rw-r----- 1 mysql mysql      179 Apr 16 22:10 binlog.000050
-rw-r----- 1 mysql mysql      179 Apr 20 14:57 binlog.000051
-rw-r----- 1 mysql mysql     1256 Apr 24 15:37 binlog.000052
-rw-r----- 1 mysql mysql      179 Apr 24 15:37 binlog.000053
-rw-r----- 1 mysql mysql      179 Apr 29 14:14 binlog.000054
-rw-r----- 1 mysql mysql      179 Apr 29 14:40 binlog.000055
-rw-r----- 1 mysql mysql      179 Apr 29 15:15 binlog.000056
-rw-r----- 1 mysql mysql      179 Apr 29 15:15 binlog.000057
-rw-r----- 1 mysql mysql      179 Apr 29 15:17 binlog.000058
-rw-r----- 1 mysql mysql      179 Apr 29 15:19 binlog.000059
-rw-r----- 1 mysql mysql      384 Apr 29 15:19 binlog.index
  1. 重头戏来了,如何删除这些“残留”的binlog?

答案就是:直接手动删除,干它就对了!!!

删除套路如下:

# 1. 先删除binlog索引文件,也就是binlog.index文件
[root@mysql8db mysqlData]# rm -f binlog.index 
# 2. 再删除binlog.0000xxx文件
[root@mysql8db mysqlData]# rm -f binlog.0000*

场景2:需要binlog

关于场景2,说白了就是需要启用或者已经是启用了binlog的场景,比如生产环境上的MySQL主从环境,那么binlog撑爆磁盘空间,又该如何正确的、安全的进行删除释放空间?敬请关注明天的经验分享,因笔者时间有限,今晚就此搁笔,感谢您的观看。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之可以通过什么操作来监听从库的binlog
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
162 0
|
关系型数据库 MySQL 流计算
Flink CDC全库订阅binlog你们怎么配置的,我们这好像有漏数据的情况?
Flink CDC全库订阅binlog你们怎么配置的,我们这好像有漏数据的情况?
297 3
|
canal 关系型数据库 MySQL
Canal需要执行 `show master status` 命令来获取主库的binlog文件名和位置
Canal需要执行 `show master status` 命令来获取主库的binlog文件名和位置
690 1
|
SQL 关系型数据库 MySQL
MySQL的主库将自己的Binlog日志按照一定的格式发送给从库,这个过程具体是怎样的?底层原理是什么?
MySQL的主库将自己的Binlog日志按照一定的格式发送给从库,这个过程具体是怎样的?底层原理是什么?
320 0
|
消息中间件 SQL JSON
Maxwell采集MySQL Binlog业务库数据同步方案
针对业务库MySQL Binlog日志数据进行数据同步,从MySQL到Kafka,最终实现实时(准实时)数据采集。其中推荐使用MaxWell,此篇文档只是介绍如何通过Maxwell打通上下游数据点。
2438 0
Maxwell采集MySQL Binlog业务库数据同步方案
|
SQL 存储 关系型数据库
MySQL 技术篇- linux下mysql数据库利用binlog文件进行数据回滚实例演示,binlog恢复数据库的两种方式
MySQL 技术篇- linux下mysql数据库利用binlog文件进行数据回滚实例演示,binlog恢复数据库的两种方式
635 0
MySQL 技术篇- linux下mysql数据库利用binlog文件进行数据回滚实例演示,binlog恢复数据库的两种方式
|
关系型数据库 MySQL
MySQL:从库binlog 使用mysqlbinlog stop-datetime过滤问题
更多主从同步相关可以参考我的《深入理解MySQL主从原理》专栏: 本文是一个朋友问我问题。从库使用mysqlbinlog --stop-datetime 的时候没有想要的记录。本文简单记录这个问题:如果从库log_slave_updates开启,那么从库需要记录从库应用的Event,有如下特点: 从库binlog记录的应用主库的Event,其Event header timestamp是主库的时间。
1384 0