首页 > 传媒 > 关键词  > UCloud最新资讯  > 正文

UCloud高可用数据库UDB主从复制延时的解决

2019-04-04 13:59 · 稿源: 站长之家用户

MySQL主从复制的延时一直是业界困扰已久的问题。延时的出现会降低主从读写分离的价值,不利于数据实时性较高的业务使用MySQL。

UDB是UCloud推出的云数据库服务,上线已达六年,运营了数以万计的UDB MySQL实例。除了提供高可用、高性能、便捷易用的产品特性,团队还平均每天帮助用户解决2- 3 起MySQL实例主从复制延时的问题。从大量实践中我们总结了主从复制延时的各种成因和解决方法,现分享于此。

延时问题的重要性

主从复制机制广泛应用在UDB的内部实现中:UDB创建的从库和主库就采用了“主从复制”的数据复制;另外,UDB的主打产品“UDB MySQL高可用实例”,也是采用 2 个数据库互为主从的“双主模式”来进行数据复制,而双主模式的核心就是主从复制机制。

如果主从复制之间出现延时,就会影响主从数据的一致性。

在高可用复制场景下,我们在UDB高可用容灾设计上考虑到,若出现主备数据不一致的场景,默认是不允许进行高可用容灾切换的。因为在主备数据不一致的情况下,此时发生容灾切换,且在新的主库写入了数据,那么从业务角度上,会产生意想不到的严重后果。

复制延时问题,不仅在UDB高可用中会带来不良后果,在只读从库的场景下,若从库产生复制延时,也可能会对业务造成一定影响,比如在业务上表现为读写不一致——新增/修改数据查不到等现象。

由此可见,主从复制的延时问题在数据库运营中需要特别关注。一般来说,DBA在库上执行’SHOW SLAVE STATUS’,并且观察

‘Seconds_Behind_Master’的值,就能够了解当前某个数据库和它的主库之间的数据复制延时。这个值是如此的重要,因此在UDB的监控界面上,我们将这个值单独抽取来,设计了“从库同步延时”监控项,以便于运维人员能够直接在控制台上观察。

生产环境中延时问题的分析及解决

我们将最常见的主从复制延时案例总结为几类,以下是相关案例的现象描述、原因分析和解决方法汇总。

◆ 案例一:主库DML请求频繁

某些用户在业务高峰期间,特别是对于数据库主库有大量的写请求操作,即大量insert、delete、update等并发操作的情况下,会出现主从复制延时问题。

现象描述

我们通过观察主库的写操作的QPS的值,会看到主库的写操作的QPS值突然升高,伴随主从复制延时的上升,可以判断是由于主库DML请求频繁原因造成的。

如上图,可以看出,在17: 58 分左右QPS突增,查看控制台上的写相关QPS,也有相应提升。而QPS突增的时间,对应的延时也在逐步上升,如下图所示。

原因分析

经过分析,我们认为这是由于主库大量的写请求操作,在短时间产生了大量的binlog。这些操作需要全部同步到从库,并且执行,因此产生了主从的数据复制延时。

从深层次分析原因,是因为在业务高峰期间的主库写入数据是并发写入的,而从库SQL Thread为单线程回放binlog日志,很容易造成relaylog堆积,产生延时。

解决思路

如果是MySQL 5. 7 以下的版本,可以做分片(sharding),通过水平扩展(scale out)的方法打散写请求,提升写请求写入binlog的并行度。

如果是MySQL 5. 7 以上的版本,在MySQL 5.7,使用了基于逻辑时钟(Group Commit)的并行复制。而在MySQL 8.0,使用了基于Write Set的并行复制。这两种方案都能够提升回放binlog的性能,减少延时。

◆ 案例二:主库执行大事务

大事务指一个事务的执行,耗时非常长。常见产生大事务的语句有:

■使用了大量速度很慢的导入数据语句,比如:INSERT INTO $tb、SELECT * FROM $tb、LOAD DATA INFILE等;

■使用了UPDATE、DELETE语句,对于一个很大的表进行全表的UPDATE和DELETE等。

当这个事务在从库执行回放执行操作时,就有可能会产生主从复制延时。

现象描述

我们从SHOW SLAVE STATUS的结果进行分析,会发现 Exec_Master_Log_Pos 字段一直未变,且second_behinds_master持续增加,而 Slave_SQL_Running_State 字段的值为”Reading event from the relay log”;同时,分析主库binlog,看主库当前执行的事务,会发现有一些大事务,这样基本可以判定是执行大事务的原因导致的主从复制延时。

原因分析

当大事务记录入binlog并同步到从库之后,从库执行这个事务的操作耗时也非常长,这段时间,就会产生主从复制延时。

举个例子,假如主库花费200s更新了一张大表,在主从库配置相近的情况下,从库也需要花几乎同样的时间更新这张大表,此时从库延时开始堆积,后续的events无法更新。

解决思路

对于这种情况引起的主从复制延时,我们的改进方法是:拆分大事务语句到若干小事务中,这样能够进行及时提交,减小主从复制延时。

◆ 案例三:主库对大表执行DDL语句

DDL全称为 Data Definition Language ,指一些对表结构进行修改操作的语句,比如,对表加一个字段或者加一个索引等等。当DDL对主库大表执行DDL语句的情况下,可能会产生主从复制延时。

现象描述

从现象上,如果从库执行SHOW SLAVE STATUS的输出中,检查Exec_Master_Log_Pos一直未动,在排除主库执行大事务的情况下,那么就有可能是在执行大表的 DDL。这一点结合分析主库binlog,看主库当前执行的事务就可以进行确认。

DDL语句的执行情况,可以进一步细分现象来更好地判断:

1. DDL未开始,被阻塞,这时SHOW SLAVE STATUS的结果能检查到Slave_SQL_Running_State为waiting for table metadata lock,且Exec_Master_Log_Pos不变;

2. DDL正在执行,SQL Thread单线程应用导致延时增加。这种情况下观察SHOW SLAVE STATU的结果能发现Slave_SQL_Running_State为altering table,而Exec_Master_Log_Pos不变。

如果有上述的现象,那么很有可能主库对大表执行DDL语句,同步到从库并在从库回放时,就产生了主从复制延时。

原因分析

DDL导致的主从复制延时的原因和大事务类似,也是因为从库执行DDL的binlog较慢而产生了主从复制延时。

解决思路

遇到这种情况,我们主要通过SHOW PROCESSLIST或对information_schema.innodb_trx做查询,来找到阻塞DDL语句,并KILL掉相关查询,让DDL正常在从库执行。

DDL本身造成的延时难以避免,建议考虑:

■避免业务高峰,尽量安排在业务低峰期执行 ;

■set sql_log_bin= 0 后,分别在主从库上手动执行DDL(此操作对于某些DDL操作会造成数据不一致,请务必严格测试),这一条如果用户使用云数据库UDB,可以联系UCloud UDB运维团队进行协助操作。

◆ 案例四:主库与从库配置不一致

如果主库和从库使用了不同的计算资源和存储资源,或者使用了不同的内核调教参数,可能会造成主从不一致。

现象描述

我们会详细比对主库和从库的性能监控数据,如果发现监控数据差异巨大,结合查看主从的各个配置情况,即可作出明确判断。

原因分析

各种硬件或者资源的配置差异都有可能导致主从的性能差异,从而导致主从复制延时发生:

■硬件上:比如,主库实例服务器使用SSD磁盘,而从库实例服务器使用普通SAS盘,那么主库产生的写入操作在从库上不能马上消化掉,就产生了主从复制延时;

■配置上:比如,RAID卡写策略不一致、OS内核参数设置不一致、MySQL落盘策略不一致等,都是可能的原因。

解决思路

考虑尽量统一DB机器的配置(包括硬件及选项参数)。甚至对于某些OLAP业务,从库实例硬件配置需要略高于主库。

◆ 案例五:表缺乏主键或合适索引

如果数据库的表缺少主键或者合适索引,在主从复制的binlog_format设置为’row’的情况下,可能会产生主从复制延时。

现象描述

我们进行数据库检查时,会发现:

■观察SHOW SLAVE STATUS的输出,发现Slave_SQL_Running_State为Reading event from the relay log;

■SHOW OPEN TABLES WHERE in_use= 1 的表一直存在;

■观察SHOW SLAVE STATUS的Exec_Master_Log_Pos字段不变;

■mysqld进程的CPU接近100%(无读业务时),IO压力不大。

这些现象出现的情况下,可以认为很可能有表缺乏主键或唯一索引。

原因分析

在主从复制的binlog_format设置为’row’的情况下,比如有这样的一个场景,主库更新一张 500 万表中的 20 万行数据。binlog在row格式下,记录到binlog的为 20 万次update操作,也就是每次操作更新 1 条记录。如果这条语句恰好有不好的执行计划,如发生全表扫描,那么每一条update语句需要全表扫描。此时SQL Thread重放将特别慢,造成严重的主从复制延时。

解决思路

这种情况下,我们会去检查表结构,保证每个表都有显式自增主键,并协助用户建立合适索引。

◆ 案例六:从库自身压力过大

有时候,从库性能压力很大的情况下,跟不上主库的更新速度,就产生了主从复制延时。

现象描述

观察数据库实例时,会发现CPU负载过高,IO利用率过高等现象,这些导致SQL Thread应用过慢。这样就可以判断是因为从库自身压力过大引起主从复制延时。

原因分析

部分UCloud用户对于数据库的主从会使用读写分离模式,读请求大部分在从库上执行。在业务有大量读请求的场景下,从库会产生比主库大得多的性能压力。有的用户甚至会在从库运行十分耗费计算资源的OLAP业务,这也对从库造成了更高的性能挑战,这些都会造成主从复制的延时。

解决思路

这种情况下,我们会建议用户建立更多从库,打散读请求,降低现有从库实例的压力。对于OLAP业务来说,可以专门建立一个从库来做OLAP业务,并对这个从库,允许适当的主从复制延时。

总结

在使用MySQL的主从复制模式进行数据复制时,主从复制延时是一个需要考量的关键因素。它会影响数据的一致性,进而影响数据库高可用的容灾切换。

在遇到数据库之间出现主从复制延时的情况下,我们团队基于过往经验,归纳出以下方法与流程来协助排查问题:

■通过SHOW SLAVE STATUS与SHOW PROCESSLIST查看现在从库的情况。(顺便也可排除在从库备份时的类似原因);

■若Exec_Master_Log_Pos不变,考虑大事务、DDL、无主键,检查主库对应的binlog及position即可;

■若Exec_Master_Log_Pos变化,延时逐步增加,考虑从库机器负载,如IO、CPU等,并考虑主库写操作与从库自身压力是否过大。

UDB的高可用、高性能、便捷易用,可以大量减轻使用者的运维负担。在使用过程中, UDB团队也会利用多年累积的运营经验,帮助用户及时分析、排查问题原因,并给出合理的解决方法。

推广

特别声明:以上内容(如有图片或视频亦包括在内)均为站长传媒平台用户上传并发布,本平台仅提供信息存储服务,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任,相关信息仅供参考。站长之家将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。任何单位或个人认为本页面内容可能涉嫌侵犯其知识产权或存在不实内容时,可及时向站长之家提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明(点击查看反馈联系地址)。本网站在收到上述法律文件后,将会依法依规核实信息,沟通删除相关内容或断开相关链接。

  • 相关推荐
  • 九章云极发布九章智算云Alaya NeW Cloud 2.0, 开创Serverless+RL技术趋势

    九章云极DataCanvas发布新一代全栈智能计算云平台Alaya NeW Cloud 2.0,突破"秒级生成百万token级"性能瓶颈,采用Serverless架构与强化学习技术深度融合,支持万卡级异构算力统一调度。平台创新性地提供高度融合的智能计算基础设施与低门槛工具链,实现端到端性能提升5倍,综合成本下降60%。同步推出全球首个强化学习计算服务AgentiCTRL,将大模型训练效率提升500%。该平台通过"按量计费"创新模式降低用户总拥有成本达60%,并构建覆盖全球的算力供给网络,推动AI普惠化发展。

  • GOPS 2025北京站|联想智能云CloudOps专场圆满收官,五大技术议题点燃智能运维新思潮!

    第26届GOPS全球运维大会上,联想智能云CloudOps专场聚焦企业智能化转型,探讨大模型时代下的智能运维实践。联想提出双AI引擎架构:智能分析平台和IT运营智能体xSpark,实现运维流程自动化,提升效率40%。专家分享企业级LLMOps平台设计理念,强调大模型全生命周期管理的重要性。此外,联想FinOps方案通过可视化云资源、精细化成本分摊,助力企业降本30%。会议还展示了跨区域�

  • 金仓数据库26周年|淬火砺重器,万里再扬帆

    金仓数据库26年发展历程:从萨师煊教授70年代引入数据库概念,到王珊教授团队1999年创立金仓公司实现产业化突破,见证了中国数据库从无到有的发展。金仓坚持自主创新,打造KES融合数据库产品体系,拥有700多项专利,服务金融、能源等国家重点行业,装机量超百万套。公司构建产学研生态,培养数万名专业人才,推动国产数据库生态建设。站在新起点,金仓将继续以自主可控技术支撑千行百业数字化转型,助力数字中国建设。

  • 国产化标杆!金仓数据库助力一汽奔腾核心业务数字化转型

    一汽奔腾在数字化转型中面临国外数据库系统的三大挑战:性能瓶颈、数据安全隐患和成本压力。通过国产数据库替换,实现千万级数据无缝迁移,采用智能转换工具缩短适配周期,完成核心系统改造。成效显著:数据主权回归,安全漏洞归零,订单处理峰值能力提升;成本结构优化,年节省可观;技术团队本土化。该项目为汽车行业提供了国产替代标杆,推动行业从技术跟跑向标准制定转变,目前正联合开发车联网专用数据库引擎,深化智能驾驶数据分析等场景应用。

  • 行业首发3+1麦开放式降噪!荣耀Earbuds耳机发布 699元

    今晚荣耀Earbuds耳机正式发布,售价699元,国补到手价594.15元。 该款耳机延续荣耀标志性的月相设计”,外壳弧线源自盈亏变化的月影,提供极昼金与极夜黑两款配色,兼具科技感与时尚属性。 荣耀Earbuds开放式耳机单耳重量仅7.9克,以三点受力结构搭配镍钛合金耳挂与液态硅胶包覆,舒适轻盈。它还是首款通过了SGS亲肤友好金标认证的耳机,让用户佩戴安全且舒适。 在音质

  • AIbase MCP服务库上线:集成服务器、客户端、调试、案例教程等服务

    在当今数字化时代,人工智能技术正以前所未有的速度发展,深刻地改变着我们的生活和工作方式。而要充分发挥AI的强大能力,离不开高效的工具和服务支持。今天,就让我们来了解一下一个专注于MCP(Model Context Protocol)服务的优质平台 —— AIbase(www.aibase.cn)。 AIbase平台(https://mcp.aibase.cn/)作为一个精选全球优质MCP服务器的集合平台,为AI应用开发者和爱好者提供了丰富的�

  • 小米YU7天际屏成本是HUD三倍 将支持跨屏互动等新功能

    小米YU7首发的天际屏全景显示屏,利用了前风挡的下黑区,采用三块Mini LED屏幕将屏幕信息直接反射到前风挡下黑区,可视峰值亮度高达1200nits。 那么,小米天际屏全景显示在人机交互体验上,到底有哪些特点呢? 小米汽车官方今天进行了详细讲解:小米天际屏全景显示是一套全新的交互系统。 它通过在前风挡下沿投射三块Mini LED屏幕实现全景显示,同时保持视野通透,视�

  • 探营“数龙杯”参赛团队,Helix Studio努力打造互动影游2.0

    2023年互动剧《完蛋!我被美女包围了!》走红后,同类产品难现爆款。近期Helix Studio团队在数龙杯大赛推出AI驱动的沉浸式叙事影游《The Nightcap》,展现互动剧新形态。该作品整合NVIDIA ACE等前沿技术,实现虚拟角色与玩家深度互动;采用跨平台无缝体验设计,支持手机与VR设备切换;通过"有边界的自由空间"平衡剧情引导与玩家选择。团队表示AI技术使制作效率提升40-50%

  • 水库视频监测、多地泵站远程管理,贝锐蒲公英如何打通水利数据回传?

    文章探讨了智慧水利系统建设面临的四大挑战:1)偏远监测站点有线网络接入困难,无线信号不稳定;2)传统专线组网成本高昂;3)设备分散导致运维复杂;4)水利数据存在安全风险。针对这些问题,贝锐蒲公英提出基于SD-WAN的异地组网解决方案,通过工业路由器实现4G/5G快速接入,支持双网备份确保在线率,显著降低组网成本。该方案具备云端部署、远程集中运维能力,提供完善的数据加密传输和权限管理体系,已成功应用于水文监测、水库大坝安全监控、灌区智能灌溉及城市供排水管网监测等多个场景,助力水利行业数字化转型。

  • 行业领先|DuDuTalk实时流工牌重磅首发,实现从事后到实时的颠覆性跨越

    文章主要介绍了DuDuTalk推出的4G实时流拾音工牌如何解决企业管理痛点。当前企业面临数据滞后、风险后置、经验依赖三大痛点,导致决策迟缓、品牌受损。该产品通过4G实时流技术实现秒级音频传输,让管理者远程实时获取现场信息,突破传统录音回放的低效模式。典型应用场景包括:1)销售赋能,实时指导新人避免失误;2)客户服务优化,及时干预纠纷;3)跨地域商务谈判,异地团队如临现场;4)安防监控,立体化预警;5)电力巡检,主动防控。该技术不仅实现技术升级,更推动管理思维革新,让企业从"事后复盘"进入"实时驱动"时代。