CN116049306A - 数据同步方法、装置、电子设备以及可读存储介质 - Google Patents
数据同步方法、装置、电子设备以及可读存储介质 Download PDFInfo
- Publication number
- CN116049306A CN116049306A CN202211711721.4A CN202211711721A CN116049306A CN 116049306 A CN116049306 A CN 116049306A CN 202211711721 A CN202211711721 A CN 202211711721A CN 116049306 A CN116049306 A CN 116049306A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- update
- target
- log
- 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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/23—Updating
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在本发明实施中提供了一种数据同步方法、装置、电子设备以及可读存储介质,该方法响应于对分布式数据库中的源数据集的数据更新操作,将执行数据更新操作的执行时间戳作为更新日志的操作标识,并写入至源数据集的源日志文件中;源日志文件记录更新日志,更新日志用于记录数据更新操作;按照操作标识将源日志文件中的更新日志,依次同步至分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;源数据集中所存储的数据与目标数据集中所存储的数据存在关联;基于目标日志文件对目标数据集中的数据进行更新。这样,可以按照更新日志的操作标识进行同步,使得同步的过程与各操作的执行顺序相一致,保证数据同步的准确性和一致性。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种数据同步方法、装置、电子设备以及可读存储介质。
背景技术
随着计算机技术的逐渐发展,使用各种服务商的用户越来越多,同时,上述服务商所需要处理的数据量也大大增加,为了提高数据处理的效率,往往采用分布式数据库将较大的数据分散至各个子库或子表中,得到多个数据集。
而在这种情况下,为了确保任一数据集均可以响应用户的查询需求,需要对分布式的数据库进行数据同步。因此,如何确保数据同步的准确性成为亟需解决的技术问题。
发明内容
本发明实施例的目的在于提供一种数据同步方法、装置、电子设备以及可读存储介质,以至少解决上述问题。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种数据同步方法,可以应用于服务器集群,该方法可以包括:
响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作;
按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联;
基于所述目标日志文件对所述目标数据集中的数据进行更新。
在本发明实施的第二方面,提供了一种数据同步装置,可以应用于服务器集群,该装置可以包括:
时间戳写入模块,用于响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作;
同步模块,用于按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联;
更新模块,用于基于所述目标日志文件对所述目标数据集中的数据进行更新。
本发明实施的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于进行存储器上所存放的程序时,进行上述任一所述的数据同步方法。
在本发明实施的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机进行上述任一所述的数据同步方法。
在本发明实施的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机进行上述任一所述的数据同步方法。
本发明实施例响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作;按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联;基于所述目标日志文件对所述目标数据集中的数据进行更新。这样,通过将数据更新操作的执行时间戳作为更新日志的操作标识,并按照操作标识将源日志文件中的更新日志依次同步至分布式数据库中需要进行数据同步的目标数据集的指定目录中,可以使得目标数据集可以得到按照操作标识进行记录的目标日志文件,使得日志同步的过程与各数据更新操作的执行顺序相一致,进一步地,根据目标日志文件对目标数据集中的数据进行更新,可以使得数据更新的过程与各数据更新操作相一致,进而保证数据同步的准确性和一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的一种数据同步方法的步骤流程图;
图2是本发明实施例提供的一种场景示意图;
图3是本发明实施例提供的另一种数据同步方法的步骤流程图;
图4是本发明实施例提供的一种数据同步装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
图1是本发明实施例提供的一种数据同步方法的步骤流程图,可以应用于服务器集群,如图1所示,该方法可以包括如下步骤:
步骤101、响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作。
其中,上述分布式数据库指的是分布式场景的数据库,具体的,可以是将一个数据库中的数据进行拆分,通过分库或分表的形式拆分为多个子数据库或子数据表,得到多个数据集。相应地,上述服务器集群可以包含若干个服务器节点,各服务器节点上可以存储不同的数据集。可以理解的,各服务器节点上存储的数据集中的数据是存在关联的。
其中,上述源数据集指的是发生数据更新操作的数据集,上述数据更新操作指的是对数据进行修改的操作,可以对应于一个事务或事件,可以以日志的形式记录所发生的数据更新操作,得到一条更新日志。具体的,上述数据更新操作可以是对源数据集中某一项数据进行增加或减少的操作,可以是在接收到数据更新指令的情况下触发的,数据更新指令中可以包含更新对象、更新属性以及更新量,可以根据实际的情况不同而不同。
相应地,上述更新日志中可以包含数据更新操作的更新对象、更新属性以及更新量,进一步地,本发明实施例可以应用于关系型数据库管理系统(MySQL),进而上述更新日志中可以记录有执行此次数据更新操作所对应的MySQL语句。其中,上述源日志文件指的是记录源数据集的更新日志的文件,通常为二进制文件(可以是binlog日志)。
其中,上述执行时间戳指的是发生数据更新操作的时间戳,具体的,可以采用一个全局时钟服务器作为时间戳服务器,服务器集群中的所有服务器均可以按照需求通过时间戳服务器生成相应的时间戳,得到上述执行时间戳。进一步地,时间戳的精确度通常大于毫秒级别,因而各操作的执行时间戳往往是唯一的,因而本发明实施例中可以将数据更新操作的执行时间戳作为此次数据更新操作的唯一标识,即,全局事务标识,同时,执行时间戳还可以提供此次操作发生的时间。
步骤102、按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联。
其中,上述目标数据集指的是源数据集对应的待同步的数据集,可以属于分布式数据库中除源数据集之外的其他数据集,可以是一个,也可以是多个,具体可以根据实际需求设置目标数据集。可以理解的,目标数据集与源数据集中的数据存在关联,且两者设置在不同的服务器节点上。
其中,上述指定目录指的是目标数据集所在服务器下的指定目录,可以是目标数据集所在服务器中,用于记录目标数据集的日志的专有目录,可以根据实际需求自行设置,具体的,上述同步可以是按照源日志文件中所记录的更新日志的操作标识,依次将各条更新日志同步至指定目录中,从而得到目标日志文件,也可以称为中继日志文件。
可以理解的,由于源日志文件中的更新日志均以执行时间戳作为操作标识,本发明实施例中从而可以根据各操作标识识别出对应操作发生的时间顺序,进而可以按照各条日志的执行时间,依次进行同步,使得目标日志文件中所同步的更新日志顺序和各操作的执行时间顺序相对应。
进一步地,当服务器故障或网络故障时,可能出现同步中断,本发明实施例中可以根据目标日志文件中当前的更新日志的操作标识,确定出中断发生时,正在同步的更新日志的执行时间戳,进而可以按照操作标识继续同步操作,从而可以避免数据丢失。
步骤103、基于所述目标日志文件对所述目标数据集中的数据进行更新。
其中,由于更新日志用于记录数据更新操作,从而本发明实施例在得到目标日志文件后,可以根据目标日志文件中的更新日志对目标数据集进行更新。具体的,可以使目标数据集中的数据执行更新日志所指示的操作,实现数据重放,完成更新。
具体的,在对目标数据集中的数据进行更新时,可以是按照目标日志文件中的更新日志的操作标识顺序,即,按照执行时间戳依次对数据进行更新,使得数据更新的顺序与更新日志的操作标识相一致,进而保证数据更新的过程与数据更新操作实际发生的时间顺序相一致。
综上所述,本发明实施例通过响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作;按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联;基于所述目标日志文件对所述目标数据集中的数据进行更新。这样,通过将数据更新操作的执行时间戳作为更新日志的操作标识,并按照操作标识将源日志文件中的更新日志依次同步至分布式数据库中需要进行数据同步的目标数据集的指定目录中,可以使得目标数据集可以得到按照操作标识进行记录的目标日志文件,使得日志同步的过程与各数据更新操作的执行顺序相一致,进一步地,根据目标日志文件对目标数据集中的数据进行更新,可以使得数据更新的过程与各数据更新操作相一致,进而保证数据同步的准确性和一致性。
可选地,本发明实施例具体可以包括下述步骤:
步骤201、创建包含多个线程的线程池,并基于所述多个线程将所述目标日志文件中的更新日志写入至预设消息队列中。
其中,上述线程池可以包含多个空线程,一个线程池中所包含的线程数量可以自行设置,可以理解的,线程数量越多,写入效率越高。其中,上述预设消息队列可以是kafka队列,也可以是rubbitmq队列。可以理解的,消息队列可以起到削峰解耦的作用。具体的,上述将更新日志写入消息队列的操作可以是读取上述目标日志文件中的更新日志,通过线程池中的多个线程,采用异步的方式将更新日志写入至预设的消息队列中,以使消息队列存储带有全局事务标识的更新日志内容。
步骤202、读取所述预设消息队列中的更新日志,以基于所述更新日志创建查询索引。
步骤203、在接收到查询对象对所述分布式数据库的查询指令的情况下,基于所述查询索引进行查询。
其中,上述读取更新日志的操作可以通过预设的数据存储工具实现,例如,可以通过高性能切片数据存储工具(StarRocks)对上述消息队列进行消费,获取到目标日志文件中的更新日志后,通过StarRocks的内置结构创建查询索引,其中,上述查询索引可以包含各条更新日志更新后的具体数据,即,查询索引可以用于提供历史查询数据表,各索引可以分别指向不同历史时间的更新数据。
进一步地,上述查询对象可以是向分布式数据库发起查询请求的主体,进一步地,可以是查询主体所使用的客户端。具体的,在接收到查询对象对分布式数据库的查询指令的情况下,可以根据查询指令中所指示的查询时间以及查询对象从查询索引中找到对应的查询数据实现查询。
本发明实施例中,通过创建包含多个线程的线程池,并基于所述多个线程将所述目标日志文件中的更新日志写入至预设消息队列中;读取所述预设消息队列中的更新日志,以基于所述更新日志创建查询索引;在接收到查询对象对所述分布式数据库的查询指令的情况下,基于所述查询索引进行查询。这样,通过使用线程池以及消息队列,可以提高日志的读取效率,同时,通过基于更新日志创建查询索引,可以通过索引向查询对象提供查询,提高后续查询的效率。
可选地,所述数据更新操作用于指示对所述源数据集中的第一对象的目标属性的数据进行更新;所述基于所述目标日志文件对所述目标数据集中的数据进行更新,包括:
步骤301、获取所述目标数据集中的目标对象的所述目标属性对应的目标数据;所述目标对象是所述目标数据集中包含所述第一对象的对象。
其中,上述第一对象指的是源数据集中的对象,目标属性指的是第一对象在源数据集中所对应的任一属性,其中,源数据集中的任一对象可以对应有不同属性的数据,相应地,任一属性可以对应不同对象的数据。示例性地,上述第一对象可以是A账户,上述目标属性可以是账户余额,从而上述数据更新操作可以是对A账户的账户余额进行更新。
进一步地,上述目标对象指的是在目标数据集中包含第一对象的对象,相应地,上述目标对象的目标属性对应的目标数据指的是包含第一对象的对象在目标属性下的数据值。具体的,可以以目标属性为参考,对目标数据集进行逐行遍历,直至遍历出包含第一对象的对象。
示例性地,以上述第一对象为A账户为例,目标对象可以是A账户+B账户,则上述目标数据可以是A账户+B账户对应的账户余额。
步骤302、按照所述目标日志文件中各更新日志的操作标识所表征的顺序,基于所述目标日志文件中的更新日志依次对所述目标数据进行更新。
具体的,上述操作标识所表征的顺序指的是各更新日志所对应的执行时间顺序,可以理解的,在源数据集发生数据更新操作时,其数据更新也是随着各操作的执行时间而依次进行更新,因而为了保证目标数据集中的目标数据的更新顺序与源数据集保持一致,本发明实施例中可以使目标数据集中的目标数据也按照操作标识所表征的顺序依次进行更新。
本发明实施例中,所述数据更新操作用于指示对所述源数据集中的第一对象的目标属性的数据进行更新;通过获取所述目标数据集中的目标对象的所述目标属性对应的目标数据;所述目标对象是所述目标数据集中包含所述第一对象的对象;按照所述目标日志文件中各更新日志的操作标识所表征的顺序,基于所述目标日志文件中的更新日志依次对所述目标数据进行更新。这样,通过使目标数据集中的目标数据按照操作标识顺序进行更新,可以使目标数据集中的目标数据的更新顺序与源数据集保持一致,进一步提高数据同步的一致性。
可选地,所述服务器集群包含实时节点,所述实时节点用于获取实时数据;上述在接收到查询对象对所述分布式数据库的查询指令的情况下,基于所述查询索引进行查询的操作,本发明实施例具体可以包括下述步骤:
步骤401、基于所述服务器集群中的管理节点获取所述查询指令中携带的时间戳数据。
步骤402、基于所述管理节点在所述时间戳数据表征所述查询指令用于查询实时数据的情况下,向所述实时节点转发所述查询指令。
步骤403、由所述实时节点基于所述查询索引获取所述查询指令指示查询的数据作为第一查询结果,并将所述第一查询结果返回至所述管理节点。
步骤404、由所述管理节点将所述第一查询结果输出至所述查询对象。
针对上述步骤401~404,图2是本发明实施例提供的一种场景示意图,如图2所示,其中,服务器集群所包含的各服务器可以称为节点,不同节点可以用于提供不同的服务或功能。
其中,上述管理节点也可以称为代理节点,可以用于获取数据查询指令,在客户端发起数据查询请求时,管理节点可以捕获该请求,并读取该请求所指示的查询对象以及查询时间,相应地,上述步骤401中的查询指令中携带的时间戳数据可以理解为查询时间。
其中,查询指令中携带的时间戳数据可以表征查询对象想要查询的数据时间。具体的,可以通过查询指令中的时间戳数据与最近一次更新日志的操作标识进行比对,在时间戳数据表征的时间在操作标识之前时,表明该查询指令用于查询历史数据,相应地,在时间戳数据表征的时间在操作标识之后时,表明该查询指令用于查询实时数据。
具体的,上述实时节点可以专用于查询实时数据,管理节点在确定出此次查询指令为查询实时数据的情况下,可以将该查询指令转发给实时节点,以使实时节点通过查询索引获取实时数据作为第一查询结果,并返回至管理节点。进一步地,管理节点可以将第一查询结果输出至查询对象,其中,管理节点可以通过将第一查询结果返回至查询指令所对应的客户端,实现查询结果输出。
本发明实施例中,所述服务器集群包含实时节点,所述实时节点用于获取实时数据;通过基于所述服务器集群中的管理节点获取所述查询指令中携带的时间戳数据;基于所述管理节点在所述时间戳数据表征所述查询指令用于查询实时数据的情况下,向所述实时节点转发所述查询指令;由所述实时节点基于所述查询索引获取所述查询指令指示查询的数据作为第一查询结果,并将所述第一查询结果返回至所述管理节点;由所述管理节点将所述第一查询结果输出至所述查询对象。这样,通过设置实时节点和管理节点,可以在接收到查询实时数据的查询指令时,通过管理节点与实时节点交互进行数据查询,无需通过遍历各个数据集所在的节点进行查询,从而提高查询效率。
可选地,所述服务器集群还包含历史节点,所述历史节点用于获取历史数据,本发明实施例具体可以包括下述步骤:
步骤501、基于所述管理节点在所述时间戳数据表征所述查询指令用于查询历史数据的情况下,向历史节点转发所述查询指令。
步骤502、由所述历史节点基于所述查询索引获取所述时间戳对应的历史数据,作为第二查询结果,并将所述第二查询结果返回至所述管理节点。
步骤503、由所述管理节点将所述第二查询结果输出至所述查询对象。
具体的,如图2所示,历史节点可以与管理节点进行数据交互,在查询指令为查询历史数据的指令时,历史节点可以接收管理节点所转发的查询指令,并获取所查询的历史数据。
具体的,上述实时节点可以通过索引实时获取实时数据,在每次数据更新操作后,实时节点均可以获取最新的实时数据,并将历史数据发送至分布式文件系统中进行存储,其中,分布式文件系统可以是一个用于存储历史数据的服务器节点。
进一步地,如图2所示,历史节点在接收到管理节点所转发的查询指令后,可以根据查询指令的时间戳数据,向分布式文件系统发起查询请求,以使分布式文件系统将查询指令所指示的历史数据下发至历史节点,历史节点将接收到的历史数据作为第二查询结果返回至管理节点。进一步地,管理节点可以将第二查询结果输出至查询对象,其中,管理节点可以通过将第二查询结果返回至查询指令所对应的客户端,实现查询结果输出。
本发明实施例中,所述服务器集群还包含历史节点,所述历史节点用于获取历史数据;通过基于所述管理节点在所述时间戳数据表征所述查询指令用于查询历史数据的情况下,向历史节点转发所述查询指令;由所述历史节点基于所述查询索引获取所述时间戳对应的历史数据,作为第二查询结果,并将所述第二查询结果返回至所述管理节点;由所述管理节点将所述第二查询结果输出至所述查询对象。这样,通过设置历史节点,可以在接收到查询历史数据的查询指令时,通过管理节点与历史节点交互实现数据查询,无需通过遍历各个数据集所在的节点进行查询,从而提高查询效率。
可选地,上述按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中的操作,本发明实施例具体可以包括下述步骤:
步骤601、根据所述源日志文件中的各条更新日志的操作标识,确定各条所述更新日志所记录的更新操作的执行顺序。
步骤602、按照所述执行顺序,依次复制所述源日志文件中的更新日志至所述目标数据集的指定目录中。
具体的,本发明实施例可以按照上述源日志文件中的各条更新日志的操作标识,确定各更新操作的执行顺序,具体的,由于操作标识为各更新操作的执行时间戳,因而本发明实施例可以对各操作标识按照从小到大的顺序进行排序,得到上述执行顺序。时间戳越大,表明该时间戳对应的事件越靠后。
进一步地,在得到执行顺序后,可以按照上述执行顺序依次对源日志文件中的更新日志进行复制,复制至上述指定目录中,从而保证所得到的目标日志文件中的日志内容也是按照执行顺序排列的。
本发明实施例中,通过根据所述源日志文件中的各条更新日志的操作标识,确定各条所述更新日志所记录的更新操作的执行顺序;按照所述执行顺序,依次复制所述源日志文件中的更新日志至所述目标数据集的指定目录中。这样,通过各条更新日志的操作标识,可以确定各更新操作的执行顺序,按照该执行顺序对源日志文件中的更新日志进行复制,可以保证所得到的目标日志文件中的日志内容也是按照执行顺序排列的,从而使得目标日志文件与源日志文件保持顺序一致,提高数据同步的一致性。
可选地,上述按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中的操作之前,本发明实施例具体还可以包括下述步骤:
步骤701、获取所述源日志文件的元数据。
步骤702、将所述元数据备份至指定位置。
上述确定各条所述更新日志所记录的更新操作的执行顺序之前,本发明实施例具体还可以包括下述步骤:
步骤703、在未成功读取到所述源日志文件的情况下,基于所述指定位置的元数据重新读取所述源日志文件。
针对上述步骤701~703,其中,上述元数据指的是源日志文件的属性数据,可以是源日志文件的名称、大小等数据。上述指定位置指的是不易丢失的存储位置,可以是硬盘、磁盘等存储模块。
具体的,在源日志文件所在服务器发生故障或网络发生中断的情况下,可能存在无法成功读取源日志文件的情况,因此本发明实施例可以遵循预写原则(Write AheadLog,WAL)对源日志文件的元数据进行备份,从而当源日志文件所在服务器发生故障,使得无法读取源日志文件的情况下,可以基于备份的元数据对源日志文件进行恢复。
本发明实施例中,通过获取所述源日志文件的元数据;将所述元数据备份至指定位置;在未成功读取到所述源日志文件的情况下,基于所述指定位置的元数据重新读取所述源日志文件。这样,通过对源日志文件的元数据备份到指定位置,可以在无法成功读取源日志文件时,通过指定位置的元数据重新读取,实现数据的有效备份,避免数据丢失。
图3是本发明实施例提供的另一种数据同步方法的步骤流程图,如图3所示,可以包括:
步骤211、遵循WAL的预写原则对源数据集的binlog日志文件名进行备份,并将执行时间戳作为事务标识符记录到binlog日志中。
其中,上述binlog日志为前述步骤中的源日志文件,其中,事务标识符指的是操作标识,可以将执行时间戳作为全局的事务标识符。
步骤212、将源数据集的binlog日志中的中继日志放至目标同步集的目录中,并记录日志名为源数据集的日志名,完成日志同步。
其中,上述目标同步集指的是目标数据集,本步骤指的是将binlog日志中的日志内容同步至目标数据集的指定目录下,得到目标日志文件,也就是binlog日志的中继日志。
步骤213、利用高性能切片数据存储工具StarRocks,获取分布式场景下的增量日志。
其中,上述分布式场景下的增量日志指的是目标日志文件中的日志内容。
步骤214、在获取增量日志内容的前提下,利用Kafka消息队列作为中间件存储增量日志信息,结合StarRocks的内置结构搭建索引。
步骤215、利用搭建好的增量日志索引,通过索引加速完成数据查询。
可以看出,本发明实施例提出的数据同步方法相比现有的不采用分布式数据同步优化、只利用binlog机制实现同步的方式,可以保证分布式场景下数据库中数据一致且完备、同步数据逻辑优化、消耗内存甚微。
在功能方面,该方法在binlog机制同步基础上完成事务标识符记录的日志预处理、日志存储和日志消费的改造方案,在满足原有功能基础上,满足加速数据查询的需求。在同步数据方面,当某个源数据集故障,工作机器出现宕机、服务不可用或者网络故障等情况,以带时间戳的事务标识符作为兜底,从而可以保证数据库连接有效,数据库中事务不会丢失、等待同步的数据不重不漏,并且用户在云端处于无感知状态,且当源数据集和所在宿主机机器正常运作后,可以继续完成数据同步的服务,从而保证数据同步的安全保障。
进一步地,在性能方面,本发明实施例与不采用消息队列做存储优化、不采用分布式同步优化、仅采用binlog机制做同步的方式做对比,在单个客户的云端连接的情况下,针对value大小为1KB、10KB的数据分别做读取(get)和写入(set)操作300,000次,可以得到如下的测试结果表(单位ms):
方案 | 命令 | Value 1k | Value 10k |
仅binlog | get | 0.82 | 1.34 |
本方案 | get | 0.19 | 0.36 |
仅binlog | set | 0.91 | 1.69 |
本方案 | set | 0.24 | 0.49 |
可以看出,无论是采用哪种操作,本发明实施例提出的方案性能明显优于不采用消息队列做存储优化、不采用分布式同步优化、仅采用binlog机制的方案,速度提升约4倍。
图4是本发明实施例提供的一种数据同步装置80的结构框图,如图4所示,该装置可以包括:
时间戳写入模块801,用于响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作;
同步模块802,用于按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联;
更新模块803,用于基于所述目标日志文件对所述目标数据集中的数据进行更新。
可选地,所述数据更新操作用于指示对所述源数据集中的第一对象的目标属性的数据进行更新;所述更新模块,具体用于:
获取所述目标数据集中的目标对象的所述目标属性对应的目标数据;所述目标对象是所述目标数据集中包含所述第一对象的对象;
按照所述目标日志文件中各更新日志的操作标识所表征的顺序,基于所述目标日志文件中的更新日志依次对所述目标数据进行更新。
可选地,所述服务器集群包含实时节点,所述实时节点用于获取实时数据;所述查询模块,具体用于:
基于所述服务器集群中的管理节点获取所述查询指令中携带的时间戳数据;
基于所述管理节点在所述时间戳数据表征所述查询指令用于查询实时数据的情况下,向所述实时节点转发所述查询指令;
由所述实时节点基于所述查询索引获取所述查询指令指示查询的数据作为第一查询结果,并将所述第一查询结果返回至所述管理节点;
由所述管理节点将所述第一查询结果输出至所述查询对象。
可选地,所述服务器集群还包含历史节点,所述历史节点用于获取历史数据;所述装置80还包括:
指令转发模块,用于基于所述管理节点在所述时间戳数据表征所述查询指令用于查询历史数据的情况下,向历史节点转发所述查询指令;
结果查询模块,用于由所述历史节点基于所述查询索引获取所述时间戳对应的历史数据,作为第二查询结果,并将所述第二查询结果返回至所述管理节点;
结果输出模块,用于由所述管理节点将所述第二查询结果输出至所述查询对象。
可选地,所述同步模块,具体用于:
根据所述源日志文件中的各条更新日志的操作标识,确定各条所述更新日志所记录的更新操作的执行顺序;
按照所述执行顺序,依次复制所述源日志文件中的更新日志至所述目标数据集的指定目录中。
可选地,所述装置80还包括:
元数据获取模块,用于在所述按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中之前,获取所述源日志文件的元数据;
备份模块,用于将所述元数据备份至指定位置;
读取模块,用于所述确定各条所述更新日志所记录的更新操作的执行顺序之前,在未成功读取到所述源日志文件的情况下,基于所述指定位置的元数据重新读取所述源日志文件。
综上所述,本发明实施例响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作;按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联;基于所述目标日志文件对所述目标数据集中的数据进行更新。这样,通过将数据更新操作的执行时间戳作为更新日志的操作标识,并按照操作标识将源日志文件中的更新日志依次同步至分布式数据库中需要进行数据同步的目标数据集的指定目录中,可以使得目标数据集可以得到按照操作标识进行记录的目标日志文件,使得日志同步的过程与各数据更新操作的执行顺序相一致,进一步地,根据目标日志文件对目标数据集中的数据进行更新,可以使得数据更新的过程与各数据更新操作相一致,进而保证数据同步的准确性和一致性。
在本发明提供的又一实施例中,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于进行存储器上所存放的程序时,进行上述任一所述的数据同步方法。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机进行上述实施例中任一所述的数据同步方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机进行上述实施例中任一所述的数据同步方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和进行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,本申请实施例中获取各种数据相关过程,都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制时,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (15)
1.一种数据同步方法,应用于服务器集群,其特征在于,所述方法包括:
响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作;
按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联;
基于所述目标日志文件对所述目标数据集中的数据进行更新。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
创建包含多个线程的线程池,并基于所述多个线程将所述目标日志文件中的更新日志写入至预设消息队列中;
读取所述预设消息队列中的更新日志,以基于所述更新日志创建查询索引;
在接收到查询对象对所述分布式数据库的查询指令的情况下,基于所述查询索引进行查询。
3.根据权利要求1所述的方法,其特征在于,所述数据更新操作用于指示对所述源数据集中的第一对象的目标属性的数据进行更新;所述基于所述目标日志文件对所述目标数据集中的数据进行更新,包括:
获取所述目标数据集中的目标对象的所述目标属性对应的目标数据;所述目标对象是所述目标数据集中包含所述第一对象的对象;
按照所述目标日志文件中各更新日志的操作标识所表征的顺序,基于所述目标日志文件中的更新日志依次对所述目标数据进行更新。
4.根据权利要求2所述的方法,其特征在于,所述服务器集群包含实时节点,所述实时节点用于获取实时数据;所述在接收到查询对象对所述分布式数据库的查询指令的情况下,基于所述查询索引进行查询,包括:
基于所述服务器集群中的管理节点获取所述查询指令中携带的时间戳数据;
基于所述管理节点在所述时间戳数据表征所述查询指令用于查询实时数据的情况下,向所述实时节点转发所述查询指令;
由所述实时节点基于所述查询索引获取所述查询指令指示查询的数据作为第一查询结果,并将所述第一查询结果返回至所述管理节点;
由所述管理节点将所述第一查询结果输出至所述查询对象。
5.根据权利要求4所述的方法,其特征在于,所述服务器集群还包含历史节点,所述历史节点用于获取历史数据;所述方法还包括:
基于所述管理节点在所述时间戳数据表征所述查询指令用于查询历史数据的情况下,向历史节点转发所述查询指令;
由所述历史节点基于所述查询索引获取所述时间戳对应的历史数据,作为第二查询结果,并将所述第二查询结果返回至所述管理节点;
由所述管理节点将所述第二查询结果输出至所述查询对象。
6.根据权利要求1所述的方法,其特征在于,所述按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,包括:
根据所述源日志文件中的各条更新日志的操作标识,确定各条所述更新日志所记录的更新操作的执行顺序;
按照所述执行顺序,依次复制所述源日志文件中的更新日志至所述目标数据集的指定目录中。
7.根据权利要求6所述的方法,其特征在于,所述按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中之前,所述方法还包括:
获取所述源日志文件的元数据;
将所述元数据备份至指定位置;
所述确定各条所述更新日志所记录的更新操作的执行顺序之前,所述方法还包括:
在未成功读取到所述源日志文件的情况下,基于所述指定位置的元数据重新读取所述源日志文件。
8.一种数据同步装置,应用于服务器集群,其特征在于,所述装置包括:
时间戳写入模块,用于响应于对分布式数据库中的源数据集的数据更新操作,将执行所述数据更新操作的执行时间戳作为更新日志的操作标识,并写入至所述源数据集的源日志文件中;所述源日志文件记录所述更新日志,所述更新日志用于记录所述数据更新操作;
同步模块,用于按照所述操作标识将所述源日志文件中的更新日志,依次同步至所述分布式数据库中待同步的目标数据集的指定目录中,以得到目标日志文件;所述源数据集中所存储的数据与所述目标数据集中所存储的数据存在关联;
更新模块,用于基于所述目标日志文件对所述目标数据集中的数据进行更新。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
写入模块,用于创建包含多个线程的线程池,并基于所述多个线程将所述目标日志文件中的更新日志写入至预设消息队列中;
索引创建模块,用于读取所述预设消息队列中的更新日志,以基于所述更新日志创建查询索引;
查询模块,用于在接收到查询对象对所述分布式数据库的查询指令的情况下,基于所述查询索引进行查询。
10.根据权利要求8所述的装置,其特征在于,所述数据更新操作用于指示对所述源数据集中的第一对象的目标属性的数据进行更新;所述更新模块,具体用于:
获取所述目标数据集中的目标对象的所述目标属性对应的目标数据;所述目标对象是所述目标数据集中包含所述第一对象的对象;
按照所述目标日志文件中各更新日志的操作标识所表征的顺序,基于所述目标日志文件中的更新日志依次对所述目标数据进行更新。
11.根据权利要求9所述的装置,其特征在于,所述服务器集群包含实时节点,所述实时节点用于获取实时数据;所述查询模块,具体用于:
基于所述服务器集群中的管理节点获取所述查询指令中携带的时间戳数据;
基于所述管理节点在所述时间戳数据表征所述查询指令用于查询实时数据的情况下,向所述实时节点转发所述查询指令;
由所述实时节点基于所述查询索引获取所述查询指令指示查询的数据作为第一查询结果,并将所述第一查询结果返回至所述管理节点;
由所述管理节点将所述第一查询结果输出至所述查询对象。
12.根据权利要求11所述的装置,其特征在于,所述服务器集群还包含历史节点,所述历史节点用于获取历史数据;所述装置还包括:
指令转发模块,用于基于所述管理节点在所述时间戳数据表征所述查询指令用于查询历史数据的情况下,向历史节点转发所述查询指令;
结果查询模块,用于由所述历史节点基于所述查询索引获取所述时间戳对应的历史数据,作为第二查询结果,并将所述第二查询结果返回至所述管理节点;
结果输出模块,用于由所述管理节点将所述第二查询结果输出至所述查询对象。
13.根据权利要求8所述的装置,其特征在于,所述同步模块,具体用于:
根据所述源日志文件中的各条更新日志的操作标识,确定各条所述更新日志所记录的更新操作的执行顺序;
按照所述执行顺序,依次复制所述源日志文件中的更新日志至所述目标数据集的指定目录中。
14.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于进行存储器上所存放的程序时,实现权利要求1-7任一所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器进行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211711721.4A CN116049306A (zh) | 2022-12-29 | 2022-12-29 | 数据同步方法、装置、电子设备以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211711721.4A CN116049306A (zh) | 2022-12-29 | 2022-12-29 | 数据同步方法、装置、电子设备以及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116049306A true CN116049306A (zh) | 2023-05-02 |
Family
ID=86126848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211711721.4A Pending CN116049306A (zh) | 2022-12-29 | 2022-12-29 | 数据同步方法、装置、电子设备以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116049306A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453707A (zh) * | 2023-12-09 | 2024-01-26 | 北京镜舟科技有限公司 | 数据更新方法、装置、电子设备及存储介质 |
-
2022
- 2022-12-29 CN CN202211711721.4A patent/CN116049306A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453707A (zh) * | 2023-12-09 | 2024-01-26 | 北京镜舟科技有限公司 | 数据更新方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502507B (zh) | 一种分布式数据库的管理系统、方法、设备和存储介质 | |
US10831779B2 (en) | Seamless data migration across databases | |
CN109906448B (zh) | 用于促进可插拔数据库上的操作的方法、设备和介质 | |
US20120203745A1 (en) | System and method for range search over distributive storage systems | |
KR20180021679A (ko) | 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원 | |
US20190324987A1 (en) | Storing and identifying metadata through extended properties in a historization system | |
US20140012867A1 (en) | Method And Process For Enabling Distributing Cache Data Sources For Query Processing And Distributed Disk Caching Of Large Data And Analysis Requests | |
CN113032356B (zh) | 一种客舱分布式文件存储系统及实现方法 | |
US20150006485A1 (en) | High Scalability Data Management Techniques for Representing, Editing, and Accessing Data | |
KR20190063835A (ko) | 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템 | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
CN116049306A (zh) | 数据同步方法、装置、电子设备以及可读存储介质 | |
CN111399753A (zh) | 写入图片的方法和装置 | |
CN111753141A (zh) | 一种数据管理方法及相关设备 | |
CN114218193A (zh) | 数据迁移方法、装置、计算机设备和可读存储介质 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 | |
CN112905707A (zh) | 关系数据库与搜索引擎的同步方法、装置和计算机存储介质 | |
US12061585B2 (en) | Systems and methods of modeling and querying dynamic temporal graph on massive parallel graph processing and storage engine | |
CN111522688A (zh) | 分布式系统的数据备份方法及装置 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN112685431B (zh) | 异步缓存方法、装置、系统、电子设备和存储介质 | |
CN113127717A (zh) | 一种密钥检索方法和系统 | |
US11914571B1 (en) | Optimistic concurrency for a multi-writer database | |
CN111522883A (zh) | 对象数据的备份方法、装置、设备及存储介质 | |
CN117131023B (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 | ||
CB02 | Change of applicant information |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Applicant after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Applicant before: Tianyiyun Technology Co.,Ltd. |
|
CB02 | Change of applicant information |