首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql 清理binlog

基础概念

MySQL的Binary Log(二进制日志)记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。这些日志可以用于数据恢复、主从复制等场景。

为什么要清理binlog

随着时间的推移,binlog文件会不断增长,占用大量的磁盘空间。如果不进行清理,可能会导致磁盘空间不足,影响数据库的正常运行。

清理binlog的类型

  1. 手动清理:通过执行SQL命令来删除指定的binlog文件。
  2. 自动清理:配置MySQL的参数来自动清理过期的binlog文件。

应用场景

  • 磁盘空间管理:当磁盘空间不足时,可以通过清理binlog来释放空间。
  • 数据备份与恢复:在备份数据后,可以清理旧的binlog文件,以减少存储空间的占用。
  • 主从复制:在主从复制环境中,为了保持主从数据的一致性,需要定期清理binlog。

如何清理binlog

手动清理

可以使用PURGE BINARY LOGS命令来删除指定的binlog文件。例如:

代码语言:txt
复制
PURGE BINARY LOGS TO 'mysql-bin.010';

这条命令会删除所有在mysql-bin.010之前的binlog文件。

或者,可以使用PURGE BINARY LOGS BEFORE命令来删除指定时间之前的所有binlog文件。例如:

代码语言:txt
复制
PURGE BINARY LOGS BEFORE '2023-04-01 00:00:00';

这条命令会删除所有在2023年4月1日之前的binlog文件。

自动清理

可以通过配置MySQL的参数来自动清理过期的binlog文件。主要涉及以下两个参数:

  • expire_logs_days:设置binlog文件的自动过期天数。例如,设置为7天,则7天前的binlog文件会被自动删除。
代码语言:txt
复制
SET GLOBAL expire_logs_days = 7;
  • max_binlog_size:设置单个binlog文件的最大大小。当一个binlog文件达到这个大小时,MySQL会自动创建一个新的binlog文件,并删除旧的binlog文件。
代码语言:txt
复制
SET GLOBAL max_binlog_size = 1073741824; -- 设置为1GB

注意事项

  • 在清理binlog之前,确保已经做好了数据备份,以防数据丢失。
  • 如果数据库启用了主从复制,需要确保在主库上清理binlog后,从库能够及时同步新的binlog文件,以保持数据的一致性。
  • 清理binlog可能会对数据库的性能产生一定的影响,因此建议在低峰时段进行清理操作。

参考链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql 正确清理binlog日志

mysq 正确清理binlog日志 前言: MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对...binlog使用正确安全的方法清理掉一部分没用的日志。...【方法一】手动清理binlog 清理前的准备: ① 查看主库和从库正在使用的binlog是哪个文件 ?...1 purge master logs to'mysql-bin.000022'; //删除指定日志文件的日志索引中binlog日志文件 注意: 时间和文件名一定不可以写错,尤其是时间中的年和文件名中的序号...切勿删除正在使用的binlog!!! 使用该语法,会将对应的文件和mysql-bin.index中的对应路径删除。 【方法二】通过设置binlog过期的时间,使系统自动删除binlog文件 ?

3.6K10
  • 快速安全清理MySQL binlog

    一、问题提出 之前写过一篇名为“快速安全删除MySQL大表”的博客,讲解如何在不影响线上数据库服务的前提下删除大表。实际上清理MySQL binlog也会遇到同样的问题。...最初的做法是,每天凌晨2:30执行下面的操作清理10天前binlogmysql -uroot -p123456 -s /data/3306/mysqldata/mysql.sock -e "purge...随着业务量增长出现了两点变化:一是数据库负载增加;二是由于磁盘空间紧张,原存储binglog的磁盘上也存储了MySQL数据。这种情况下,即便是在业务低峰期,每次执行清理任务时也会卡库。...然后使用truncate操作系统命令逐步缩减binlog文件,直到最后binlog文件变得很小时再将其删除。事实证明这种方案行之有效,能够不影响数据库服务同时清理binlog。...还是以前面的binlog列表为例,假设删除10:45之前的binlog,执行完purge master logs后,文件列表变为: -rw-rw---- 1 mysql mysql 1073741878

    1.8K10

    MySQL Binlog和Relaylog生成和清理

    BINLOG文件生成与删除 binlog文件生成: 在每条二进制日志写入到日志文件后,会判断该文件是否超过max_binlog_size,如果超过则生成一个新的binlog binlog文件删除:...1>当使用RESET MASTER命令后,会清空全部二进制日志 命令:RESET MASTER; 2>当执行PURGE MASTER LOG TO命令后,会删除指定binlog以及之前的二进制日志...命令:PURGE MASTER LOGS TO ‘binlog file name’; 3>当执行PURGE MASTER LOG BEFORE 命令后,会删除指定时间前的所有二进制 命令:PURGE...datetime’; 4>当实例启动或执行flush logs时,按照expire_logs_days设置,如果超过该参数指定天数的二进制会被全部删除 命令:mysqladmin flush-log 清理...binlog文件顺序: 先从文件系统中清理文件,再修改索引文件。

    2K40

    mysql binlog日志自动清理及手动删除

    如: mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.000004 mysql-bin.000005 有三种解决方法 1、 关闭...mysql主从,关闭binlog # vim /etc/my.cnf //注释掉log-bin,binlog_format # Replication Master Server (default)...# binlog_format=mixed 操作完之后记得重启数据库 2、 开启mysql主从,设置expire_logs_days # vim /etc/my.cnf // 修改expire_logs_days...,执行以下SQL语句手动清除binlog文件 PURGE MASTER LOGS TO 'MySQL-bin.010'; // 清除MySQL-bin.010日志 PURGE MASTER LOGS...不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。

    7.1K10

    MySQL -- 关闭 binlog

    LNMP一键安装包安装的MySQL默认是开启了日志文件的,如果数据操作比较频繁就会产生大量的日志,在/usr/local/mysql /var/下面产生mysql-bin.0000* 类似的文件,而且一般都在几十...MB到几个GB,更甚会吃掉整个硬盘空间,从来导致mysql无法启动或报错,如vps论坛用户的反馈。...如何关闭MySQL的日志功能: 在cmd下进到mysql下的bin目录下,输入mysql -u root -p然后输入密码,成功进去后输入 reset master。...: 修改/etc/my.cnf 文件,找到 log-bin=mysql-bin binlog_format=mixed 再这两行前面加上#,将其注释掉,再执行/etc/init.d/mysql restart...本文以LNMP一件安装包安装的环境为例 除MySQL重启命令和配置文件路径可能略有不同,其他一样。

    9K32

    MySQL Binlog 入门

    主从复制 MySQL 上下分为 SQL 层和引擎层,不同存储引擎中的日志格式是不同的,由于要对多引擎支持,必须在 SQL 层设计逻辑日志以透明化不同存储引擎,而这个逻辑日志就是 binlog 。...relay-log ,根据读取的内容转换为 sql 并重放 增量恢复 恢复方式:mysql 将保存在 binlog 日志中指定段落区间的 sql 语句逐个重新执行一次。...在 mysql 体现在写操作时不是立刻更新到磁盘, 而是先落在日志系统. 对支持事务的引擎如 InnoDB 而言,必须要提交了事务才会记录 binlog 。...if (mysql_file_write(info->file, Buffer, length, info->myflags | MY_NABP)) return info->error =...参考资料 http://mysql.taobao.org/monthly/2020/02/06/ https://blog.csdn.net/f80407515/article/details/128055909

    20110

    MySQL:聊聊Binlog

    可以说MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性。今天就来聊聊 binlog(归档日志)。...Binlog 日志的使用示例首先确保MySQL开启了Binlog日志功能mysql> show variables like '%log_bin%';+------------------------...vim /mydata/mysql/conf/my.cnf添加[mysqld]log-bin=mysql-binserver_id=1# 配置定时清理expire_logs_days = 5# binlog.../Binlog写入机制MySQL 的二进制日志(binlog)在事务执行过程中起着关键作用。...性能影响: 记录 Binlog 会对 MySQL 的性能产生一定影响,尤其在高并发的环境下,可能引起性能瓶颈。使用注意事项定期清理 Binlog 文件,确保不会占用过多的硬盘空间,维护系统的正常运行。

    721110

    MySQL Binlog 介绍

    Binlog日志的两个最重要的使用场景 MySQL主从复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves来达到master-slave...启用 binlog 之后须重启MySQL才能生效。...如果设置为0,则表示MySQL不控制binlog的刷新,由文件系统去控制它缓存的刷新; 如果设置为不为0的值,则表示每 sync_binlog 次事务,MySQL调用文件系统的刷新操作刷新binlog到磁盘中...参考文档 MySQL 5.7参考手册.二进制日志 MySQL Internals Manual.The Binary Log 朱小厮.MySQL Binlog解析 七把刀.MySQL binlog格式解析...散尽浮华.Mysqlbinlog日志说明及利用binlog日志恢复数据操作记录 MySql Binlog 初识 MySQL5.7杀手级新特性:GTID原理与实战 MySQL 5.7 基于 GTID

    1.9K21

    MySQL Binlog 入门

    主从复制 MySQL 上下分为 SQL 层和引擎层,不同存储引擎中的日志格式是不同的,由于要对多引擎支持,必须在 SQL 层设计逻辑日志以透明化不同存储引擎,而这个逻辑日志就是 binlog 。...relay-log ,根据读取的内容转换为 sql 并重放 增量恢复 恢复方式:mysql 将保存在 binlog 日志中指定段落区间的 sql 语句逐个重新执行一次。...在 mysql 体现在写操作时不是立刻更新到磁盘, 而是先落在日志系统. 对支持事务的引擎如 InnoDB 而言,必须要提交了事务才会记录 binlog 。...if (mysql_file_write(info->file, Buffer, length, info->myflags | MY_NABP)) return info->error =...参考资料 http://mysql.taobao.org/monthly/2020/02/06/ https://blog.csdn.net/f80407515/article/details/128055909

    15910
    领券