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

mysql从库清理binlog

基础概念

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

在主从复制架构中,主库(Master)会将binlog发送给从库(Slave),从库通过读取并执行这些binlog来保持与主库的数据一致性。

清理Binlog的原因

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

清理Binlog的类型

  1. 手动清理:可以通过PURGE BINARY LOGS命令手动清理binlog文件。
  2. 设置自动清理:可以通过配置expire_logs_days参数来设置binlog文件的自动过期时间。

应用场景

当从库不再需要同步主库的数据,或者为了节省磁盘空间时,需要对从库的binlog进行清理。

清理Binlog的方法

手动清理

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

上述命令会删除所有在mysql-bin.000003之前的binlog文件。

或者

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

上述命令会删除所有在指定时间之前的binlog文件。

设置自动清理

编辑MySQL配置文件(通常是my.cnfmy.ini),添加或修改以下配置:

代码语言:txt
复制
[mysqld]
expire_logs_days = 10

上述配置表示binlog文件会在生成后的10天内自动过期并被删除。

可能遇到的问题及解决方法

问题:清理binlog后,从库无法同步数据

原因:可能是由于清理了从库正在使用的binlog文件。

解决方法

  1. 停止从库的复制进程:
  2. 停止从库的复制进程:
  3. 确认从库已经读取到的binlog文件和位置:
  4. 确认从库已经读取到的binlog文件和位置:
  5. 根据Relay_Master_Log_FileExec_Master_Log_Pos的值,手动复制相应的binlog文件到从库,并使用CHANGE MASTER TO命令重新设置从库的复制起点。
  6. 根据Relay_Master_Log_FileExec_Master_Log_Pos的值,手动复制相应的binlog文件到从库,并使用CHANGE MASTER TO命令重新设置从库的复制起点。
  7. 启动从库的复制进程:
  8. 启动从库的复制进程:

参考链接

通过以上方法,可以有效地管理和清理MySQL从库的binlog文件,确保数据库的正常运行和数据的一致性。

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

相关·内容

MySQL清理binlog日志

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

2.5K20

MySQL Binlog日志清理

Binlog日志的两个重要的使用场景:(1)MySQL主从复制(2)数据库回档[数据恢复]2、MySQL Binlog过期时间MySQL默认Binlog过期时间是7天,这里需要注意:Binlog日志过期时间是按照最新一个...3、MySQL Binlog日志清理(1)查看binlog文件列表show binary logs;(2)查看当前写的binglogshow master status\G(3)方式一:清理除比mysql-bin... logs before "$begin_time";日期格式:'2018-02-01 12:00:00';4、MySQL Binlog日志定时清理脚本4.1 背景介绍生产环境中,我们经常会遇到MySQL...数据库日志占满磁盘的情况,比如,MySQL数据迁移或者高IO读写的MySQL实例等。...【注意】当然MySQL有自带binlog清理机制,通过修改expire_logs_days即binlog过期时间进行控制。但是由于该参数的取值范围是1-31天,所以无法精确清理小时级别的日志。

10210
  • 快速安全清理MySQL binlog

    一、问题提出 之前写过一篇名为“快速安全删除MySQL大表”的博客,讲解如何在不影响线上数据库服务的前提下删除大表。实际上清理MySQL binlog也会遇到同样的问题。...最初的做法是,每天凌晨2:30执行下面的操作清理10天前binlog: mysql -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以及之前的二进制日志...datetime’; 4>当实例启动或执行flush logs时,按照expire_logs_days设置,如果超过该参数指定天数的二进制会被全部删除 命令:mysqladmin flush-log 清理...binlog文件顺序: 先从文件系统中清理文件,再修改索引文件。...RELAY LOG生产与删除 Relay Log rotate 机制: Rotate:每从Master fetch一个events后,判断当前文件是否超过max_relay_log_size 如果超过则自动生成一个新的

    2K40

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

    image.png 说明 当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。...# binlog_format=mixed 操作完之后记得重启数据库 2、 开启mysql主从,设置expire_logs_days # vim /etc/my.cnf // 修改expire_logs_days...默认值为0,表示“没有自动删除” 此方法需要重启mysql,附录有关于expire_logs_days的英文说明 以上操作完之后记得重启数据库,当然也可以不重启mysql,开启mysql主从,直接在mysql...时,对从mysql的影响 如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。...不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。

    7.4K10

    【MySQL系列】- binlog预防删库跑路

    说白了就是二进制日志记录了对 MySQL 数据库执行更改的所有操作,若操作本身没有导致数据库发生变化,该操作可能也会写入二进制文件。...这些事件使数据库从备份点更新,数据将变化恢复到指定的时间点(Point-in-time)。...主从复制(replication):主数据库向从数据库发送binlog到从数据库,从数据库执行和复制binlog从而将数据恢复到从数据库中。...审计(audit):用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击。 binlog的格式 MySQL有好3种格式记录binlog,具体的格式取决于MySQL数据库的版本。...3种格式如下: STATEMENT:MySQL中的主从复制功能最初是基于SQL语句从源到副本的传播,这称为基于语句的日志记录(statement-based logging)。

    82930

    MySQL binlog

    文件较小; binlog 中包含了所有数据库修改信息,可以据此来审核数据库的安全等情况; binlog 可以用于实时的还原,而不仅仅用于复制; 主从版本可以不一样,从服务器版本可以比主服务器版本高;...#ROW,Statement,MiXED三种格式 expire_logs_days=7 #binlog过期清理时间 sync_binlog=1 #刷新到磁盘的时机 重启mysql service...,从MySQL binlog解析出你要的SQL。...清理 #刷新log日志,自此刻开始产生一个新编号的binlog日志文件 #每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog....000001'; 7、 MySQL基于binlog的复制过程 复制是mysql最重要的功能之一,mysql集群的高可用、负载均衡和读写分离都是基于复制来实现的;从5.6开始复制有两种实现方式

    3.1K50

    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重启命令和配置文件路径可能略有不同,其他一样。

    9.1K32

    mysql binlog解析

    Anonymous_GTID在MySQL复制中,每个事务都会被分配一个唯一的GTID,以便在主服务器上生成的事务可以被从服务器正确地复制和应用。...GTID是MySQL用于在复制环境中唯一标识事务的一种机制。每个事务都会被分配一个唯一的GTID,以便在主服务器上生成的事务可以被从服务器正确地复制和应用。'...BINLOG 一连串的十六进制这些数据代表了在主服务器上执行的数据库更改操作。具体来说,BINLOG记录包含了一系列的事件,每个Event都以特定的格式和结构进行编码,并以十六进制的形式进行记录。...这些Event可以是查询事件、插入事件、更新事件、删除事件等,用于记录对数据库的各种操作。每个BINLOG Event都有其特定的格式和字段,用于描述和记录相应的数据库更改操作。...从binlog中可以找到操作更改的事务,在这个事务中找到Query事件,Query事件有个字段为thread_id,从而可以找到本次操作的线程id。

    76741

    浅谈MySQL Binlog

    1 什么是binlog?binlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新状况,在mysql主从复制中就是依靠的binlog。...用 无法在副本上看到从源接收并执行了哪些语句。对于使用MyISAM 存储引擎的表,INSERT当将它们作为基于行的事件应用于二进制日志时,语句的副本需要比将它们作为语句应用时更强的锁。...日志文件包含进行了任何更改的所有语句,因此它们可用于审计数据库。 缺点:INSERT ... SELECT与基于行的复制相比,需要更多的行级锁。...#只查看第一个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

    29300
    领券