CN114595286A - 一种数据同步方法、装置、电子设备及存储介质 - Google Patents
一种数据同步方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114595286A CN114595286A CN202011399280.XA CN202011399280A CN114595286A CN 114595286 A CN114595286 A CN 114595286A CN 202011399280 A CN202011399280 A CN 202011399280A CN 114595286 A CN114595286 A CN 114595286A
- Authority
- CN
- China
- Prior art keywords
- data
- page
- page number
- range
- tablespace
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Abstract
本申请公开了一种数据同步方法、装置、电子设备及存储介质,该方法包括:扫描主数据库的缓存实例中的数据页链表;根据数据页链表中各数据页对应的表空间标识和页码确定每个表空间标识对应的页码集;根据每个表空间标识对应的页码集,确定主数据文件中每个表空间标识对应的表空间的目标数据记录范围;根据主数据文件中每个表空间标识对应的表空间的目标数据记录范围,生成主数据库的缓存状态信息;确定从数据文件中与该缓存状态信息相匹配的待加载数据页,将待加载数据页加载到从数据库的缓存中。本申请可精准、快速、主动地在从数据库恢复主数据库的缓存数据,确保了在发生HA后对用户读写请求的快速响应,避免了系统访问性能的降低。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种数据同步方法、装置、电子设备及存储介质。
背景技术
主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主数据库服务器中的数据自动复制到从数据库服务器之中。MySQL是一种关系型数据库管理系统,MySQLHA(Highly Available)是指为保证高可用,当MySQL的主数据库因某些原因宕机了,会将主数据库的读写业务访问流量切换至备用的从数据库,让从数据库继续提供服务。
相关技术中,MySQL主从复制的基础是主数据库对修改记录二进制日志,从数据库通过主数据库的二进制日志自动执行更新。MySQL主数据库通常接受业务的读写访问,从数据库在通过二进制日志文件回放主数据库数据变更操作的同时通常接受只读访问或不接受访问,从而MySQL主数据库的缓存与从数据库的缓存是不同的。当MySQL发生HA时,由于从数据库的缓存与主数据库的缓存不相同,从数据库需要将读写访问需要的数据从其磁盘加载到其缓存中,这个过程通常需要长达数小时的时间才能完成,导致系统无法快速响应用户的读写请求,系统的访问性能降低。
发明内容
为了解决现有技术的问题,本申请实施例提供了一种数据同步方法、装置、服务器及存储介质。所述技术方案如下:
一方面,提供了一种数据同步方法,所述方法包括:
扫描主数据库的缓存实例中的数据页链表;
根据所述数据页链表中各数据页对应的表空间标识和页码,确定每个表空间标识对应的页码集;
根据每个表空间标识对应的页码集,确定主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围;
根据所述主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围,生成所述主数据库的缓存状态信息;
确定从数据文件中与所述主数据库的缓存状态信息相匹配的待加载数据页,将所述待加载数据页加载到从数据库的缓存中。
另一方面,提供了一种数据同步装置,所述装置包括:
扫描模块,用于扫描主数据库对应数据库实例的缓存中的数据页链表;
第一确定模块,用于根据所述数据页链表中各数据页对应的表空间标识和页码,确定每个表空间标识对应的页码集;
第二确定模块,用于根据每个表空间标识对应的页码集,确定主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围;
缓存状态生成模块,用于根据所述主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围,生成所述主数据库的缓存状态信息;
同步模块,用于确定从数据文件中与所述主数据库的缓存状态信息相匹配的待加载数据页,将所述待加载数据页加载到从数据库的缓存中。
作为一个可能的实施方式,所述第二确定模块包括:
第三确定模块,用于针对每个表空间标识,确定主数据文件中所述表空间标识对应的表空间,所述表空间中的多个数据页按照逻辑顺序构成树形数据结构;
页码范围确定模块,用于根据所述表空间标识对应的页码集中页码在所述树形数据结构中对应的叶子节点的相邻关系,确定至少一个页码范围;每个页码范围由最小页码和最大页码限定;
第四确定模块,用于确定每个页码范围中,最小页码对应的第一数据页和最大页码对应的第二数据页;
第五确定模块,用于根据所述第一数据页中主键值最小的第一数据记录以及所述第二数据页中主键值最大的第二数据记录,得到每个页码范围对应的数据记录子范围;
第六确定模块,用于根据所述每个页码范围对应的数据记录子范围,得到所述表空间的目标数据记录范围。
作为一个可能的实施方式,所述页码范围确定模块包括:
结构体创建模块,用于创建用于表征页码范围的结构体,所述结构体包括最小页码变量和最大页码变量;
选取模块,用于从所述表空间标识对应的页码集中选取第一页码,若所述树形数据结构中存在所述第一页码对应的第一叶子节点,则将所述第一页码分别赋值给所述最小页码变量和最大页码变量;
删除模块,用于从所述页码集中删除所述第一页码;
递归查找模块,用于基于所述树形数据结构向所述第一叶子节点左侧的叶子节点以及右侧的叶子节点分别进行递归查找,在递归查找过程中,若相邻叶子节点对应的页码在所述页码集中,则将所述结构体中相对应变量的值更新为所述相邻叶子节点对应的页码,并从所述页码集中删除所述相邻叶子节点对应的页码,若相邻叶子节点对应的页码不在所述页码集中,则结束所述递归查找;
循环模块,用于在所述递归查找结束时,若所述页码集不为空,则循环执行所述创建结构体以及对所述结构体中变量的值进行赋值和更新的步骤,直至所述页码集为空。
作为一个可能的实施方式,所述缓存状态生成模块包括:
表名称确定模块,用于确定所述每个表空间标识在主数据文件中对应的表空间的表名称;
索引名称确定模块,用于确定每个表空间的目标数据记录范围中各数据记录子范围对应的索引名称;
生成子模块,用于根据每个表空间的表名称、每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围,生成所述主数据库的缓存状态信息。
作为一个可能的实施方式,所述生成子模块包括:
查询语句解析模块,用于将每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围解析为查询语句,得到每个表空间对应的查询语句集;
第七确定模块,用于根据每个表空间的表名称和每个表空间对应的查询语句集,得到所述主数据库的缓存状态信息。
作为一个可能的实施方式,所述装置还包括:
连接建立模块,用于通过所述从数据库的传输线程与所述主数据库建立连接;
请求发送模块,用于由所述从数据库的传输线程向所述主数据库发送缓存状态信息获取请求;
缓存状态信息发送模块,用于在所述主数据库的缓存状态信息满足预设条件时,将所述主数据库的缓存状态信息发送给所述从数据库。
作为一个可能的实施方式,所述同步模块包括:
读取模块,用于读取所述主数据库的缓存状态信息,得到表空间的目标数据记录范围;
定位模块,用于在从数据文件的匹配树形数据结构中,定位与所述目标数据记录范围相匹配的目标叶子节点范围;所述匹配树形数据结构与所述目标数据记录范围的表空间相匹配;
待加载数据页获取模块,用于根据所述目标叶子节点范围内各叶子节点的链接指针,获取所述目标叶子节点范围内的数据页,得到所述待加载数据页。
另一方面,提供了一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现上述数据同步方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的数据同步方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的数据同步方法。
本申请实施例通过扫描主数据库的缓存实例中的数据页链表,根据数据页链表中各数据页对应的表空间标识和页码确定每个表空间标识对应的页码集,并根据每个表空间标识对应的页码集确定主数据文件中每个表空间标识对应表空间的目标数据记录范围,根据该表空间的目标数据记录范围生成主数据库的缓存状态信息,进而确定从数据文件中与主数据库的缓存状态信息相匹配的待加载数据页,并将该待加载数据页加载到从数据库的缓存中,从而可以精准、快速、主动地在从数据库恢复主数据库的缓存数据,避免了用主数据库业务流量被动地对从数据库缓存池进行预热的漫长过程,确保了在发生HA之后系统对用户读写请求的快速响应,避免了系统访问性能的降低,极大提高了MySQL发生HA之后的用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种数据同步方法的流程示意图;
图3是本申请实施例提供的确定主数据文件中每个表空间标识对应表空间的目标数据记录范围的一种可选流程示意图;
图4是本申请实施例提供的根据表空间标识对应的页码集中页码在树形数据结构中对应的叶子节点的相邻关系确定至少一个页码范围的一种可选流程示意图;
图5是本申请实施例提供的主数据库本地的ib_bp_info文件中存储的缓存状态信息的一种示例;
图6是本申请实施例提供的另一种数据同步方法的流程示意图;
图7是本申请实施例提供的确定从数据文件中与主数据库的缓存状态信息相匹配的待加载数据页的一种可选流程示意图;
图8是本申请实施例提供的一种数据同步装置的结构框图;
图9是本申请实施例提供的一种电子设备的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,其所示为本申请实施例提供的一种实施环境示意图,该实施环境可以包括主数据库110和从数据库120。主数据库110用于接受业务的读写访问,从数据库120作为主数据库的备份,用于在主数据库发生宕机时继续提供主数据库所提供的服务。
在一个可能的实施方式中,上述主数据库110和从数据库120均可以是区块链系统中的节点设备,能够将获取到以及生成的信息共享给区块链系统中的其他节点设备,实现多个节点设备之间的信息共享。区块链系统中的多个节点设备可以配置有同一条区块链,该区块链由多个区块组成,并且前后相邻的区块具有关联关系,使得任一区块中的数据被篡改时都能通过下一区块检测到,从而能够避免区块链中的数据被篡改,保证区块链中数据的安全性和可靠性。
所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库管理系统(英语:Database ManagementSystem,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible Markup Language,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(Structured Query Language)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本申请实施例中,主数据库110和从数据库120均可以为关系型数据库管理系统MySQL。主数据库110和从数据库120可以为独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
下面对本申请实施例涉及的几个相关概念进行介绍。
B+树是一种树形数据结构,是B树的一种变形形式,B+树上的叶子结点存储主键值以及相应的数据记录,叶子结点以上各层作为索引使用。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度,通常用于数据库和操作系统的文件系统中。
InnoDB是MySQL的数据库引擎之一,现为MySQL的默认存储引擎。InnoDB的不同数据文件对应不同的表空间,用表空间标识(SpaceID)来区分不同的表空间。表空间对应外存中的一部分存储空间,且不同表空间对应的存储空间不同。表空间是一种逻辑存储概念,表空间中的数据实际上存储在表空间对应的存储空间中,且对每个表空间进行数据的读写,相当于是对该表空间在外存中对应的存储空间进行数据的读写。
InnoDB的数据文件由多个B+树组成,所有数据存储在B+树叶子节点层,相邻叶子节点间通过双向链表相连。B+树由数据页(page)组成,每个节点对应一个page,每个page有唯一的页码(PageNumber),用SpaceID+PageNumber可以唯一标识InnoDB数据文件中的一个数据页。
Buffer Pool(简称为BP)是InnoDB存储引擎带的数据页缓存池,查询或更新数据的时候,需要在缓存池BP中对InnoDB的数据页进行操作,若访问的数据页已经在缓存池BP中时,直接对该数据页进行操作即可,若访问的数据页不在缓存池BP中,则需要从InnoDB的数据文件(存储在相应的外部磁盘中)中读取该数据页到缓存池BP中,然后再进行数据操作。
缓存池BP中存放的内容受实例的使用场景影响,不同流量访问下BP存放的内容不同。BP在实现上由多个缓存实例instance组成,每个缓存实例分别由Flush链表、LRU链表、Free链表等链表组成。其中,Free链表中存放的都是未曾使用的空闲Page,InnoDB需要Page时从Free链表中获取,如果Free链表为空,即没有任何空闲Page,则会从LRU链表和Flush链表中通过淘汰旧Page和Flush脏Page来回收Page。LRU链表用于缓存自数据文件中新读取进来的Page,并通过LRU(Least Recently Used,最近最少使用)策略对这些Page进行管理。Free链表用于保存被修改过且还没来得及被flush到磁盘上的脏数据页。
缓存池预热即Bufferpoolwarmup是指将热点数据加载到缓存池中的过程。
相关技术中,当MySQL发生HA时,由于从数据库的缓存与主数据库的缓存不相同,从数据库需要将读写访问需要的数据从其磁盘加载到其缓存中,从数据库通常需要长达数小时的时间才能完成缓存池预热,在这段时间内系统无法快速响应用户的读写请求,用户将明显体验到系统的访问性能降低。
为了缩短在MySQL发生HA之后从数据库缓存池预热的时间,降低HA对系统访问性能的影响,本申请实施例提供了一种数据同步方法,该方法可以将主数据库的缓存同步到从数据库的缓存中,从而可以精准、快速、主动地在从数据库恢复主数据库的缓存数据,避免了用主数据库业务流量被动地对从数据库缓存池进行预热的漫长过程,确保了在发生HA之后系统对用户读写请求的快速响应,避免了系统访问性能的降低,极大提高了MySQL发生HA之后的用户体验。
在实现本申请的过程中发明人发现,MySQL支持缓存池预热功能,用于缩短缓存实例重启以后的缓存池预热的时间,具体为在缓存实例上运行bufferpooldump命令时将缓存池所有缓存实例中LRU链表的数据页的表空间标识和页码导出到本地磁盘的ib_buffer_pool文件中,在需要恢复缓存池的状态时,调用bufferpoolload命令将该ib_buffer_pool文件中所有数据页依次加载到缓存池中。ib_buffer_pool文件中采用SpaceID+PageNumber的方式来描述缓存池中每个数据页在外部数据文件中的位置。然而,由于MySQL主数据库对应的数据文件(以下称为主数据文件)与从数据库对应的数据文件(以下称为从数据文件)只是在内容上相同,但在数据分布上完全不同,也即主数据文件的SpaceID和PageNumber与从数据文件的SpaceID和PageNumber并不一一对应,从而无法使用主数据库的ib_buffer_pool文件在从数据库上进行缓存池预热。
鉴于此,请参阅图2,其所示为本申请实施例提供的一种数据同步方法的流程示意图,该方法可以应用于包括主数据库和从数据库的系统。需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
步骤S201,扫描主数据库的缓存实例中的数据页链表。
其中,数据页链表为LRU链表,该LRU链表中的每个数据页均对应有表空间标识Space ID和页码PageNumber。上述扫描可以是实时扫描,也可以根据实际需要设定扫描周期以进行定期扫描,例如每天扫描一次,或者每周扫描一次等等。
步骤S203,根据所述数据页链表中各数据页对应的表空间标识和页码,确定每个表空间标识对应的页码集。
具体的,在扫描LRU链表过程中,获取LRU链表中每个数据页的表空间标识SpaceID和页码PageNumber,并根据表空间标识Space ID和页码PageNumber,确定每个表空间标识对应的页码集,也即基于表空间标识Space ID对页码PageNumber进行聚类,将对应相同表空间标识Space ID的页码PageNumber作为同一类放入一个页码集中,从而可以得到每个表空间标识对应的页码集。
实际应用中,可以键值对形式存储表空间标识与该表空间标识对应的页码集,也即以Space ID作为key,以该Space ID对应的页码集作为value进行对应存储(key=SpaceID,value={PageNumber})。
步骤S205,根据每个表空间标识对应的页码集,确定主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围。
作为一个可能的实施方式,针对每个表空间标识,可以采用图3所示的方法确定主数据文件中每个表空间标识对应表空间的目标数据记录范围,该方法可以包括:
S301,针对每个表空间标识,确定主数据文件中所述表空间标识对应的表空间。
其中,表空间中的多个数据页按照逻辑顺序构成树形数据结构,本申请实施例中该树形数据结构可以为B+树结构。
S303,根据所述表空间标识对应的页码集中页码在所述树形数据结构中对应的叶子节点的相邻关系,确定至少一个页码范围。
其中,每个页码范围由最小页码和最大页码限定。
B+树结构中叶子节点层的节点为叶子节点,中间节点和根节点不是叶子节点,在B+树结构中数据页存储在叶子节点层,且相邻叶子节点间通过双向链表相连。在叶子节点上,数据页里面的数据记录会按照主键值的大小按照从小到大顺序组成一个单向链表,且下一个叶子节点上的主键值大于上一个叶子节点上的主键值,每个数据页还会有一个最小记录和最大记录,最小记录存储该数据页的最小主键值,最大记录存储该数据页的最大主键值,该最小记录和最大记录用来标识该数据页的边界,便于查询。
作为一个可能的实施方式,在根据表空间标识对应的页码集中页码在树形数据结构中对应的叶子节点的相邻关系确定至少一个页码范围时可以采用图4所示的方法,包括:
S401,创建用于表征页码范围的结构体,所述结构体包括最小页码变量和最大页码变量。
示例性的,可以创建名为range的结构体(left_page_no,right_page_no),其中,left_page_no为最小页码变量,right_page_no为最大页码变量。
S403,从所述表空间标识对应的页码集中选取第一页码,若所述树形数据结构中存在所述第一页码对应的第一叶子节点,则将所述第一页码分别赋值给所述最小页码变量和最大页码变量。
其中,第一页码可以是表空间标识对应的页码集中的任一页码。
具体的,key=Space ID,value={PageNumber},对于每个Space ID的{PageNumber},从该{PageNumber}中任选一个页码X,判断该页码X在该Space ID对应表空间的B+树结构中是否存在相匹配的叶子节点X,若存在叶子节点X则表明该页码X对应的数据页存储在叶子节点X上,此时可以将页码X分别赋值给left_page_no和right_page_no,也即此时left_page_no=页码X,right_page_no=页码X,并执行步骤S405至步骤S407。若B+树结构中不存与页码X相匹配的叶子节点,则将该页码X从该Space ID的页码集{PageNumber}中删除,并从删除后的{PageNumber}中再任一选取一个页码重复执行本步骤。
S405,从所述页码集中删除所述第一页码。
S407,基于所述树形数据结构向所述第一叶子节点左侧的叶子节点以及右侧的叶子节点分别进行递归查找,在递归查找过程中,若相邻叶子节点对应的页码在所述页码集中,则将所述结构体中相对应变量的值更新为所述相邻叶子节点对应的页码,并从所述页码集中删除所述相邻叶子节点对应的页码,若相邻叶子节点对应的页码不在所述页码集中,则结束所述递归查找。
具体的,可以先向第一叶子节点左侧的叶子节点进行左递归查找,在左递归查找结束后再向第一叶子节点右侧的叶子节点进行右递归查找,当右递归查找结束时结束当前对应于第一叶子节点的递归查找。当然,也可以先向第一叶子节点右侧的叶子节点进行右递归查找,在右递归查找结束后再向第一叶子节点左侧的叶子节点进行左递归查找,当左递归查找结束时结束当前对应于第一叶子节点的递归查找。
左递归查找的过程如下:
(1)判断作为第一叶子节点左邻居的叶子节点Y左对应的页码Y左是否在页码集{PageNumber}中,若在,则执行步骤(2)至步骤(3),若不在,则结束该左递归查找。
(2)将left_page_no的值更新为该叶子节点Y左对应的页码Y左,即left_page_no=页码Y左,同时将页码Y左从页码集{PageNumber}中删除。
(3)将叶子节点Y左的左邻居叶子节点Z左作为步骤(1)中的第一叶子节点,重复执行上述步骤(1)。
右递归查找的过程如下:
(1)判断作为第一叶子节点右邻居的叶子节点Y右对应的页码Y右是否在页码集{PageNumber}中,若在,则执行步骤(2)至步骤(3),若不在,则结束该右递归查找。
(2)将right_page_no的值更新为该叶子节点Y右对应的页码Y右,即right_page_no=页码Y右,同时将页码Y右从页码集{PageNumber}中删除。
(3)将叶子节点Y右的右邻居叶子节点Z右作为步骤(1)中的第一叶子节点,重复执行上述步骤(1)。
S409,在所述递归查找结束时,判断所述页码集是否为空,若不为空,则循环执行所述创建结构体以及对所述结构体中变量的值进行赋值和更新的步骤,直至所述页码集为空。
具体的,在每次递归查找结束时,可以得到对应该次递归查找的range(left_page_no,right_page_no),可以将该表空间标识项下所有的range(left_page_no,right_page_no)以键值对的形式进行存储,以表空间标识Space ID为key,以所有range(left_page_no,right_page_no)构成的数组为value,示例性的可以表示为key=Space ID,value=vector<range>,从而对应每个表空间标识可以确定出至少一个页码范围range(left_page_no,right_page_no)。
S305,确定每个页码范围中,最小页码对应的第一数据页和最大页码对应的第二数据页。
具体的,针对每个range(left_page_no,right_page_no),根据该range中的left_page_no可以从对应的B+树中读取到该相应的数据页,根据该range中的right_page_no可以从对应的B+树中读取到该相应的数据页,从而得到最小页码对应的第一数据页和最大页码对应的第二数据页。
S307,根据所述第一数据页中主键值最小的第一数据记录以及所述第二数据页中主键值最大的第二数据记录,得到每个页码范围对应的数据记录子范围。
也即,每个页码范围对应的数据记录子范围为<第一数据页中主键值最小的第一数据记录,第二数据页中主键值最大的第二数据记录>。
S309,根据所述每个页码范围对应的数据记录子范围,得到所述表空间的目标数据记录范围。
具体的,每个表空间的目标数据记录范围包括该表空间对应的各数据记录子范围。
步骤S207,根据所述主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围,生成所述主数据库的缓存状态信息。
其中,主数据库的缓存状态信息表征主数据库的缓存实例中实际缓存的数据页。作为一个可能的实施方式中,可以结合目标数据记录范围所包含的各数据记录子范围来生成主数据库的缓存状态信息,具体包括:
确定每个表空间标识在主数据文件中对应的表空间的表名称。
确定每个表空间的目标数据记录范围中各数据记录子范围对应的索引名称;由于每个表空间都有很多个索引,每个索引都对应一棵B+树,因此对于每个数据记录子范围,需要记录该数据记录子范围对应的索引名称,以便后续通过该索引名称在从数据文件的表空间中找到相应的B+树。
根据每个表空间的表名称、每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围,生成所述主数据库的缓存状态信息。具体的,可以建立表名称、数据记录子范围以及相应的索引名称之间的映射关系,并将该映射关系存储至主数据库本地的ib_bp_info文件中,如图5所示为主数据库本地的ib_bp_info文件中存储的缓存状态信息的一种示例。
作为另一个可能的实施方式,在根据每个表空间的表名称、每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围,生成所述主数据库的缓存状态信息时,还可以将每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围解析为查询语句,得到每个表空间对应的查询语句集;然后根据每个表空间的表名称和每个表空间对应的查询语句集,得到所述主数据库的缓存状态信息。示例性的,上述查询语句可以为结构化查询语句,以结构化查询语句为例,可以解析为以下结构化查询语句:select index_column from table use(index)where(key between left_value andright_value),其中,left_value为数据记录子范围中的第一数据记录,right_value为相应数据记录子范围中的第二数据记录。
作为一个可能的实施方式,在生成主数据的缓存状态信息之前,还可以判断当前是否满足预设的生成条件,在满足预设的生成条件时根据主数据文件中每个表空间标识对应的表空间的目标数据记录范围生成主数据库的缓存状态信息。其中,预设的生成条件可以是达到了预设生成时间间隔,也即可以每隔预设生成时间间隔生成主数据库的缓存状态信息;预设的生成条件还可以是主数据库的缓存中缓存数据的变化量达到预设变化量阈值,当达到预设变化量阈值时触发生成主数据库的缓存状态信息。
步骤S209,确定从数据文件中与所述主数据库的缓存状态信息相匹配的待加载数据页,将所述待加载数据页加载到从数据库的缓存中。
本申请实施例中,可以将主数据库的缓存状态信息传输给从数据库,以使得从数据库根据主数据库的缓存状态信息将相匹配的数据页至从数据文件加载到从数据库的缓存中,实现在从数据库缓存中对主数据库缓存的恢复。
为了提高系统效率、避免出错风险以及频繁手动拷贝存在的安全隐患,作为一个可能的实施方式,如图6提供的另一种数据同步方法的流程示意图,在确定从数据文件中与主数据库的缓存状态信息相匹配的待加载数据页之前,该方法还可以包括:
S601,通过从数据库的传输线程与主数据库建立连接。
具体的,从数据库上除了slave IO、slave SQL、slave worker线程外,可以新建一种与slave IO线程相似,用于与主数据库建立连接的传输线程slave transmit,该传输线程slave transmit在从数据库启动时与从数据库的其他线程一同启动,在从数据库停止运行时与从数据库的其他线程一同关闭,从而通过该传输线程slave transmit与主数据库建立起连接,示例性的,该连接可以但不限于包括TCP连接。
S603,由所述从数据库的传输线程向所述主数据库发送缓存状态信息获取请求。
具体的,从数据库的传输线程slave transmit负责向主数据库发送缓存状态信息获取请求,例如主数据库的缓存状态信息存储在本地的ib_bp_info文件中,传输线程slavetransmit可以向主数据库发送ib_bp_info文件的获取请求。示例性的,从数据库的传输线程slave transmit可以按照预设时间间隔定期向主数据库发送缓存状态获取请求,该预设时间间隔可以根据实际需要进行设定,一般预设时间间隔设定的越短,从数据库与主数据库的通信越及时,从而可以确保将主数据库的缓存状态信息及时传送给从数据库,有利于实现从数据库的缓存与主数据库的高同步性。
S605,在所述主数据库的缓存状态信息满足预设条件时,将所述主数据库的缓存状态信息发送给所述从数据库。
具体的,可以在响应上述缓存状态获取请求时,判断主数据库的缓存状态信息是否满足预设条件,在满足该预设条件时,将主数据库的缓存状态信息发送给从数据库。其中,预设条件可以是当前尚有未发送的缓存状态信息,也即当有未发送的缓存状态信息时,将该缓存状态信息发送给从数据库,若没有未发送的缓存状态信息,则可以向从数据的传输线程返回没有更新信息的响应。
通过上述传输线程对主数据库的缓存状态信息的自动拷贝传输来取代运维手动拷贝该信息的频繁工作,提高了系统效率,避免了出错风险并规避了频繁远程拷贝的安全隐患。
示例性的,从数据库在接收到主数据库的缓存状态信息后,可以根据该主数据库的缓存状态信息进行主数据缓存的恢复。实际应用中,主数据库缓存在从数据库的恢复时机可以因应用场景的不同而不同,例如,对于从数据库无读写流量、用户对HA后数据访问性能敏感的场景,可以在每次有新的缓存状态信息如ib_bp_info文件发送到从数据库时执行前述的步骤S209以在从数据库进行主数据缓存的恢复,从而实现主数据库缓存状态的实时回放,实时回放因会增加从数据库的IO,从而一定程度上增加了系统的成本;而对于从数据库有读写流量或者对系统成本敏感的场景,可以在系统发生HA后再执行前述的步骤S209以在从数据库进行主数据库缓存的恢复。
作为一个可能的实施方式,上述步骤S209在确定从数据文件中与主数据库的缓存状态信息相匹配的待加载数据页时可以采用图7所示的方法,包括以下步骤:
S701,读取所述主数据库的缓存状态信息,得到表空间的目标数据记录范围。
S703,在从数据文件的匹配树形数据结构中,定位与所述目标数据记录范围相匹配的目标叶子节点范围。
其中,所述匹配树形数据结构与所述目标数据记录范围的表空间相匹配。
S705,根据所述目标叶子节点范围内各叶子节点的链接指针,获取所述目标叶子节点范围内的数据页,得到所述待加载数据页。
由于该待加载数据页是基于目标数据记录范围在从数据文件中确定的,从而可以很好的解决主从数据文件分布不同对待加载数据页确定准确性的影响,确保了将主数据库的缓存完全准确的恢复到从数据库的缓存中。
以图5所示主数据库的缓存状态信息为例,基于表名称可以在从数据文件中找到与该表名称相匹配的表空间,然后针对该表名称对应的每个索引名称,在从数据文件中找到与该索引名称对应B+树,进而在该B+树中通过二分查找,将该索引名称对应的数据记录子范围中的第一数据记录(即left_page_no的值,)和第二数据记录(即right_page_no的值)分别定位到该B+树的相应叶子节点上,可以得到对应该数据记录子范围的叶子节点子范围(left leaf page,right leaf page),从而可以利用该叶子节点子范围(left leafpage,right leaf page)内叶子节点之间的双向指针获取该叶子节点子范围内各叶子节点上的数据页作为待加载数据页。
作为另一个可能的实施方式,在主数据库的缓存状态信息被解析为前述的查询语句集如结构化查询语句集的情形下,可以在从数据库上直接运行该查询语句集中的查询语句如结构化查询语句SQL语句,通过这些查询语句的运行可以在从数据库的缓存中快速恢复主数据的缓存状态。
由本申请实施例的上述技术方案可见,本申请实施例不仅可以将主数据库的缓存同步到从数据库的缓存中,而且可以在从数据库对主数据库的缓存进行精准、快速、主动的恢复,避免了用主数据库业务流量被动地对从数据库缓存进行预热的漫长过程,极大的提高了MySQL HA之后的用户体验。
与上述几种实施例提供的数据同步方法相对应,本申请实施例还提供一种数据同步装置,由于本申请实施例提供的数据同步装置与上述几种实施例提供的数据同步方法相对应,因此前述数据同步方法的实施方式也适用于本实施例提供的数据同步装置,在本实施例中不再详细描述。
请参阅图8,其所示为本申请实施例提供的一种数据同步装置的结构示意图,该装置800具有实现上述方法实施例中数据同步方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图8所示,该装置800可以包括:
扫描模块810,用于扫描主数据库对应数据库实例的缓存中的数据页链表;
第一确定模块820,用于根据所述数据页链表中各数据页对应的表空间标识和页码,确定每个表空间标识对应的页码集;
第二确定模块830,用于根据每个表空间标识对应的页码集,确定主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围;
缓存状态生成模块840,用于根据所述主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围,生成所述主数据库的缓存状态信息;
同步模块850,用于确定从数据文件中与所述主数据库的缓存状态信息相匹配的待加载数据页,将所述待加载数据页加载到从数据库的缓存中。
作为一个可能的实施方式,第二确定模块830可以包括:
第三确定模块,用于针对每个表空间标识,确定主数据文件中所述表空间标识对应的表空间,所述表空间中的多个数据页按照逻辑顺序构成树形数据结构;
页码范围确定模块,用于根据所述表空间标识对应的页码集中页码在所述树形数据结构中对应的叶子节点的相邻关系,确定至少一个页码范围;每个页码范围由最小页码和最大页码限定;
第四确定模块,用于确定每个页码范围中,最小页码对应的第一数据页和最大页码对应的第二数据页;
第五确定模块,用于根据所述第一数据页中主键值最小的第一数据记录以及所述第二数据页中主键值最大的第二数据记录,得到每个页码范围对应的数据记录子范围;
第六确定模块,用于根据所述每个页码范围对应的数据记录子范围,得到所述表空间的目标数据记录范围。
作为一个可能的实施方式,页码范围确定模块可以包括:
结构体创建模块,用于创建用于表征页码范围的结构体,所述结构体包括最小页码变量和最大页码变量;
选取模块,用于从所述表空间标识对应的页码集中选取第一页码,若所述树形数据结构中存在所述第一页码对应的第一叶子节点,则将所述第一页码分别赋值给所述最小页码变量和最大页码变量;
删除模块,用于从所述页码集中删除所述第一页码;
递归查找模块,用于基于所述树形数据结构向所述第一叶子节点左侧的叶子节点以及右侧的叶子节点分别进行递归查找,在递归查找过程中,若相邻叶子节点对应的页码在所述页码集中,则将所述结构体中相对应变量的值更新为所述相邻叶子节点对应的页码,并从所述页码集中删除所述相邻叶子节点对应的页码,若相邻叶子节点对应的页码不在所述页码集中,则结束所述递归查找;
循环模块,用于在所述递归查找结束时,若所述页码集不为空,则循环执行所述创建结构体以及对所述结构体中变量的值进行赋值和更新的步骤,直至所述页码集为空。
作为一个可能的实施方式,缓存状态生成模块840可以包括:
表名称确定模块,用于确定所述每个表空间标识在主数据文件中对应的表空间的表名称;
索引名称确定模块,用于确定每个表空间的目标数据记录范围中各数据记录子范围对应的索引名称;
生成子模块,用于根据每个表空间的表名称、每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围,生成所述主数据库的缓存状态信息。
作为一个可能的实施方式,生成子模块可以包括:
查询语句解析模块,用于将每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围解析为查询语句,得到每个表空间对应的查询语句集;
第七确定模块,用于根据每个表空间的表名称和每个表空间对应的查询语句集,得到所述主数据库的缓存状态信息。
作为一个可能的实施方式,该装置800还可以包括:
连接建立模块,用于通过所述从数据库的传输线程与所述主数据库建立连接;
请求发送模块,用于由所述从数据库的传输线程向所述主数据库发送缓存状态信息获取请求;
缓存状态信息发送模块,用于在所述主数据库的缓存状态信息满足预设条件时,将所述主数据库的缓存状态信息发送给所述从数据库。
作为一个可能的实施方式,同步模块850可以包括:
读取模块,用于读取所述主数据库的缓存状态信息,得到表空间的目标数据记录范围;
定位模块,用于在从数据文件的匹配树形数据结构中,定位与所述目标数据记录范围相匹配的目标叶子节点范围;所述匹配树形数据结构与所述目标数据记录范围的表空间相匹配;
待加载数据页获取模块,用于根据所述目标叶子节点范围内各叶子节点的链接指针,获取所述目标叶子节点范围内的数据页,得到所述待加载数据页。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例的数据同步装置可以精准、快速、主动地在从数据库恢复主数据库的缓存数据,避免了用主数据库业务流量被动地对从数据库缓存池进行预热的漫长过程,确保了在发生HA之后系统对用户读写请求的快速响应,避免了系统访问性能的降低,极大提高了MySQL发生HA之后的用户体验。
本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的数据同步方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据同步。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图9是本申请实施例提供的运行一种……方法的服务器的硬件结构框图,如图9所示,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)910(处理器910可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器930,一个或一个以上存储应用程序923或数据922的存储介质920(例如一个或一个以上海量存储设备)。其中,存储器930和存储介质920可以是短暂存储或持久存储。存储在存储介质920的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器910可以设置为与存储介质920通信,在服务器900上执行存储介质920中的一系列指令操作。服务器900还可以包括一个或一个以上电源960,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口940,和/或,一个或一个以上操作系统921,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口940可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器900的通信供应商提供的无线网络。在一个实例中,输入输出接口940包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口940可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图9所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器900还可包括比图9中所示更多或者更少的组件,或者具有与图9所示不同的配置。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可设置于电子设备之中以保存用于实现一种数据同步方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的数据同步方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,所述方法包括:
扫描主数据库的缓存实例中的数据页链表;
根据所述数据页链表中各数据页对应的表空间标识和页码,确定每个表空间标识对应的页码集;
根据每个表空间标识对应的页码集,确定主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围;
根据所述主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围,生成所述主数据库的缓存状态信息;
确定从数据文件中与所述主数据库的缓存状态信息相匹配的待加载数据页,将所述待加载数据页加载到从数据库的缓存中。
2.根据权利要求1所述的数据同步方法,其特征在于,所述根据每个表空间标识对应的页码集,确定主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围包括:
针对每个表空间标识,确定主数据文件中所述表空间标识对应的表空间,所述表空间中的多个数据页按照逻辑顺序构成树形数据结构;
根据所述表空间标识对应的页码集中页码在所述树形数据结构中对应的叶子节点的相邻关系,确定至少一个页码范围;每个页码范围由最小页码和最大页码限定;
确定每个页码范围中,最小页码对应的第一数据页和最大页码对应的第二数据页;
根据所述第一数据页中主键值最小的第一数据记录以及所述第二数据页中主键值最大的第二数据记录,得到每个页码范围对应的数据记录子范围;
根据所述每个页码范围对应的数据记录子范围,得到所述表空间的目标数据记录范围。
3.根据权利要求2所述的数据同步方法,其特征在于,所述根据所述表空间标识对应的页码集中页码在所述树形数据结构中对应的叶子节点的相邻关系,确定至少一个页码范围包括:
创建用于表征页码范围的结构体,所述结构体包括最小页码变量和最大页码变量;
从所述表空间标识对应的页码集中选取第一页码,若所述树形数据结构中存在所述第一页码对应的第一叶子节点,则将所述第一页码分别赋值给所述最小页码变量和最大页码变量;
从所述页码集中删除所述第一页码;
基于所述树形数据结构向所述第一叶子节点左侧的叶子节点以及右侧的叶子节点分别进行递归查找,在递归查找过程中,若相邻叶子节点对应的页码在所述页码集中,则将所述结构体中相对应变量的值更新为所述相邻叶子节点对应的页码,并从所述页码集中删除所述相邻叶子节点对应的页码,若相邻叶子节点对应的页码不在所述页码集中,则结束所述递归查找;
在所述递归查找结束时,若所述页码集不为空,则循环执行所述创建结构体以及对所述结构体中变量的值进行赋值和更新的步骤,直至所述页码集为空。
4.根据权利要求2所述的数据同步方法,其特征在于,所述根据所述主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围,生成所述主数据库的缓存状态信息包括:
确定所述每个表空间标识在主数据文件中对应的表空间的表名称;
确定每个表空间的目标数据记录范围中各数据记录子范围对应的索引名称;
根据每个表空间的表名称、每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围,生成所述主数据库的缓存状态信息。
5.根据权利要求4所述的数据同步方法,其特征在于,所述根据每个表空间的表名称、每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围,生成所述主数据库的缓存状态信息包括:
将每个表空间的各数据记录子范围的索引名称和每个表空间的各数据记录子范围解析为结构化查询语句,得到每个表空间对应的查询语句集;
根据每个表空间的表名称和每个表空间对应的查询语句集,得到所述主数据库的缓存状态信息。
6.根据权利要求1所述的数据同步方法,其特征在于,在确定从数据文件中与所述主数据库的缓存状态信息相匹配的待加载数据页之前,所述方法还包括:
通过所述从数据库的传输线程与所述主数据库建立连接;
由所述从数据库的传输线程向所述主数据库发送缓存状态信息获取请求;
在所述主数据库的缓存状态信息满足预设条件时,将所述主数据库的缓存状态信息发送给所述从数据库。
7.根据权利要求1所述的数据同步方法,其特征在于,所述确定从数据文件中与所述主数据库的缓存状态信息相匹配的待加载数据页包括:
读取所述主数据库的缓存状态信息,得到表空间的目标数据记录范围;
在从数据文件的匹配树形数据结构中,定位与所述目标数据记录范围相匹配的目标叶子节点范围;所述匹配树形数据结构与所述目标数据记录范围的表空间相匹配;
根据所述目标叶子节点范围内各叶子节点的链接指针,获取所述目标叶子节点范围内的数据页,得到所述待加载数据页。
8.一种数据同步装置,其特征在于,所述装置包括:
扫描模块,用于扫描主数据库对应数据库实例的缓存中的数据页链表;
第一确定模块,用于根据所述数据页链表中各数据页对应的表空间标识和页码,确定每个表空间标识对应的页码集;
第二确定模块,用于根据每个表空间标识对应的页码集,确定主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围;
缓存状态生成模块,用于根据所述主数据文件中所述每个表空间标识对应的表空间的目标数据记录范围,生成所述主数据库的缓存状态信息;
同步模块,用于确定从数据文件中与所述主数据库的缓存状态信息相匹配的待加载数据页,将所述待加载数据页加载到从数据库的缓存中。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1~7中任一项所述的数据同步方法。
10.一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1~7任一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011399280.XA CN114595286A (zh) | 2020-12-04 | 2020-12-04 | 一种数据同步方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011399280.XA CN114595286A (zh) | 2020-12-04 | 2020-12-04 | 一种数据同步方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114595286A true CN114595286A (zh) | 2022-06-07 |
Family
ID=81812022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011399280.XA Pending CN114595286A (zh) | 2020-12-04 | 2020-12-04 | 一种数据同步方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595286A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115328924A (zh) * | 2022-10-17 | 2022-11-11 | 北京奥星贝斯科技有限公司 | 一种创建表空间的方法、装置、存储介质及电子设备 |
CN116975097A (zh) * | 2023-04-04 | 2023-10-31 | 上海卡方信息科技有限公司 | 一种数据查询的方法、装置、存储介质及电子设备 |
-
2020
- 2020-12-04 CN CN202011399280.XA patent/CN114595286A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115328924A (zh) * | 2022-10-17 | 2022-11-11 | 北京奥星贝斯科技有限公司 | 一种创建表空间的方法、装置、存储介质及电子设备 |
CN116975097A (zh) * | 2023-04-04 | 2023-10-31 | 上海卡方信息科技有限公司 | 一种数据查询的方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10754835B2 (en) | High-efficiency deduplication module of a database-management system | |
JP7410181B2 (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
CN115185891B (zh) | 文件系统的数据管理方法及装置、电子设备及存储介质 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
US11151081B1 (en) | Data tiering service with cold tier indexing | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
CN114595286A (zh) | 一种数据同步方法、装置、电子设备及存储介质 | |
CN112148680B (zh) | 一种基于分布式图数据库的文件系统元数据管理方法 | |
US20180276267A1 (en) | Methods and system for efficiently performing eventual and transactional edits on distributed metadata in an object storage system | |
US10558636B2 (en) | Index page with latch-free access | |
CN114610680A (zh) | 分布式文件系统元数据管理方法、装置、设备及存储介质 | |
US11210212B2 (en) | Conflict resolution and garbage collection in distributed databases | |
Kvet et al. | Relational pre-indexing layer supervised by the DB_index_consolidator Background Process | |
CN109213760B (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN116820323A (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
US11055266B2 (en) | Efficient key data store entry traversal and result generation | |
CN117009439B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113515518A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
KR20080061501A (ko) | 웹 페이지 관리를 위한 웹 아카이브 시스템 및 방법 | |
CN117873967A (zh) | 分布式文件系统的数据管理方法、装置、设备及存储介质 | |
CN116166661A (zh) | 基于大数据的信息存储服务系统 | |
CN116126620A (zh) | 数据库日志处理方法、数据库变更查询方法及相关装置 | |
CN117891796A (zh) | 一种适用于多读少写场景的hdfs海量小文件存储方法 | |
CN117743459A (zh) | 增量数据的同步方法、装置、系统、电子设备及可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230925 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Applicant after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Applicant after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Applicant before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |