一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种MYSQL从库互相切换时采集点位映射处置方法与流程

2022-12-03 03:18:54 来源:中国专利 TAG:

一种mysql从库互相切换时采集点位映射处置方法
技术领域
1.本发明属于大数据领域中的实时数据采集技术,具体涉及一种mysql从库互相切换时采集点位映射处置方法。


背景技术:

2.我行现有mysql数据库架构是一主一备两从,而实时采集架构是采集mysql架构的从库binlog日志,原因是采集从库binlog日志不会对主库造成压力,从而不影响业务负载。而我们当前实时采集mysql的方案是通过解析mysql binlog日志来获取数据,但是再好的架构都存在异常的问题,因此我们经常遇到正在采集的从库宕机或者停止服务的情况发生,在此情况下,如何保障我们的采集不中断,业务不中断呢?如何从当前异常的采集从库binlog点位找到另一台mysql从库的对应binlog文件对应的采集点位?这是我行同时也是业界的痛点,当前业界也暂无对应的成熟方案。
3.针对上述问题,目前行业内的应对方案多是采用基于当前采集的点位的事件时间,人为经验预估方法,找到对应从库的binlog文件进行回退,该方法存在诸多弊端,耗费大量人力且不够智能,找到的采集点位往往与实际的异常点采集点位存在偏差,导致消费的时候丢数或者重复消费,影响业务数据。而且在异常时,运维找到对应从库并找到对应采集点位需要耗时较长,这期间业务是非连续性的,会导致业务停滞,影响甚大。
4.在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.为了解决上述现有技术存在的缺陷,本发明的目的在于提供一种mysql从库互相切换时采集点位映射处置方法,其将人工经验抽象成算法解析,通过排序从库binlog文件及倒序解析binlog内容,从最新的binlog文件最新的内容开始检索,查询对应采集点位,从而实现查找binlog文件最少,解析binlog日志最少的算法,找到对应切换从库的采集点位,实现从库异常切换到其他从库无缝切换,保障业务连续性。
6.本发明采用的技术方案如下:
7.1一种mysql从库互相切换时采集点位映射处置方法,包括如下步骤:
8.步骤1:根据采集程序的报错,发现从库异常,定位从库当前消费binlog文件和当前消费日志的位置,找到用户对数据的动作记录;
9.步骤2:根据用户的动作记录,去对应从库的binlog日志文件倒序查找,找到对应的binlog文件及点位信息,进而找到对应的操作记录点位信息;
10.步骤3:查找到对应切换从库的匹配点位时,记录该点位所在的binlog文件及事件时间和日志点位,作为重新启动实时采集的入参,重新运行采集程序;
11.步骤4:实时采集程序获取最新从库的binlog文件、事件时间和日志点位信息即可从该点位断点恢复采集,保障数据采集连续性。
12.采用上述技术方案,系统基于当前采集从库的binlog日志异常点的点位,根据异常点的点位人工去倒序解析对应切换从库的binlog文件并倒序解析binlog文件内容获取从库对应的采集点位(人工解析难度较大,往往是超前回退,下游去从,保障业务rto及rpo),将该采集点位作为切换后从库的初始采集点位,从而实现平滑切换,保障业务连续性
13.具体的,所述步骤1具体为:当采集程序出现异常的时候,日志会输出异常的binlog文件及其最后的采集点位,系统根据采集到的日志数据,发现从库服务器出现异常,并找到出现异常的从库服务器的当前消费的binlog文件,定位从库当前消费日志的位置,解析异常的binlog文件,根据日志位置和事件找到用户对数据的动作记录
14.具体的,其特征在于,所述步骤2中具体为:系统根据异常采集从库binlog解析出来的用户动作,根据倒序查找法,去对应的从库中最新的binlog文件,以及最后写入的binlog日志开始查找相应的数据动作以及数据文件数,进而找到用户对动作的数据记录,找到对应的binlog文件,从而定位binlog文件,得到对应的映射点位信息和对应的操作记录。
15.本发明的有益效果是:
16.本发明克服了前述的现有技术中存在的采集异常需要人为经验需要采集点位并且无法精确的找到对应的采集点位实现实时采集快速切换到其他从库,恢复业务采集。而且该方法耗时较长、存在少消费或者重复消费数据的弊端、实时采集中断时间较长,影响业务连续性。通过将采集点位异常从库和正常从库映射方法工具化后,可以通过监控手段配置调度,当触发异常时,调度该工具自动查找对应从库的映射点位,从而实现快速的切换实时采集,保障业务连续性。整个过程精确到秒级,对业务影响较小。切实保障了我行的实时采集的高可靠性和高可用性。
附图说明
17.本发明将通过例子并参照附图的方式说明,其中:
18.图1是本发明中一种mysql从库互相切换时采集点位映射处置方法的流程图;
19.图2是本发明中正常mysql从库采集binlog数据点位位置映射图;
20.图3是本发明中异常mysql从库binlog日志最后用户行为操作日志图;
21.图4是本发明中异常mysql从库binlog当前的文件列表图;
22.图5是本发明中异常mysql从库对应架构正常mysql数据库映射binlog文件对应的相同用户行为操作日志图;
23.图6是本发明中myql从库互相切换时采集点位映射处置方法集成工具执行效果图。
具体实施方式
24.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施
例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
25.下面结合图1~图6对本发明作详细说明。
26.我行现有mysql数据库架构是一主一备两从,而实时采集架构是采集mysql架构的从库binlog日志,原因是采集从库binlog日志不会对主库造成压力,从而不影响业务负载。而我们当前实时采集mysql的方案是通过解析mysql binlog日志来获取数据,但是再好的架构都异常的时候,因此我们经常遇到正在采集的从库宕机或者停止服务的时候,那么我们如何保障我们的采集不中断,业务不中断呢?我们如何从当前异常的采集从库binlog点位找到另一台mysql从库的对应binlog文件对应的采集点位呢?这是我行同时也是业界的痛点,当前业界也暂无对应的成熟方案。
27.金融从业对rto及rpo要求较为严苛,因此当采集从库出现异常时,如果无法及时切换到其他对应从库实现连续采集,那么对业务而言是不可接受的损失。为了解决该问题,调研了业界方案,mysql 5.7之后有git id(事务id)架构,通过事务id保障主备从的数据一致性,实现无缝切换,但我行现状不仅仅存在mysql 5.7以上版本同时还存在以下版本,对整体架构改造,难度和成本较大,无法满足当前风险解决,必须另寻方案。通过对binlog原理分析,发现binlog记录数据的操作记录,如insert、update、delete、truncate等。每一条对数据的操作记录都可以在binlog中找到,那么我们可以设想,我们采集异常的时候读取到的最后一条操作记录是否可以作为我们去对应正常从库binlog中查找的条件,那么问题来了,我们如何去查找最少的binlog文件,解析最少的binlog文件内容,最快的找到我们最后一条记录所对应的采集从库的对应记录的采集binlog文件和采集点位呢?
28.为了解决上述现有技术存在的缺陷,本发明的目的在于提供一种mysql从库互相切换时采集点位映射处置方法,参阅图1,其具体方法如下:
29.根据采集程序的报错,发现从库异常,定位从库当前消费binlog文件和当前消费日志的位置,找到用户对数据的动作记录。
30.1)当采集程序出现异常的时候,我们日志会输出异常的binlog文件及其最后的采集点位,根据其点位我们解析binlog_file:mysql-bin.000072的next_position:993954435位置的操作记录,作为我们去解析对应从库的比对条件根据采集程序的日志,发现从库服务器出现异常,找到出现异常的从库服务器的当前消费的binlog文件,定位从库当前消费日志的位置,解析异常的binlog文件,根据日志位置和事件找到用户对数据的动作记录
31.异常采集节点日志输出的binlog文件信息及异常点的采集点位,参阅图2;
32.异常从库当前消费binlog文件:mysql-bin.000032
33.异常从库当前消费日志位置:273
34.解析异常的binlog文件:mysql-bin.000032,根据日志点位和事件事件找到用户对数据的动作记录,参阅图3;
35.2)根据异常采集从库binlog解析出来的用户动作(sql语句),去对应的从库的binlog日志文件倒序查找(倒序查找法的目的从最新的binlog文件,最后写入的binlog日志开始查找相应的数据动作,查找数据文件数和读取内容最小化找到用户对动作的数据记录,找到对应的binlog文件,从而定位binlog文件,找到对应的操作记录点位信息)
36.对应从binlog清单,可以看出最新的binlog文件为,参阅图4;
37.mysql-bin.000052
38.查询到从库同样操作记录的binlog文件及点位信息:
39.binlog文件:mysql-bin.000052
40.参阅图5,对应操作记录点位信息:382
41.3)查找到对应切换从库的匹配点位时,记录该点位所在的binlog文件及事件时间和日志点位,作为重新启动实时采集的入参,从新运行采集程序,参阅图6。
42.4)实时采集程序获取最新从库的binlog文件、事件时间和日志点位信息即可从该点位断点恢复采集,保障数据采集连续性。
43.5)以上流程通过代码实现,工具化采集从库异常自动监测自动切换到对应正常从库,同时还具备嵌入到实时开发平台集成管理的能力。具备拓展价值,有形成产品的潜力。
44.一主一备两从mysql架构,备集群同步主集群数据,实时应用程序,采集其中一从集群binlog数据,没有完美的架构,当异常来临的时候,保障业务连续性尤为重要,因此上述方法形成工具化能力,可以快速的实现采集节点异常时,自动无缝切换到其他正常的从库,从而保障业务连续性,提高架构的高可用性和高可靠性。
45.本发明中通过将相邻的的切片放置槽平行且交错设置,对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的得同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献