MySQL relay_log_purge=0 时的风险

十、MySQL主从架构配置 主从复制,默认是通过pos复制(postion),就是说在日志文档里,将用户的每一项操作都进行了编号(pos),每一个event都有一个其实号,一个终止编号,配置主从复制时候,从节点要输入master的log_pos值,就是这个原因,要求它从哪个pos开始同步数据库里的数据,这也是传统的复制技术。MySQL5.6以后,增加了GTID复制(详见第6步)GTID就类似pos的一个作用,不过它是整个mysql复制结构全局通用的,就是说在整个mysql冗余架构中,它们的日志文件里时间的GTID值是一致的。 阅读详情

http://ourmysql.com/archives/1453


有时候,我们希望将 MySQL 的 relay log 多保留一段时间,比如用于高可用切换后的数据补齐,于是就会设置 relay_log_purge=0,禁止 SQL 线程在执行完一个 relay log 后自动将其删除。但是在官方文档关于这个设置有这么一句话:

Disabling purging of relay logs when using the --relay-log-recovery option risks data consistency and is therefore not crash-safe.

   究竟是什么样的风险呢?查找了一番后,基本上明白了原因。

   首先,为了让从库是 crash safe 的,必须设置 relay_log_recovery=1,这个选项的作用是,在 MySQL 崩溃或人工重启后,由于 IO 线程无法保证记录的从主库读取的 binlog 位置的正确性,因此,就不管 master_info 中记录的位置,而是根据  relay_log_info 中记录的已执行的 binlog 位置从主库下载,并让 SQL 线程也从这个位置开始执行。MySQL 启动时,相当于执行了 flush logs ,会新开一个 relay log 文件,新的 relay log 会记录在新的文件中。如果默认情况 relay_log_purge=1 时,SQL 线程就会自动将之前的 relay log 全部删除。而当 relay_log_purge=0 时,旧的 relay log 则会被保留。虽然这并不会影响从库复制本身,但还是会有地雷:

  1. 由于崩溃或停止 MySQL 时,SQL 线程可能没有执行完全部的 relay log,最后一个 relay log 中的一部分数据会被重新下载到新的文件中。也就是说,这部分数据重复了两次。

  2. 如果 SQL 跟得很紧,则可能在 IO 线程写入 relay log ,但还没有将同步到磁盘时,就已经读取执行了。这时,就会造成新的文件和旧的文件中少了一段数据。

   如果我们读取 relay log 来获取数据,必须注意这一点,否则就会造成数据不一致。而保留 relay log 的目的也在于此。因此,在处理 relay log 时必须格外小心,通过其中 binlog 头信息来确保正确性。

   关于如何配置 crash safe 的复制本身的配置,可以参照:
http://blog.itpub.net/22664653/viewspace-1752588/
http://www.innomysql.net/article/34.html

   参考资料:
http://blog.booking.com/better_crash_safe_replication_for_mysql.html
https://bugs.mysql.com/bug.php?id=73038
http://bugs.mysql.com/bug.php?id=74324


MySQL日志管理 server-id = 223344log_bin = mysql-binbinlog_format = ROWbinlog_row_image = FULLexpire_logs_days = 10##希望删除这个参数,如果有实施人员在客户主库配置日志过期时间是10天,造成二进制日志丢失。此阶段InnoDB会写事务的redo log,但要注意的是,此时redo log只是记录了事务的所有操作日志,并没有记录提交(commit)日志。 阅读详情

相关推荐

MySQL Binlog自动清理与手动删除实战指南

在数据库运维中,二进制日志(Binlog)是实现主从复制、数据恢复和变更数据捕获(CDC)的核心组件。其工作原理是记录所有数据变更操作,为数据同步和故障恢复提供基础。合理管理Binlog的技术价值在于保障系统稳定性、控制存储成本并满足合规要求。在实际应用场景中,DBA需要根据高可用架构、数据恢复需求和开发测试环境的不同,配置差异化的保留策略。本文聚焦于Binlog的“保质期”管理,深入解析expire_logs_days与binlog_expire_logs_seconds等关键参数,并提供主从复制协调下的

weixin_34396103的博客 401

relay_log_purge参数一则

MySQL数据库主从复制在缺省情况下从库的relay logs会在SQL线程执行完毕后被自动删除,(默认relay_log_purge=1)但是对于MHA场景下,对于某些滞后从库的恢复依赖于其他从库的relay log,因此采取禁用自动删除功能以及定期清理的办法,从而避免对于清理过多过大的relay log需要注意引起的复制延迟资源开销等。MHA可通过purge_relay_logs脚本及配合cronjob来完成此项任务,具体描述如下: 1、purge_relay_logs的功能 a、为relay日志创建硬

雪辉博客 3009

mysql面试题

面试官想听:理解隐藏字段、undo log版本链、Read View,能说清楚RR和RC的区别。回答MVCC 是多版本并发控制的缩写,主要用在 InnoDB 等存储引擎中,目的是实现读不阻塞写、写不阻塞读,提升并发性能。它的核心思想是:每次修改数据时不覆盖旧数据,而是生成一个新版本,读操作根据事务的启动时间或 Read View 选择可见的版本。面试官想听:主键索引就是聚簇索引,二级索引是非聚簇索引,回表的概念和代价。回答聚簇索引(主键索引):叶子节点存储整行数据。

m0_47691180的博客 825

参数relay_log_purge

当 relay_log_purge=0 时,旧的 relay log 则会被保留。虽然这并不会影响从库复制本身,但还是会有坑:由于崩溃或停止 MySQL 时,SQL 线程可能没有执行完全部的 relay log,最后一个 relay log 中的一部分数据会被重新下载到新的文件中。但是对于MHA场景下,对于某些滞后从库的恢复依赖于其他从库的relay log,因此采取禁用自动删除功能以及定期清理的办法,从而避免对于清理过多过大的relay log需要注意引起的复制延迟资源开销等。

mr_zhangwz的博客 823

MySQL Binlog日志保留策略与清理方法详解

数据库日志管理是保障数据安全与系统稳定的基础环节,其中二进制日志(Binlog)作为记录数据变更的核心机制,其原理在于以事件形式存储所有对数据库的修改操作。这项技术对于实现数据复制、故障恢复和高可用架构具有关键价值,广泛应用于主从同步、数据审计和基于时间点的恢复等场景。在MySQL数据库运维中,Binlog文件的持续累积会引发磁盘空间告急的常见问题,因此掌握其保留策略配置与清理方法至关重要。通过合理设置expire_logs_days或binlog_expire_logs_seconds参数,并结合PURG

weixin_30417487的博客 322

例题讲解拉格朗日乘子法、线性可分支持向量机(SVM)的推导

支持向量机(Support Vector Machine, SVM)的简单推导及例题

zzzssszzzzsz的博客 5681

MySQL day7 主从复制

主从复制搭建,主从复制原理,主从复制故障分析

果子哥丶的博客 640

从Podfile到分享成功:ShareSDK小红书模块集成全流程实战(附视频分享代码)

本文详细介绍了iOS应用如何通过ShareSDK集成小红书分享功能的全流程,包括环境配置、SDK初始化、图片和视频分享实现,以及常见问题排查和性能优化策略。特别针对视频分享这一高频需求场景,提供了完整的代码示例和实战技巧,帮助开发者快速实现社交分享功能。

weixin_42540248的博客 226

mysql relay_log删除_mysql 删除 relay log 方法

方法1 :自动 设置参数 relay_log_purge = 1mysql> SET GLOBAL relay_log_purge = 1;Query OK, 0 rows affected (0.00 sec)或者在/etc/my.cnf [mysqld]模块下面增加以下内容relay-log-purge = 1这个参数需要重启数据库才可生效。默认情况下relay-log-purge 是开...

weixin_30762173的博客 1295

Ubuntu22.04+Docker一键部署Autoware Universe避坑指南(附鱼香ROS配置)

本文详细介绍了在Ubuntu22.04系统中使用Docker一键部署Autoware Universe的完整流程,包括鱼香ROS工具链配置、Docker环境优化及VSCode开发环境集成。通过实战指南帮助开发者快速搭建自动驾驶开发环境,解决常见部署问题,提升开发效率。

weixin_29254673的博客 413

GEE案例:Landsat 5、7、8影像构建1985-2023年rsei生态遥感指数详细代码

rsei(Regional Silviculture Ecological Index,地区林业生态指数)是一种生态遥感指标,用于评估森林生态系统的健康状况和生态服务。构建1985-2023年的rsei生态遥感指,主要需要使用Landsat 5、7和8的遥感影像数据。以下是一种可能的构建方法:1. 数据获取:从美国地质调查局(USGS)或其他可靠数据提供商处获取Landsat 5、7和8的遥感影像数据。确保选择的影像具有适当的空间和时间分辨率,以覆盖所需的时间段。

此星光明博客 3399

purge mysql log_MySQL relay_log_purge=0 时的风险

有时候,我们希望将 MySQL 的 relay log 多保留一段时间,比如用于高可用切换后的数据补齐,于是就会设置 relay_log_purge=0,禁止 SQL 线程在执行完一个 relay log 后自动将其删除。但是在官方文档关于这个设置有这么一句话:Disabling purging of relay logs when using the --relay-log-recovery o...

weixin_33693600的博客 252

rk3576 点亮 LCD(eDP)

RK3576 处理器集成了对 **eDP (Embedded DisplayPort)** 接口的支持,主要用于驱动嵌入式或笔记本电脑的内置屏幕。支持 **eDP 1.3 版本协议**, 最大可支持 ****4K@120Hz**。

weixin_35723192的博客 352

mysql purge_MySQL relay_log_purge=0 时的风险

有时候,我们希望将 MySQL 的 relay log 多保留一段时间,比如用于高可用切换后的数据补齐,于是就会设置 relay_log_purge=0,禁止 SQL 线程在执行完一个 relay log 后自动将其删除。但是在官方文档关于这个设置有这么一句话:Disabling purging of relay logs when using the --relay-log-recovery o...

weixin_36373949的博客 236

工业激光器核心参数详解与选型实战:从理论到产线落地(五)

本文深入解析了脉冲激光加工的三大核心参数——脉宽、重复频率和脉冲能量的协同作用机制。通过公式推导和产线案例,揭示了参数设置对加工良率的关键影响:1. 脉宽决定热影响区大小,缩短脉宽可显著提升加工精度;2. 重复频率影响加工速度和热积累效应,需平衡效率与质量;3. 脉冲能量决定材料去除量,过大易导致加工缺陷。文中以ABS塑料打标、模具清洗和微孔钻孔为例,展示了参数优化如何将良率从65%提升至99%,并提供了不同应用场景的参数选型表和调试技巧,强调峰值功率比平均功率更具决定性作用。

weixin_44520581的博客 2421

《UDS协议从入门到精通》系列——图解0x83:访问时间参数

详细介绍UDS协议0x83服务,目标ECU的时序参数设置有哪些注意点?

车载系统攻城狮 2138

MHA-Failover可能遇到的坑

一、主从数据一致性 1.1、如何保证主从数据一致性 参考叶师傅文章:FAQ系列 | 如何保证主从复制数据一致性 在MySQL中,一次事务提交后,需要写undo、写redo、写binlog,写数据文件等等。在这个过程中,可能在某个步骤发生crash,就有可能导致主从数据的不一致。为了避免这种情况,我们需要调整主从上面相关选项配置,确保即便发生crash了,也不能发生主从复制的数据丢失...

a86793222的博客 835

Skill的嵌套

Skill的嵌套就很简单,直接引用其他的Skill就好了。在一个 Skill 的 SKILL.md 中,可以明确指示 Claude 去读取另一个 Skill 的文档。

Criss@陈磊 956

MySQL 中各类日志的区别对比

理解这些日志的核心差异有助于优化 MySQL 性能、设计高可用架构及处理故障恢复。若需提升写入性能,可调整和参数。主从复制延迟高时,需检查 relay log 生成与消费速度。事务回滚异常时,undo log 是排查问题的关键。

weixin_45422672的博客 420

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

关于MySQL备份、主从同步的一些问题

在工作中,经常会遇到需要对mysql数据库进行冷备的业务场景,以下脚本内容特针对冷备定制。

m0_38004228的博客 274

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MySQL binlog日志管理与安全删除实践指南

数据库日志管理是MySQL运维的核心环节,其中binlog作为记录所有数据变更的二进制日志,在数据恢复和主从复制中起关键作用。其工作原理基于事务提交时优先写入日志的机制,确保数据一致性。binlog支持STATEMENT、ROW和MIXED三种格式,直接影响日志量和复制准确性。在生产环境中,合理管理binlog文件涉及磁盘空间优化、复制环境协调等实际问题。通过PURGE命令、expire_logs_days参数等四种删除方法,配合主从状态监控,可以实现安全清理。对于高并发场景,建议结合binlog压缩(My

weixin_34161032的博客 474

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

四、MySQL

MVCC + 间隙锁幻读问题是磁盘 IO与内存利用率之间的平衡。

qq_41134324的博客 684

MySQL8.0学习笔记

SQL基础语法及函数摘要 本文介绍了SQL四大语言类别及其常用语法: DDL(数据定义语言):包括数据库/表的创建、修改、删除等操作,如CREATE/DROP/ALTER语句 DML(数据操作语言):实现数据增删改,如INSERT/UPDATE/DELETE语句 DQL(数据查询语言):SELECT查询语句,支持条件查询、分组、排序、分页等功能 DCL(数据控制语言):管理用户权限,如GRANT/REVOKE语句 还介绍了常用函数: 字符串函数:CONCAT、LOWER/UPPER、LPAD/RPAD等 数

rehumantou的博客 804
上一篇: 分享的好处
下一篇: xtrabackup新版详细说明
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值