CN115827657A - 数据库的数据同步方法、存储介质以及设备 - Google Patents

数据库的数据同步方法、存储介质以及设备 Download PDF

Info

Publication number
CN115827657A
CN115827657A CN202211658550.3A CN202211658550A CN115827657A CN 115827657 A CN115827657 A CN 115827657A CN 202211658550 A CN202211658550 A CN 202211658550A CN 115827657 A CN115827657 A CN 115827657A
Authority
CN
China
Prior art keywords
sequence
processed
value
primary key
database
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
Application number
CN202211658550.3A
Other languages
English (en)
Inventor
魏乾
王凯龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingbase Information Technologies Co Ltd
Original Assignee
Beijing Kingbase Information Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingbase Information Technologies Co Ltd filed Critical Beijing Kingbase Information Technologies Co Ltd
Priority to CN202211658550.3A priority Critical patent/CN115827657A/zh
Publication of CN115827657A publication Critical patent/CN115827657A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据库的数据同步方法、存储介质以及设备,该数据同步方法包括根据同步来源表的主键的最大值和同步目标表的相关的序列的当前值,并将相关序列的当前值设置为主键最大值,然后开启同步过程。本发明的数据库的数据同步方法能够在用户的业务库进行切换时,将涉及到的序列全部同步为与原业务库一致的状态,从而保证业务库切换后,应用可以正常运行。

Description

数据库的数据同步方法、存储介质以及设备
技术领域
本发明涉及数据库领域,特别是涉及一种数据库的数据同步方法、存储介质以及设备。
背景技术
在利用数据同步工具进行数据实时同步时分为三个阶段,第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源端数据和目标数据进行比对校验,以确认在数据同步过程中没有丢失数据。其中第二阶段和第三阶段会处于长时间并行状态。
在第二阶段增量数据同步时,通过分析数据库日志获取增量数据,从而实现数据实时同步是一种常用的实时复制技术。这种技术通过解析源数据库在线日志或者归档日志,获得数据的增删改变化,再将这些变化以事务为单位转换为同步软件内部特定的消息格式,通过数据同步软件的私有传输协议发送到目标端数据同步软件,最后目标端同步软件将获取到的事务日志恢复成目标数据库支持的SQL语句并在目标端数据库上执行,来实现数据的实时同步,保持源端和目标数据库的数据一致性。
在第二阶段的增量数据实时同步过程中,增量数据通常包括DML语句和DDL语句,而DML语句中,有些表数据中的值实际上是通过查询序列产生的,从而达到自增的效果。
上述的方案在单方向的数据同步时可以保证数据的一致性,但是源端的有些表上的主键是通过查询序列然后插入到表中,因此序列会持续增长。当源端的数据库由于故障停止时,用户需要将同步的目标端数据库作为新的业务库承接业务,由于目标端的数据都是由源端直接插入的,因此并没有操作序列的操作,序列依然处于初始状态。这时业务在此数据库上进行查询序列并插入表的时候,就会得到一个序列的旧值,这时在插入表中时,就会由于主键冲突而报错,从而导致业务无法运行。
发明内容
本发明的一个目的是要提供一种能够解决上述任一问题的数据库的数据同步方法、存储介质以及设备。
本发明一个进一步的目的是要保证数据的一致性。
特别地,本发明提供了一种数据库的数据同步方法,该数据同步方法包括:
获取同步表名,并根据同步表名查询得到对应的同步来源表;
查询得到同步来源表的主键的最大值,并记为主键最大值;
根据同步表名查询得到对应的同步目标表;
获取与同步目标表相关的序列,并记为相关序列;
获取相关序列的当前值;
将当前值与主键最大值比较;
根据比较结果确定相关序列是否需要处理;
将需处理的相关序列的当前值设置为主键最大值;
开始同步过程。
进一步地,获取与同步目标表相关的序列的步骤包括:
获取同步目标表上的触发器;
根据触发器判断同步目标表的主键值是否由序列生成;
若是,则确定序列为相关序列。
进一步地,获取与同步目标表相关的序列的步骤还包括:
根据预设函数确定相关序列。
进一步地,获取与同步目标表相关的序列的步骤还包括:
根据数据库的系统目录表联查,得到相关序列。
进一步地,根据比较结果确定相关序列是否需要处理的步骤包括:
在当前值小于主键最大值时,确定相关序列为需处理的相关序列。
进一步地,将需处理的相关序列的当前值设置为主键最大值的步骤包括:
计算主键最大值与相关序列的当前值的差,记为第一差值;
将需处理的相关序列设置为停止缓存;
将需处理的相关序列的步长设置为第一差值;
对需处理的相关序列执行将当前值指到下一个值的函数,以将需处理的相关序列的当前值设置为主键最大值。
进一步地,对需处理的相关序列执行将当前值指到下一个值的函数的步骤之后还包括:
将需处理的相关序列的步长恢复为设置为第一差值之前的原步长;
将需处理的相关序列设置为开始缓存。
进一步地,将需处理的相关序列的当前值设置为主键最大值的步骤包括:
执行重置序列对象的计数器数值的函数,以将需处理的相关序列的当前值设置为主键最大值。
根据本发明的另一方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种数据库集群的数据同步方法。
根据本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种数据库集群的数据同步方法。
本发明的数据库的数据同步方法包括根据同步来源表的主键的最大值和同步目标表的相关的序列的当前值,并将相关序列的当前值设置为主键最大值,然后开启同步过程。本发明的数据库的数据同步方法能够在用户的业务库进行切换时,将涉及到的序列全部同步为与原业务库一致的状态,从而保证业务库切换后,应用可以正常运行。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是根据本发明一个实施例的数据库的架构以及同步来源表、同步目标表的示意图;
图2是根据本发明一个实施例的数据库的数据同步方法的示意性步骤图;
图3是根据本发明另一个实施例的数据库的数据同步方法的示意性步骤图;
图4是根据本发明另一个实施例的数据库的数据同步方法的示意性步骤图;
图5是根据本发明一个实施例的机器可读存储介质的示意图;以及
图6是根据本发明一个实施例的计算机设备的示意图。
具体实施方式
图1是根据本发明一个实施例的数据库的架构以及同步来源表、同步目标表的示意图。如图1所示,本实施例的数据库的架构包括源端数据库100和目标端数据库200。源端数据库100可以为Oracle数据库,目标端数据库可以为KingbaseES数据库。源端数据库100的同步来源表为图1中所示位于源端数据库100下方的T1表。目标端数据库200的同步目标表为图1中所示位于目标端数据库200下方的T1表。
图2是根据本发明一个实施例的数据库的数据同步方法的示意性步骤图。
步骤S202,获取同步表名,并根据同步表名查询得到对应的同步来源表。同步表名可以通过用户提供的配置参数获取。用户可以以正则表达式的形式配置要同步的表。
步骤S204,查询得到同步来源表的主键的最大值,并记为主键最大值。在一些实施例中,同步表名可以为多个,根据同步表名可获取到与同步表名对应的多个同步来源表,进而获得多个对应的主键最大值,此时可将同步表名与主键最大值一一对应记录于预设Hash表中。
步骤S206,根据同步表名查询得到对应的同步目标表。
步骤S208,获取与同步目标表相关的序列,并记为相关序列。
步骤S210,获取相关序列的当前值。
步骤S212,将当前值与主键最大值比较。
步骤S214,根据比较结果确定相关序列是否需要处理。
步骤S216,将需处理的相关序列的当前值设置为主键最大值。
步骤S218,开始同步过程。
步骤S214包括:在当前值小于主键最大值时,确定相关序列为需处理的相关序列。
在一些实施例中,相关序列可以为多个,在Hash表中查询同一表名对应的序列的当前值和主键最大值进行比较。若当前值小于主键最大值,则表明该序列为需要处理的相关序列,将该序列和对应的表放入集合中。若当前值大于等于主键最大值,则该相关序列无需处理。
本实施例的数据库的数据同步方法能够在用户的业务库进行切换时,将涉及到的序列全部同步为与原业务库一致的状态,从而保证业务库切换后,应用可以正常运行。
图3是根据本发明另一个实施例的数据库的数据同步方法的示意性步骤图。如图3所示,本实施例的数据库的数据同步方法中获取与同步目标表相关的序列的步骤包括:
步骤S302,获取同步目标表上的触发器;
步骤S304,根据触发器判断同步目标表的主键值是否由序列生成。若是,则执行步骤S306。
步骤S306,确定序列为相关序列。
对于Oracle数据库,需要首先查询同步目标表上的触发器,然后根据触发器的定义来判定同步目标表的主键值是否由序列生成,若有,则将该序列记录在预设Hash表中作为值,若没有,则不记录。
在一些实施例中,获取与同步目标表相关的序列的步骤还包括:根据预设函数确定相关序列。
在一些实施例中,获取与同步目标表相关的序列的步骤还包括:根据数据库的系统目录表联查,得到相关序列。对于Kingbase数据库,可以直接从sys_class以及sys_sequence表中进行联查,获取到和同步目标表相关的序列,然后记录在预设Hash表中。
图4是根据本发明另一个实施例的数据库的数据同步方法的示意性步骤图。如图4所示,本实施例的数据库的数据同步方法中将需处理的相关序列的当前值设置为主键最大值的步骤包括:
步骤S402,计算主键最大值与序列当前值的差,记为第一差值V1。
步骤S404,将需处理的相关序列设置为停止缓存,也即,将需处理的相关序列设置为nocache。
步骤S406,将需处理的相关序列的步长设置为第一差值V1。
步骤S408,对需处理的相关序列执行将当前值指到下一个值的函数,也即,对需处理的相关序列执行nextval函数。
步骤S410,将需处理的相关序列的步长恢复为设置为第一差值之前的原步长;
步骤S412,将需处理的相关序列设置为开始缓存,也即,将需处理的相关序列设置为cache。
对于Oracle数据库,由于不能直接设置当前值,所以我们需要先计算要设置的值和序列的当前值的差,记为V1,而后将序列设置为nocache,接着将序列的步长修改为V1,然后对序列执行nextval,让序列增长一个步长,这时序列的当前值就变为了将要设置的值,最后将序列的步长修改回去,cache重新开启。
在一些实施例中,将需处理的相关序列的当前值设置为主键最大值的步骤包括:执行重置序列对象的计数器数值的函数,以将需处理的相关序列的当前值设置为主键最大值。对于Kingbase数据库,直接使用函数setval即可对序列的当前值进行设置。
本实施例还提供了一种机器可读存储介质和计算机设备。图5是根据本发明一个实施例的机器可读存储介质的示意图,图6是根据本发明一个实施例的计算机设备的示意图。
机器可读存储介质40其上存储有机器可执行程序41,机器可执行程序41被处理器执行时实现上述任一实施例的数据库的数据同步方法。
计算机设备50可以包括存储器520、处理器510及存储在存储器520上并在处理器510上运行的机器可执行程序41,并且处理器510执行机器可执行程序41时实现上述任一实施例的数据库的数据同步方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质40可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质40甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
计算机设备50可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备50可以是云计算节点。计算机设备50可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备50可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
计算机设备50可以包括适于执行存储的指令的处理器510、在操作期间为所述指令的操作提供临时存储空间的存储器520。处理器510可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器520可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。
处理器510也可以通过系统互连链接到适于将计算机设备50连接到显示设备的显示接口。显示设备可以包括作为计算机设备50的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备50的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备50连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

Claims (10)

1.一种数据库的数据同步方法,包括:
获取同步表名,并根据所述同步表名查询得到对应的同步来源表;
查询得到所述同步来源表的主键的最大值,并记为主键最大值;
根据所述同步表名查询得到对应的同步目标表;
获取与所述同步目标表相关的序列,并记为相关序列;
获取所述相关序列的当前值;
将所述当前值与所述主键最大值比较;
根据比较结果确定所述相关序列是否需要处理;
将需处理的相关序列的当前值设置为所述主键最大值;
开始同步过程。
2.根据权利要求1所述的数据库的数据同步方法,其中,所述获取与所述同步目标表相关的序列的步骤包括:
获取所述同步目标表上的触发器;
根据所述触发器判断所述同步目标表的主键值是否由序列生成;
若是,则确定所述序列为所述相关序列。
3.根据权利要求1所述的数据库的数据同步方法,其中,所述获取与所述同步目标表相关的序列的步骤还包括:
根据预设函数确定所述相关序列。
4.根据权利要求1所述的数据库的数据同步方法,其中,所述获取与所述同步目标表相关的序列的步骤还包括:
根据所述数据库的系统目录表联查,得到所述相关序列。
5.根据权利要求1所述的数据库的数据同步方法,其中,所述根据比较结果确定所述相关序列是否需要处理的步骤包括:
在所述当前值小于所述主键最大值时,确定所述相关序列为所述需处理的相关序列。
6.根据权利要求1所述的数据库的数据同步方法,其中,所述将需处理的所述相关序列的当前值设置为所述主键最大值的步骤包括:
计算所述主键最大值与所述相关序列的当前值的差,记为第一差值;
将所述需处理的相关序列设置为停止缓存;
将所述需处理的相关序列的步长设置为所述第一差值;
对所述需处理的相关序列执行将所述当前值指到下一个值的函数,以将所述需处理的所述相关序列的当前值设置为所述主键最大值。
7.根据权利要求6所述的数据库的数据同步方法,其中,所述对所述需处理的相关序列执行将所述当前值指到下一个值的函数的步骤之后还包括:
将所述需处理的相关序列的步长恢复为设置为所述第一差值之前的原步长;
将所述需处理的相关序列设置为开始缓存。
8.根据权利要求1所述的数据库的数据同步方法,其中,所述将需处理的所述相关序列的当前值设置为所述主键最大值的步骤包括:
执行重置序列对象的计数器数值的函数,以将所述需处理的所述相关序列的当前值设置为所述主键最大值。
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据库集群的数据同步方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据库集群的数据同步方法。
CN202211658550.3A 2022-12-22 2022-12-22 数据库的数据同步方法、存储介质以及设备 Pending CN115827657A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211658550.3A CN115827657A (zh) 2022-12-22 2022-12-22 数据库的数据同步方法、存储介质以及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211658550.3A CN115827657A (zh) 2022-12-22 2022-12-22 数据库的数据同步方法、存储介质以及设备

Publications (1)

Publication Number Publication Date
CN115827657A true CN115827657A (zh) 2023-03-21

Family

ID=85517785

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211658550.3A Pending CN115827657A (zh) 2022-12-22 2022-12-22 数据库的数据同步方法、存储介质以及设备

Country Status (1)

Country Link
CN (1) CN115827657A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251456A (zh) * 2023-11-16 2023-12-19 广州市千钧网络科技有限公司 一种主键值生成方法、装置、电子设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251456A (zh) * 2023-11-16 2023-12-19 广州市千钧网络科技有限公司 一种主键值生成方法、装置、电子设备和存储介质
CN117251456B (zh) * 2023-11-16 2024-03-08 广州市千钧网络科技有限公司 一种主键值生成方法、装置、电子设备和存储介质

Similar Documents

Publication Publication Date Title
CN112100152B (zh) 业务数据处理方法、系统、服务器和可读存储介质
JP5724735B2 (ja) データベース更新制御装置、データベース管理システムおよびデータベース更新制御プログラム
CN112214505B (zh) 数据同步方法、装置、计算机可读存储介质及电子设备
CN115827657A (zh) 数据库的数据同步方法、存储介质以及设备
CN115292307A (zh) 数据同步系统、方法及相应计算机设备和存储介质
CN118069745A (zh) 基于事务日志的SQL Server增量获取方法、存储介质及设备
JP6329552B2 (ja) 単一テーブルから複数テーブルへの参照データセグメント化
CN111447299A (zh) 一种基于测试环境台账的dns解析方法及系统
CN110912979B (zh) 一种解决多服务器资源同步冲突方法
CN112948494A (zh) 数据同步方法、装置、电子设备和计算机可读介质
CN117290357A (zh) 基于Kettle的表结构同步方法及装置、设备、存储介质
CN116089527A (zh) 一种数据校验方法、存储介质与设备
CN107168822B (zh) Oracle streams的异常修复系统及方法
CN109635040B (zh) 实时数据迁移方法、装置及存储介质
CN115344585B (zh) 数据版本管理方法、装置以及存储介质和电子设备
CN117763048A (zh) 数据库的数据同步方法、存储介质及设备
CN118193636A (zh) 数据库的数据同步方法、设备、存储介质及产品
CN116226286A (zh) 一种数据同步方法、存储介质及设备
CN116150274A (zh) 数据同步方法、存储介质及设备
US11894999B1 (en) Resolving information discrepancies between network entities
CN116244040B (zh) 一种主备容器集群系统及其数据同步方法、电子设备
CN113051107B (zh) 一种集群重启方法、装置、系统及存储介质
CN115168405A (zh) 一种数据库集群的数据处理方法、存储介质及设备
CN117648382A (zh) 数据库的审计信息的处理方法、存储介质及计算机设备
CN117453770A (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

Country or region after: China

Address after: 100102 201, 2 / F, 101, No. 5 building, No. 7 Rongda Road, Chaoyang District, Beijing

Applicant after: China Electronics Technology Group Jincang (Beijing) Technology Co.,Ltd.

Address before: 100102 201, 2 / F, 101, No. 5 building, No. 7 Rongda Road, Chaoyang District, Beijing

Applicant before: BEIJING KINGBASE INFORMATION TECHNOLOGIES Inc.

Country or region before: China

CB02 Change of applicant information