一种数据同步方法及装置转让专利

申请号 : CN202110532705.8

文献号 : CN113515574B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘先攀胡新静胡晓峰张纪宽马忠飞矫恒浩王宝云

申请人 : 聚好看科技股份有限公司

摘要 :

本申请涉及计算机领域,特别涉及一种数据同步方法及装置,用于发生主从切换时快速恢复同步,该方法为:获取第一节点与第二节点之间的位置对应关系,其中,第一节点为主节点,第二节点为从节点,位置对应关系中至少包含第一节点的日志同步位置,以及对应的第二节点的日志同步位置;若监控到第一节点和第二节点之间进行主从切换,则基于位置对应关系和第一节点的当前日志同步位置,得到第二节点的目标日志位置;基于目标日志位置,进行第一节点与第二节点之间的数据同步。这样,在发生主从切换后,可以快速确定新的主节点的目标日志位置,进而根据目标日志位置,快速恢复同步,避免了数据丢失,保证同步高可用。

权利要求 :

1.一种数据同步方法,其特征在于,包括:

获取第一节点与第二节点之间的位置对应关系,其中,所述第一节点为主节点,所述第二节点为从节点,所述位置对应关系中至少包含第一日志位置和对应的第二日志位置,所述第一日志位置用于表征所述第一节点的日志同步位置,所述第二日志位置用于表征对应的所述第二节点的日志同步位置;

若监控到所述第一节点和所述第二节点之间进行主从切换,则基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置;

基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步。

2.如权利要求1所述的方法,其特征在于,所述获取第一节点与第二节点之间的位置对应关系,包括:按照预设频率,通知所述第二节点返回第一节点的第一日志位置和第二节点的第二日志位置;

关联记录所述第一日志位置和第二日志位置,得到日志位置关系。

3.如权利要求1所述的方法,其特征在于,所述基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置,包括:从指定存储位置,获取所述第一节点的当前日志同步位置;

基于所述位置对应关系和所述当前日志同步位置,得到所述第二节点的目标日志位置。

4.如权利要求3所述的方法,其特征在于,基于所述位置对应关系和所述当前日志同步位置,得到所述第二节点的目标日志位置,包括:若所述位置对应关系中包含所述当前日志同步位置,则将所述当前日志同步位置对应的所述第二节点的第二日志位置,作为所述第二节点的目标日志位置;或者,若所述位置对应关系中未包含所述当前日志同步位置,则基于所述当前日志同步位置的记录时间,从所述位置对应关系中,确定所述第一节点的第三日志位置,并将所述第三日志位置对应的所述第二节点的第四日志位置,作为所述目标日志位置,其中,所述第三日志位置是指第一日志位置中距离所述记录时间最近的第一日志位置。

5.如权利要求1‑4中任一项所述的方法,其特征在于,所述监控到所述第一节点和所述第二节点之间进行主从切换,包括:基于预设的配置信息,分别向所述第一节点和所述第二节点发送状态查询指令;其中,配置信息中至少包含所述第一节点的第一地址和所述第二节点的第二地址;

若在设定时长内接收到所述第二节点返回的第二状态查询响应,且未接收到所述第一节点返回的第一状态查询响应,则确定所述第一节点和所述第二节点之间完成主从切换,其中,所述第二状态查询响应用于表征所述第二节点为主节点。

6.如权利要求1‑4中任一项所述的方法,其特征在于,基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步,包括:对所述第二节点进行监听;

若监听到所述第二节点中发生数据库操作,则从所述目标日志位置开始,对所述第二节点进行增量同步。

7.如权利要求6所述的方法,其特征在于,所述监控到所述第一节点和所述第二节点之间进行主从切换之前,还包括:若监听到所述第一节点中执行数据库操作,则将数据库操作和所述第一日志位置,写入处理队列中;其中,所述第一日志位置是所述第一节点执行所述数据库操作后生成的;

基于所述处理队列,将所述数据库操作写入所述第二节点中,并将所述第一日志位置存储至指定存储位置。

8.如权利要求7所述的方法,其特征在于,还包括:

若从指定存储位置中,未获取到所述第一节点的第一日志位置,则在基于配置文件,确定对所述第一节点和所述第二节点进行全量同步后,得到所述第一日志位置;

基于所述第一日志位置,对所述第一节点和所述第二节点进行增量同步。

9.一种数据同步装置,其特征在于,包括:

存储器,用于存储可执行指令;

处理器,用于读取并执行存储器中存储的可执行指令,执行下列过程:获取第一节点与第二节点之间的位置对应关系,其中,所述第一节点为主节点,所述第二节点为从节点,所述位置对应关系中至少包含第一日志位置和对应的第二日志位置,所述第一日志位置用于表征所述第一节点的日志同步位置,所述第二日志位置用于表征对应的所述第二节点的日志同步位置;

若监控到所述第一节点和所述第二节点之间进行主从切换,则基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置;

基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步。

10.一种数据同步装置,其特征在于,包括:

获取单元,用于获取第一节点与第二节点之间的位置对应关系,其中,所述第一节点为主节点,所述第二节点为从节点,所述位置对应关系中至少包含第一日志位置和对应的第二日志位置,所述第一日志位置用于表征所述第一节点的日志同步位置,所述第二日志位置用于表征对应的所述第二节点的日志同步位置;

处理单元,用于若监控到所述第一节点和所述第二节点之间进行主从切换,则基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置;

同步单元,用于基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步。

说明书 :

一种数据同步方法及装置

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种数据同步方法及装置。

背景技术

[0002] 在业务端对源端数据库进行操作时,经常需要将对源端数据库的操作同步至目的端,这一过程称为数据同步。目的端可以是指需要使用源端数据库的数据的公共组件。以源端数据库采用关系型数据库管理系统(MySQL)数据库为例,目的端可以是MySQL、远程字典服务(Remote Dictionary Server,Redis)、分布式发布订阅消息系统(Kafka)等。
[0003] 源端数据库通常采用主从架构,主从架构使得数据可以从一个数据库服务器同步到另一个数据库服务器上。在进行数据同步的过程中,如果发生主从切换,由于新的主节点存在同步落后、数据写入等情况,因此,需要确定新的主节点的起始同步位置。
[0004] 目前,为避免数据丢失,在发生主从切换时,通常将新的主节点的数据库日志中,距离切换时刻设定时长的时刻对应的日志位置,作为新的主节点的起始同步位置,以避免数据丢失。但是,采用上述方式会导致数据重复,且同步耗时增加,同步延时增大,如果重复数据的数据量较大,会严重影响业务进行。

发明内容

[0005] 本申请提供了一种数据同步方法及装置,用以在发生主从切换时,快速恢复同步,同时降低数据丢失的可能性,提高数据同步的可用性。
[0006] 第一方面,本申请提供一种数据同步方法,包括:
[0007] 获取第一节点与第二节点之间的位置对应关系,其中,所述第一节点为主节点,所述第二节点为从节点,所述位置对应关系中至少包含第一日志位置和对应的第二日志位置,所述第一日志位置用于表征所述第一节点的日志同步位置,所述第二日志位置用于表征对应的所述第二节点的日志同步位置;
[0008] 若监控到所述第一节点和所述第二节点之间进行主从切换,则基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置;
[0009] 基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步。
[0010] 第二方面,本申请提供一种数据同步装置,包括:
[0011] 存储器,用于存储可执行指令;
[0012] 处理器,用于读取并执行存储器中存储的可执行指令,执行下列过程:
[0013] 获取第一节点与第二节点之间的位置对应关系,其中,所述第一节点为主节点,所述第二节点为从节点,所述位置对应关系中至少包含第一日志位置和对应的第二日志位置,所述第一日志位置用于表征所述第一节点的日志同步位置,所述第二日志位置用于表征对应的所述第二节点的日志同步位置;
[0014] 若监控到所述第一节点和所述第二节点之间进行主从切换,则基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置;
[0015] 基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步。
[0016] 第三方面,本申请提供一种数据同步装置,包括:
[0017] 获取单元,用于获取第一节点与第二节点之间的位置对应关系,其中,所述第一节点为主节点,所述第二节点为从节点,所述位置对应关系中至少包含第一日志位置和对应的第二日志位置,所述第一日志位置用于表征所述第一节点的日志同步位置,所述第二日志位置用于表征对应的所述第二节点的日志同步位置;
[0018] 处理单元,用于若监控到所述第一节点和所述第二节点之间进行主从切换,则基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置;
[0019] 同步单元,用于基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步。
[0020] 第四方面,一种存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行如上述任一项所述的数据同步方法。
[0021] 综上所述,本申请实施例中,获取第一节点与第二节点之间的位置对应关系,其中,第一节点为主节点,第二节点为从节点,位置对应关系中至少包含第一节点的日志同步位置,以及对应的第二节点的日志同步位置;若监控到第一节点和第二节点之间进行主从切换,则基于位置对应关系和第一节点的当前日志同步位置,得到第二节点的目标日志位置;基于目标日志位置,进行第一节点与第二节点之间的数据同步。这样,通过获取的位置对应关系,可以在发生主从切换后,快速确定新的主节点的目标日志位置,从而根据目标日志位置,快速恢复同步,避免了主从切换时发生数据丢失,提高了数据同步的可用性。

附图说明

[0022] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1A为本申请实施例中提供的第一种应用场景的示意图;
[0024] 图1B为本申请实施例中提供的第二种应用场景的示意图;
[0025] 图2为本申请实施例中提供的一种数据同步方法的流程示意图;
[0026] 图3为本申请实施例中提供的一种数据同步方法的逻辑示意图;
[0027] 图4为本申请实施例中提供的一种数据同步装置的结构示意图;
[0028] 图5为本申请实施例中提供的一种数据同步装置的结构示意图。

具体实施方式

[0029] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
[0030] 本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
[0031] 需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
[0032] 此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
[0033] 本申请中使用的术语“模块”,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
[0034] 以下对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
[0035] 数据同步:数据同步包括但不限于增量同步和全量同步,其中,全量同步为一次性同步所有的数据,增量同步为在第一次全量同步的基础上只同步更改数据,更改数据包括删除的数据、更新的数据和插入的数据。
[0036] 目前,现有的数据同步系统中,若发生主从切换,通常将新的主节点的数据库日志中,距离切换时刻之前某一时刻对应的位置,作为新的主节点的同步到的位置,以避免数据丢失。但是,采用上述方式会重复同步一段时间内的数据,如果这段时间内数据量比较大的话,会造成一定的耗时,可能会是几秒钟的时间,甚至更长,这就会导致这段时间内同步延时,可能会给业务带来很大的影响。
[0037] 以节点A为主节点,节点B为从节点为例,当节点A和节点B之间发生主从切换后,节点A成为从节点,节点B成为主节点,在发生主从切换之后,将节点B的数据库日志中,距离切换时刻之前1分钟对应的位置1,作为节点B的同步到的位置,进而基于位置1,对节点A进行数据同步。
[0038] 为了在发生主从切换时,快速恢复同步,同时降低数据丢失的可能性,本申请实施例中,获取第一节点与第二节点之间的位置对应关系,其中,第一节点为主节点,第二节点为从节点,位置对应关系中至少包含第一节点的日志同步位置,以及对应的第二节点的日志同步位置;若监控到第一节点和第二节点之间进行主从切换,则基于位置对应关系和第一节点的当前日志同步位置,得到第二节点的目标日志位置;基于目标日志位置,进行第一节点与第二节点之间的数据同步。这样,通过获取的位置对应关系,可以在发生主从切换后,快速确定新的主节点的目标日志位置,从而根据目标日志位置,快速恢复同步,避免了主从切换时发生数据丢失,提高了数据同步的可用性。
[0039] 以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0040] 参阅图1A所示,其为本申请实施例提供的第一种可能的应用场景示意图。该应用场景中包括但不限于业务网元110、数据库集群120和数据同步装置130。数据库集群120中至少包含第一节点121和第二节点122。
[0041] 其中,业务网元110可以使用数据库集群120中存储的数据,提供相应的业务,例如,账号管理业务等。作为一种可能的实现方式,第一节点121和第二节点122可以部署于同一数据库服务器中。
[0042] 作为另一种可能的实现方式,第一节点121和第二节点122也可以分别部署于不同的数据库服务器中。数据库集群120利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,以向用户提供相应的数据服务。
[0043] 本申请实施例中,数据库服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
[0044] 数据同步装置130,用于获取第一节点121与第二节点122之间的位置对应关系,在监控到第一节点121与第二节点122之间进行主从切换时,基于第一节点121与第二节点122之间的位置对应关系和旧主节点的当前日志同步位置,得到新主节点的目标日志位置,进而基于目标日志位置,进行第一节点与第二节点之间的数据同步。
[0045] 参阅图1B所示,其为本申请实施例提供的第二种可能的应用场景示意图。该应用场景中除业务网元110、数据库集群120、数据同步装置130之外,还包含公共组件140、业务网元150。
[0046] 其中,公共组件140使用数据库集群120中存储的数据,公共组件140可以是但不限于是MySQL、远程字典服务(Remote Dictionary Server,Redis)、分布式发布订阅消息系统(Kafka)等。业务网元150使用公共组件140中存储的数据,进行相关业务。
[0047] 参阅图2所示,其为本申请实施例中提供的一种数据同步方法的流程示意图,可以应用于数据同步装置。具体的,进行数据同步的流程如下:
[0048] S201、数据同步装置获取第一节点与第二节点之间的位置对应关系,其中,第一节点为主节点,第二节点为从节点,位置对应关系中至少包含第一日志位置和对应的第二日志位置,第一日志位置用于表征第一节点的日志同步位置,第二日志位置用于表征对应的第二节点的日志同步位置。
[0049] 示例性的,本申请实施例中,第一节点和第二节点中可以部署MYSQL数据库,也可以部署Oracle数据库。当第一节点和第二节点中部署MYSQL数据库时,采用二进制日志(binlog日志)。当第一节点和第二节点中部署Oracle数据库时,可以采用归档日志。下文中,仅以部署MYSQL数据库为例进行说明。
[0050] 在一些实施例中,数据同步装置获取第一节点与第二节点之间的位置对应关系,可以采用但不限于以下步骤:
[0051] A1、数据同步装置按照预设频率,通知所述第二节点返回第一节点的第一日志位置和第二节点的第二日志位置。
[0052] 示例性的,数据同步装置可以按照预设频率,向第二节点发送第一查询指令和第二查询指令,并接收第二节点基于第一查询指令返回的第一节点的第一日志位置,以及接收第二节点基于第二查询指令返回的第二节点的第二日志位置。
[0053] 第一查询指令可以采用“show slave status”指令,“show slave status”指令用于指示第二节点返回第一节点的第一日志位置。第二查询指令可以采用“show master status”指令,“show master status”指令用于指示第二节点返回第二节点的第二日志位置。
[0054] 示例性的,预设频率可以是每秒一次,也可以是每毫秒一次,本申请对此不作限制。
[0055] 本申请实施例中,第一日志位置中至少包含第一节点的数据库日志的日志名称和日志点(也可称为pos),日志点用于表征相应的数据库操作对应的记录,在数据库日志中的位置。
[0056] 例如,数据同步装置按照每秒一次的预设频率,向第二节点发送“show slave status”指令和“show master status”指令,并接收第二节点基于“show slave status”指令的第一节点的第一日志位置,以及接收第二节点基于“show master status”指令返回的第二节点的第二日志位置,其中,第一节点的第一日志位置为(日志名称:mysql‑bin.000009,pos:638931),第二节点的第二日志位置为(日志名称:mysql‑bin.000010,pos:385846)。
[0057] A2、数据同步装置关联记录第一日志位置和第二日志位置,得到位置对应关系。
[0058] 需要说明的是,本申请实施例中,位置对应关系可以存储于指定存储位置,指定存储位置可以包括但不限于是数据库或Redis。示例性的,指定存储位置中可以存储设定时间范围内的位置对应关系,例如,设定时间范围可以是一天内。
[0059] 例如,参阅表1所示,位置对应关系中,第3条记录表征,当第一日志位置为(日志名称:mysql‑bin.000009,pos:638931)时,第二日志位置为(日志名称:mysql‑bin.000010,pos:385846),第4条记录表征,当第一日志位置为(日志名称:mysql‑bin.000009,pos:640951)时,第二日志位置为(日志名称:mysql‑bin.000010,pos:387816),其它不再赘述。
[0060] 表1位置对应关系
[0061]
[0062] S202、若监控到第一节点和第二节点之间进行主从切换,则数据同步装置基于位置对应关系和第一节点的当前日志同步位置,得到第二节点的目标日志位置。
[0063] 在一些实施例中,数据同步装置监控到第一节点和所述第二节点之间进行主从切换,可以采用但不限于以下步骤:
[0064] B1、数据同步装置基于预设的配置信息,分别向第一节点和第二节点发送状态查询指令;其中,配置信息中至少包含第一节点的第一地址和第二节点的第二地址。
[0065] 本申请实施例中,状态查询指令可以采用“show slave status”指令。示例性的,若从节点接收到“show slave status”指令,则可以返回状态信息不为空的状态查询响应,该状态信息中可以包含但不限于相应的主节点的地址。若主节点接收到“show slave status”指令,则可以返回状态信息为空的状态查询响应。
[0066] 第一节点的第一地址可以采用但不限于第一节点的网际互连协议(Internet Protocol,IP)地址表示,第二节点的第二地址可以采用但不限于第二节点的IP地址表示。例如,第一节点的第一地址为1.1.1.1:3306,第二节点的第二地址为2.2.2.2:3306。
[0067] B2、若数据同步装置基于第二节点返回的第二状态查询响应,确定第一节点和第二节点之间完成主从切换,其中,第二状态查询响应用于表征第二节点为主节点。
[0068] 本申请实施例中,第一节点和第二节点之间进行主从切换,包含但不限于以下两种可能的情况:第一种可能的情况:第二节点成为新的主节点,第一节点限制使用;第二种可能的情况:第二节点成为新的主节点,第一节点成为新的从节点。
[0069] 本申请实施例中,第二状态查询响应用于表征第二节点为主节点,也可以理解为,第二状态查询响应中状态信息为空。
[0070] 在第一种可能的情况中,若数据同步装置在设定时长内接收到第二节点返回的第二状态查询响应,且未接收到第一节点返回的第一状态查询响应,则确定第一节点和第二节点之间完成主从切换。
[0071] 例如,假设,设定时长为1分钟,数据同步装置在1分钟内接收到第二节点返回的表征第二节点为主节点的第二状态查询响应,但未接收到第一节点返回的第一状态查询响应,则确定第一节点和第二节点之间完成主从切换。
[0072] 在第二种可能的情况中,若数据同步装置在设定时长内接收到第二节点返回的第二状态查询响应,且接收到第一节点返回的第一状态查询响应,则确定第一节点和第二节点之间完成主从切换,其中,所述第一状态查询响应表征第一节点为从节点。
[0073] 例如,假设,设定时长为1分钟,数据同步装置在1分钟内接收到第二节点返回的表征第二节点为主节点的第二状态查询响应,且接收到第一节点返回的表征第一节点为从节点的第一状态查询响应,则确定第一节点和第二节点之间完成主从切换。
[0074] 在一些实施例中,数据同步装置基于第二节点的目标日志位置,可以采用但不限于以下步骤:
[0075] C1、数据同步装置从指定存储位置,获取第一节点的当前日志同步位置。
[0076] 本申请实施例中,在第一节点和第二节点之间进行主从切换之前,数据同步装置获取并解析第一节点的数据库日志,并基于解析结果,对第一节点和第二节点进行数据同步。若第一节点和第二节点同步成功,则数据同步装置在指定存储位置中,记录第一节点的当前日志同步位置。示例性的,指定存储位置可以包括但不限于是数据库、Redis、文件。
[0077] 例如,数据同步装置从指定存储位置,获取第一节点的当前日志同步位置(日志名称:mysql‑bin.000009,pos:640951)。
[0078] C2、数据同步装置基于位置对应关系和当前日志同步位置,得到第二节点的目标日志位置。
[0079] 具体的,根据当前日志同步位置和位置对应关系,存在但不限于以下两种情况:
[0080] 情况一:若位置对应关系中包含当前日志同步位置,则数据同步装置将当前日志同步位置对应的第二节点的第二日志位置,作为第二节点的目标日志位置。
[0081] 例如,假设,当前日志同步位置为(pos:638931),位置对应关系中包含当前日志同步位置,数据同步装置将当前日志同步位置对应的第二节点的第二日志位置(日志名称:mysql‑bin.000010,pos:385846),作为第二节点的目标日志位置。
[0082] 情况二:若位置对应关系中未包含当前日志同步位置,则数据同步装置基于当前日志同步位置的记录时间,从位置对应关系中,确定第一节点的第三日志位置,并将第三日志位置对应的第二节点的第四日志位置,作为目标日志位置,其中,第三日志位置是指第一日志位置中距离记录时间最近的第一日志位置。
[0083] 例如,假设,当前日志同步位置为(pos:639158),位置对应关系中未包含当前日志同步位置,数据同步装置基于当前日志同步位置的记录时间,从位置对应关系中,确定第一节点的第三日志位置(日志名称:mysql‑bin.000009,pos:638931),并将第三日志位置对应的第二节点的第四日志位置(日志名称:mysql‑bin.000010,pos:385846),作为目标日志位置,其中,第三日志位置是指第一日志位置中距离记录时间最近的第一日志位置。
[0084] S203、数据同步装置基于目标日志位置,进行第一节点与第二节点之间的数据同步。
[0085] 第一节点和第二节点之间进行主从切换之后,第二节点成为新的主节点,数据同步装置可以对第二节点进行监听,若监听到第二节点中发生数据库操作,则从目标日志位置开始,对第二节点进行增量同步。
[0086] 需要说明的是,本申请实施例中,数据库操作可以包括但不限于:数据库结构变更操作,和/或,数据库数据操作。其中,数据库结构变更操作包括但不限于表的创建操作、表的修改操作等,数据库数据操作包括但不限于数据增加操作、数据删除操作、数据修改操作等。
[0087] 例如,数据同步装置可以对第二节点进行监听,若监听到第二节点中发生数据增加操作,则从目标日志位置(日志名称:mysql‑bin.000010,pos:385846)开始,对第二节点进行增量同步。
[0088] 在一些实施例中,数据同步装置监控到第一节点和第二节点之间进行主从切换之前,还可以对第一节点进行监听。相应的,若数据同步装置监听到第一节点中执行数据库操作,则将数据库操作和新的第一日志位置,写入处理队列中;其中,第一日志位置是第一节点执行数据库操作后生成的;基于处理队列,将数据库操作写入第二节点中,并将第一日志位置存储至指定存储位置。
[0089] 示例性的,指定存储位置可以包括但不限于是数据库或Redis。
[0090] 例如,数据同步装置监听到第一节点中执行数据删除操作,则将数据删除操作和第一日志位置,写入处理队列中;其中,第一日志位置是第一节点执行数据删除操作后生成的,然后,数据同步装置基于处理队列,将数据库操作写入第二节点中,并将第一日志位置存储至Redis中。
[0091] 在一些实施中,若指定存储位置中存在第一节点的第一日志位置,则说明数据同步装置不是初次启动。在实际应用中,可能因为故障导致数据同步装置重启,数据同步装置重启后,可以继续从上次同步到的位置继续同步,具备断点续传功能。
[0092] 若指定存储位置中不存在第一节点的第一日志位置,则说明数据同步装置第一次启动。
[0093] 具体的,若数据同步装置从指定存储位置中,未获取到第一节点的第一日志位置,则在基于配置文件,确定对第一节点和第二节点进行全量同步后,得到第一日志位置;基于第一日志位置,对第一节点和第二节点进行增量同步。
[0094] 例如,数据同步装置从指定存储位置中,未获取到第一节点的第一日志位置,则在基于配置文件,确定对第一节点和第二节点进行全量同步后,生成第一日志位置(日志名称:mysql‑bin.000010,pos:634891);基于第一日志位置,对第一节点和第二节点进行增量同步。
[0095] 下面结合具体的示例对本申请进行说明。
[0096] 以图1A所示的应用场景为例,第一节点为主节点,第二节点为从节点,业务网元可以根据数据库集群的虚拟IP地址(Virtual IP Address,VIP),对第一节点中数据进行操作。VIP指向数据库集群中的主节点,业务网元可以通过VIP对数据库集群中的数据进行操作。示例性的,当第一节点为主节点时,VIP指向第一节点,当第二节点为主节点时,VIP指向第二节点。
[0097] 数据同步装置第一次启动时,基于预设的配置信息中包含的第一节点的第一地址1.1.1.1,以及第二节点122的第二地址2.2.2.2,分别向第一节点和第二节点发送“show slave status”指令。若数据同步装置在设定时长内接收到第一节点返回的状态查询响应,以及接收到第二节点返回的状态查询响应,其中,第一节点返回的状态查询响应中包含的状态信息为空,第二节点返回的状态查询响应中包含的状态信息不为空,则确定第一节点为主节点。
[0098] 数据同步装置从指定存储位置中获取第一节点的第一日志位置,若未获取到第一节点的第一日志位置,则在基于配置文件,确定对第一节点和第二节点进行全量同步后,得到生成第一日志位置(日志名称:mysql‑bin.000009,pos:634891),基于第一日志位置,对第一节点和第二节点进行增量同步。
[0099] 参阅图3所示,在第一节点与第二节点发生主从切换时,数据同步装置、第一节点、第二节点之间的交互过程如下:
[0100] S301、数据同步装置从第一节点处,获取第一节点和第二节点之间的位置对应关系。在S301的执行过程中,若第一节点发生故障,则第二节点成为主节点。
[0101] 该步骤的详细描述参见S201,在此不再重复。
[0102] S302、数据同步装置监控到第一节点和第二节点之间进行主从切换时,基于位置对应关系和第一节点的当前日志同步位置,得到第二节点的目标日志位置。
[0103] 该步骤的详细描述参见S202,在此不再重复。
[0104] S303、数据同步装置基于目标日志位置,进行第一节点与第二节点之间的数据同步。
[0105] 该步骤的详细描述参见S203,在此不再重复。
[0106] 基于同一发明构思,参阅图4所示,本申请实施例提供一种数据同步装置,至少包括:
[0107] 存储器401,用于存储可执行指令;
[0108] 处理器402,用于读取并执行存储器中存储的可执行指令,执行下列过程:
[0109] 获取第一节点与第二节点之间的位置对应关系,其中,所述第一节点为主节点,所述第二节点为从节点,所述位置对应关系中至少包含第一日志位置和对应的第二日志位置,所述第一日志位置用于表征所述第一节点的日志同步位置,所述第二日志位置用于表征对应的所述第二节点的日志同步位置;
[0110] 若监控到所述第一节点和所述第二节点之间进行主从切换,则基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置;
[0111] 基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步。
[0112] 可选的,所述获取第一节点与第二节点之间的位置对应关系,处理器402用于:
[0113] 按照预设频率,通知所述第二节点返回第一节点的第一日志位置和第二节点的第二日志位置;
[0114] 关联记录所述第一日志位置和第二日志位置,得到日志位置关系。
[0115] 可选的,所述基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置,处理器402用于:
[0116] 从指定存储位置,获取所述第一节点的当前日志同步位置;
[0117] 基于所述位置对应关系和所述当前日志同步位置,得到所述第二节点的目标日志位置。
[0118] 可选的,基于所述位置对应关系和所述当前日志同步位置,得到所述第二节点的目标日志位置,处理器402用于:
[0119] 若所述位置对应关系中包含所述当前日志同步位置,则将所述当前日志同步位置对应的所述第二节点的第二日志位置,作为所述第二节点的目标日志位置;或者,[0120] 若所述位置对应关系中未包含所述当前日志同步位置,则基于所述当前日志同步位置的记录时间,从所述位置对应关系中,确定所述第一节点的第三日志位置,并将所述第三日志位置对应的所述第二节点的第四日志位置,作为所述目标日志位置,其中,所述第三日志位置是指第一日志位置中距离所述记录时间最近的第一日志位置。
[0121] 可选的,所述监控到所述第一节点和所述第二节点之间进行主从切换,处理器402用于:
[0122] 基于预设的配置信息,分别向所述第一节点和所述第二节点发送状态查询指令;其中,配置信息中至少包含所述第一节点的第一地址和所述第二节点的第二地址;
[0123] 若在设定时长内接收到所述第二节点返回的第二状态查询响应,且未接收到所述第一节点返回的第一状态查询响应,则确定所述第一节点和所述第二节点之间完成主从切换,其中,所述第二状态查询响应用于表征所述第二节点为主节点。
[0124] 可选的,基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步,处理器402用于:
[0125] 对所述第二节点进行监听;
[0126] 若监听到所述第二节点中发生数据库操作,则从所述目标日志位置开始,对所述第二节点进行增量同步。
[0127] 可选的,所述监控到所述第一节点和所述第二节点之间进行主从切换之前,处理器402用于:
[0128] 若监听到所述第一节点中执行数据库操作,则将数据库操作和所述第一日志位置,写入处理队列中;其中,所述第一日志位置是所述第一节点执行所述数据库操作后生成的;
[0129] 基于所述处理队列,将所述数据库操作写入所述第二节点中,并将所述第一日志位置存储至指定存储位置。
[0130] 可选的,处理器402还用于:
[0131] 若从指定存储位置中,未获取到所述第一节点的第一日志位置,则在基于配置文件,确定对所述第一节点和所述第二节点进行全量同步后,得到所述第一日志位置;
[0132] 基于所述第一日志位置,对所述第一节点和所述第二节点进行增量同步。
[0133] 收发机403,用于在处理器402的控制下接收和发送数据。
[0134] 其中,在图4中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器402代表的一个或多个处理器和存储器401代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机403可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器402负责管理总线架构和通常的处理,存储器401可以存储处理器402在执行操作时所使用的数据。
[0135] 基于同一发明构思,本申请实施例中,提供一种数据同步装置,参阅图5所示,至少包括:获取单元501、处理单元502和同步单元503。
[0136] 获取单元501,用于获取第一节点与第二节点之间的位置对应关系,其中,所述第一节点为主节点,所述第二节点为从节点,所述位置对应关系中至少包含第一日志位置和对应的第二日志位置,所述第一日志位置用于表征所述第一节点的日志同步位置,所述第二日志位置用于表征对应的所述第二节点的日志同步位置;
[0137] 处理单元502,用于若监控到所述第一节点和所述第二节点之间进行主从切换,则基于所述位置对应关系和所述第一节点的当前日志同步位置,得到所述第二节点的目标日志位置;
[0138] 同步单元503,用于基于所述目标日志位置,进行所述第一节点与所述第二节点之间的数据同步。
[0139] 获取单元501、处理单元502和同步单元503之间相互配合,以实现数据同步装置在上述各个实施例中的功能。
[0140] 基于同一发明构思,本申请实施例提供一种存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行上述流程中数据同步装置实现的任一项方法。
[0141] 对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0142] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者一个操作与另一个实体或者另一个操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。
[0143] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0144] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0145] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0146] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0147] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0148] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。