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

mysql binlog删除

基础概念

MySQL的Binary Log(二进制日志)记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。它的主要作用有:

  1. 数据恢复:可以使数据库从崩溃中恢复过来。
  2. 主从复制:在主复制服务器上开启binlog功能,然后将binlog发送到从服务器上进行重放,从而实现主从数据的同步。

相关优势

  • 数据安全性:通过备份和恢复机制,可以保护数据免受损失。
  • 数据同步:支持主从复制,实现数据的实时同步。
  • 审计功能:可以追踪和审计数据库的操作。

类型

MySQL的binlog有三种格式:

  1. STATEMENT:基于SQL语句的复制。每一条会改变数据的sql都会记录在binlog中。
  2. ROW:基于行的复制。不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了。
  3. MIXED:混合模式复制。默认采用基于语句的复制,一旦发现基于语句的复制无法精确的复制时,就会采用基于行的复制。

应用场景

  • 数据备份与恢复:定期备份binlog,并在需要时进行恢复。
  • 主从复制:在主库上开启binlog,然后将从库设置为只读,并接收主库的binlog进行数据同步。
  • 数据迁移:通过解析binlog,可以将数据从一个数据库迁移到另一个数据库。

删除binlog的原因及问题

MySQL的binlog文件会随着时间的推移不断增长,占用大量磁盘空间。因此,需要定期删除旧的binlog文件以释放空间。但是,不正确的删除方式可能导致数据丢失或主从复制中断。

如何解决这些问题

  1. 设置自动删除策略:可以通过设置expire_logs_days参数来自动删除超过指定天数的binlog文件。例如,设置为10天,则MySQL会自动删除10天前的binlog文件。
代码语言:txt
复制
SET GLOBAL expire_logs_days = 10;
  1. 手动删除:如果需要手动删除binlog文件,可以使用PURGE BINARY LOGS命令。例如,删除所有在mysql-bin.000003之前的binlog文件:
代码语言:txt
复制
PURGE BINARY LOGS TO 'mysql-bin.000003';

或者删除某个时间点之前的binlog文件:

代码语言:txt
复制
PURGE BINARY LOGS BEFORE '2023-04-01 00:00:00';
  1. 注意事项:在执行删除操作之前,务必确认不会影响到数据的恢复和主从复制。建议先备份重要的binlog文件,并在测试环境中验证删除操作的正确性。

参考链接

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

相关·内容

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

mysql主从,关闭binlog # vim /etc/my.cnf //注释掉log-bin,binlog_format # Replication Master Server (default)...,x是自动删除的天数,一般将x设置为短点,如10 expire_logs_days = x // 二进制日志自动删除的天数。...默认值为0,表示“没有自动删除” 此方法需要重启mysql,附录有关于expire_logs_days的英文说明 以上操作完之后记得重启数据库,当然也可以不重启mysql,开启mysql主从,直接在mysql...也可以重置master,删除所有binlog文件:reset master; 附录 1、 expire_logs_days 英文说明 Where X is the number of days you’...时,对从mysql的影响 如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。

7.1K10
  • 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

    20010

    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。...mysql> reset master; Query OK, 0 rows affected, 1 warning (0.20 sec) 这样就删除了日志文件, 如果你不希望生成这些日志文件可以这样操作...: 修改/etc/my.cnf 文件,找到 log-bin=mysql-bin binlog_format=mixed 再这两行前面加上#,将其注释掉,再执行/etc/init.d/mysql restart

    9K32

    浅谈MySQL Binlog

    1 什么是binlogbinlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新状况,在mysql主从复制中就是依靠的binlog。...当更新或删除影响许多行时,这会导致 日志文件所需的存储空间少得多。这也意味着可以更快地完成备份和恢复。日志文件包含进行了任何更改的所有语句,因此它们可用于审计数据库。 缺点:INSERT ......:删除配置文件中相应的内容查看binlog是否开启:mysql> show variables like 'log_bin';+---------------+-------+| Variable_name...#只查看第一个binlog文件的内容mysql> show binlog events in 'mysql-bin.000002';#查看指定binlog文件的内容mysql> show binary...logs; #获取binlog文件列表mysql> show master status; #查看当前正在写入的binlog文件3.4 切换binlog的模式mysql> show global variables

    27200

    mysql binlog解析

    1 打开binlog 打开db管理工具,或者登陆mysql服务器:mysql -h127.0.0.1 -P3306 -uroot -p1008611 查看binlog是否打开:show variables...-02 23:59:59" /usr/local/mysql/data/mysql-bin.000001 3 binlog格式 【下面的方法都是ROW格式的方法。...这些Event可以是查询事件、插入事件、更新事件、删除事件等,用于记录对数据库的各种操作。每个BINLOG Event都有其特定的格式和字段,用于描述和记录相应的数据库更改操作。...*/; Delete_rows删除rows的事件。不同的版本有不同的Flag,详见附录判断删除事件的逻辑。 这里的WHERE即为原始数据。...有个不好的地方是,所有的变化的数据都记录了,有的数据后续删除了,但是前面的记录还在,导致binlog很多无效的数据,file利用率不高。

    72141

    MySQL:聊聊Binlog

    可以说MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性。今天就来聊聊 binlog(归档日志)。...Binlog 日志的使用示例首先确保MySQL开启了Binlog日志功能mysql> show variables like '%log_bin%';+------------------------...每个日志文件大小max_binlog_size = 200m# binlog日志格式,MySQL默认采用的是STATEMENT,建议使用MIXEDbinlog_format = MIXED重启MySQL.../Binlog写入机制MySQL 的二进制日志(binlog)在事务执行过程中起着关键作用。...缺点占用存储: Binlog 日志文件在大量数据操作的情况下占据一定硬盘空间,特别是在大规模的插入、更新和删除操作中,会对存储造成一定的压力。

    718110

    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

    15810

    MySQL:解析Binlog格式

    MySQL的世界里,二进制日志(Binlog)是一个非常重要的组件,它记录了数据库中所有影响数据内容的事件。 1....理解Binlog格式 MySQLBinlog有三种格式:Statement,Row和Mixed。其中: Statement格式:记录SQL语句本身,可以直观地查看每一个操作。...在Row格式下,Binlog不会记录具体的SQL语句,而是记录被修改的行的数据内容。这就解释了为什么我们无法在Binlog中找到具体的INSERT或UPDATE语句。 2....切换Binlog格式 如果我们需要查看具体的SQL语句,可以考虑临时切换Binlog格式为Statement或Mixed。...可以通过以下命令来修改Binlog格式: SET GLOBAL binlog_format = 'STATEMENT'; 或者: SET GLOBAL binlog_format = 'MIXED';

    63120

    MySQL清理binlog日志

    1、查看binlog日志 mysql> show binary logs; mysql> show binary logs; ±-----------------±-----------+ | Log_name...| | mysql-bin.000021 | 1073807498 | | mysql-bin.000022 | 1074931247 | … … … 2、删除某个日志文件之前的所有日志文件...purge binary logs to 'mysql-bin.000074'; 3、清理2019-09-09 13:00:00前binlog日志 PURGE MASTER LOGS BEFORE...--时间和文件名一定不可以写错,尤其是时间中的年和文件名中的序号,以防不小心将正在使用的binlog删除!!! --切勿删除正在使用的binlog!!!...5、重置所有的日志 reset master; 6、手动切换binlog日志 flush logs --或者flush binary logs 当你某天把所有binlog日志全干掉,数据库没有产生新的日志的时候就可以用手动切换这个方式来产生了

    2.5K20

    MySQL - binlog同步过程

    binlog作用 MySQLbinlog(二进制日志) 是一种记录数据库所有数据更改操作的日志,可以用于数据库备份、恢复、错误排查、数据同步等操作。...binlogMySQL 中的一个重要组件,能够记录下所有对数据库的修改操作,包括添加、删除和修改数据,以及更改数据库结构(例如:创建、删除表)等操作。...MySQLbinlog 同步原理是主从复制 (Master-Slave Replication),主库 (Master) 将所有数据更改操作记录保存在 binlog 中,并通过网络发送给一个或多个从库...---- binlog同步过程 具体步骤如下: 主库 (Master) 将数据更改操作记录保存在 binlog 中,包括对表的增删改操作,以及对数据库结构的更改操作(例如:创建、删除表)。...从库将主库的 binlog 文件保存在自己的数据库中,并使用主库的 binlog 位置开始复制。

    53130
    领券