CN115587141A - 一种数据库同步方法和装置 - Google Patents
一种数据库同步方法和装置 Download PDFInfo
- Publication number
- CN115587141A CN115587141A CN202211088702.0A CN202211088702A CN115587141A CN 115587141 A CN115587141 A CN 115587141A CN 202211088702 A CN202211088702 A CN 202211088702A CN 115587141 A CN115587141 A CN 115587141A
- Authority
- CN
- China
- Prior art keywords
- database
- storage unit
- target
- source
- storage units
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据库同步方法和装置,该方法包括:获取源数据库下的用于存储物理数据库表的存储单元;获取目标数据库下的用于存储物理数据库表的存储单元;识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元;将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元,其中,进行数据同步的源数据库的存储单元和目标数据库的存储单元上保存有相同的物理数据库表。通过本申请解决了现有技术中数据库在进行数据同步时所存在的同步效率比较低的问题,进而降低了数据库数据同步的延迟,提高了数据库数据同步的效率。
Description
技术领域
本申请涉及到数据库领域,具体而言,涉及一种数据库同步方法和装置。
背景技术
随着云计算的兴起,对海量数据存储和管理的需求也在不断地增加。在这样的趋势下,近几年出现了许多面向大数据管理的数据库,通过利用硬件搭建大规模服务器集群来提供大量数据存储和管理能力。
数据库的数据最终仍然会保存在物理存储介质中,例如分布式数据库系统在物理上通常使用多个存储单元(例如,多个服务器)来进行数据存储,每个存储单元(例如,每台服务器)可单独放在一个地方,每个存储单元中都可能有数据库的一份完整拷贝副本或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的多个存储单元通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
副本机制作为保证数据库服务的可靠性和可用性的关键技术之一,在各种新兴的大规模数据库系统尤其是分布式数据库系统中得到了广泛运用。在实际应用中,通过将主数据库的数据与副本数据库的数据进行同步的方式,来保证数据的可靠性和可用性。
现在的数据库系统尤其是分布式数据库系统一般具有数据存储量大,实时写入量大的特点。现有技术在进行数据同步时一般是将源数据库中的数据复制到目标数据库中,在这种处理方式下,源数据库首先将需要进行同步的数据从各个存储单元上收集汇总生成需要同步的逻辑表,然后将逻辑表中的数据同步给目标数据库,目标数据库根据同步后的逻辑表,查找该逻辑表所在的存储单元,然后再将逻辑表通过到各个分布的存储单元。这种更新方式需要将存储在物理存储单元上的数据转换成逻辑表然后再进行同步,同步效率比较低。
发明内容
本申请实施例提供了一种数据库同步方法和装置,以至少解决现有技术中数据库在进行数据同步时所存在的同步效率比较低的问题。
根据本申请的一个方面,提供了一种数据库同步方法,包括:获取源数据库下的用于存储物理数据库表的存储单元;获取目标数据库下的用于存储物理数据库表的存储单元;识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元;将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元,其中,进行数据同步的源数据库的存储单元和目标数据库的存储单元上保存有相同的物理数据库表。
根据本申请的另一个方面,还提供了一种数据库同步装置,包括:第一获取模块,用于获取源数据库下的用于存储物理数据库表的存储单元;第二获取模块,用于获取目标数据库下的用于存储物理数据库表的存储单元;识别模块,用于识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元;同步模块,用于将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元,其中,进行数据同步的源数据库的存储单元和目标数据库的存储单元上保存有相同的物理数据库表。
根据本申请的另一个方面,还提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现上述的方法步骤。
根据本申请的另一个方面,还提供了一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现上述的方法步骤。
在本申请实施例中,采用了获取源数据库下的用于存储物理数据库表的存储单元;获取目标数据库下的用于存储物理数据库表的存储单元;识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元;将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元,其中,进行数据同步的源数据库的存储单元和目标数据库的存储单元上保存有相同的物理数据库表。通过本申请解决了现有技术中数据库在进行数据同步时所存在的同步效率比较低的问题,进而降低了数据库数据同步的延迟,提高了数据库数据同步的效率。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的数据库同步方法的流程图;
图2是根据本申请实施例的进行预检查的父子任务运行关系的示意图;
图3是根据本申请实施例的基于父子任务的数据库同步方法的流程图;以及,
图4是根据本申请实施例的识别具有相同物理数据库表的存储单元的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在数据库系统(以下以分布式数据库系统为例进行说明)中,数据库中的表是保存在存储单元中的,在以下实施方式中,存储单元是指用于数据库数据存储的的物理设备或者物理单元,多个存储单元保存的数据构成了整个数据库的数据。虽然数据库的表保存在不同的存储单元中,但是,用户在使用该数据库中的表时看到的表是一张完整的表,该表的数据实际上保存在多个存储单元中(存储单元中保存的表称为物理数据库表或者物理表),用户看到或操作的表是数据库对物理表进行整合之后生成的逻辑表,即一张逻辑表可能由一张或多张物理表整合而成。以下实施方式中的物理和逻辑的含义与物理表和逻辑表所指代的含义相同,即“物理”表示在物理设备或物理单元上真实存储的数据(例如,数据库表等),“逻辑”是指对物理设备或物理单元上真实存储的数据进行整合后供用户进行操作或处理的数据。
在以下实施方式中,将进行数据同步的两个数据库(例如两个分布式数据库)称为源数据库和目标数据库,其中,进行同步时,将数据从源数据库同步到目标数据库中。在现有技术中,进行两个数据库数据同步时,使用逻辑表来进行同步,即从源数据库的逻辑表中读取数据复制到目标数据库的逻辑表中,这种使用这种逻辑表的同步方式涉及到逻辑表到物理表的转换过程,即源数据库首先将需要进行同步的数据从各个存储单元上收集汇总生成需要同步的逻辑表,然后将逻辑表中的数据同步给目标数据库,目标数据库根据同步后的逻辑表,查找该逻辑表所在的存储单元,然后再将逻辑表通过到各个存储单元。这种逻辑表和物理表之间的转换在源数据库和目标数据库都会进行,从而降低了数据库同步的效率。
为了解决上述问题,在以下实施方式中提供了一种数据库同步方法,需要说明的是,以下实施方式可以应用到各种类型的数据库中,由于分布式数据库存储单元数量以及保存数据较多,因此在分布式数据库中应用以下实施方式能够更好的提高数据库同步效率,以下以分布式数据库为例进行说明。在以下实施方式中也可以将存储单元称为子实例或者子分区。图1是根据本申请实施例的数据库同步方法的流程图,如图1所示,下面对图1中所包括的步骤进行说明。
步骤S102,获取源数据库下的用于存储物理数据库表的存储单元。
步骤S104,获取目标数据库下的用于存储物理数据库表的存储单元。
上述步骤S102和步骤S104虽然涉及到先后的步骤编号,但是并不表示步骤S102优先于步骤是104执行,也可以优先执行步骤S104再执行步骤S102,即除明确说明和逻辑限制外,在如下实施方式中的步骤编号并不是对步骤执行先后顺序的限定。
步骤S106,识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元。
需要说明的是,在该步骤中涉及到相同物理数据库表,这所说的相同是指物理数据库表是相同的表,但是表中的内容不一定是相同的,步骤S108中所说的数据就是指表中的内容。例如,一种名称为用户信息的表,该表有三个字段:名称、年龄、性别。该用户信息表保存在源数据库中的A存储单元中,有100条数据;该用户信息表也保存在目标数据库中的B存储单元中,有50条数据。此时,A存储单元和B存储单元中保存的用户信息表就是相同的物理数据库表,其中的数据就是如下步骤S108需要进行同步的数据。
步骤S108,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元,其中,进行数据同步的源数据库的存储单元和目标数据库的存储单元上保存有相同的物理数据库表。
在上述步骤中,在需要在源数据库和目标数据库之间进行数据同步时,分别从源数据库和目标数据库找到保存有相同物理数据库表的存储单元,然后在保存有相同的物理数据库表的存储单元之间进行数据同步,即将源数据库的存储单元的物理数据库表直接同步到目标数据库的存储单元中。通过上述步骤,不再需要将物理数据库表转换成逻辑表之后再进行同步,而是直接在存储单元之间进行物理数据库表的同步,因此,通过上述步骤解决了现有技术中数据库在进行数据同步时所存在的同步效率比较低的问题,进而降低了数据库数据同步的延迟,提高了数据库数据同步的效率。
在上述步骤S106中,涉及到识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元,由于数据库的种类很多,不同类型的数据库在存储单元中保存数据的方式可能存在差异,在一个可选的实施方式中,作为一种对于各类型的数据比较通用的识别方式,可以对源数据库和目标数据库中的每个存储单元中保存的物理数据库表进行遍历,然后记录这些存储单元中保存的物理数据库表的名称,如果源数据库的存储单元和目标数据库的存储单元中保存有相同名称的物理数据库表,则这两个存储单元之间就可以直接进行数据同步。即在该可选实施方式方式中,识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元可以包括如下步骤:获取每个所述源数据库的存储单元保存的物理数据库表的名称;获取每个所述目标数据库的存储单元保存的物理数据库表的名称;将保存有相同名称的物理数据库表的源数据库的存储单元和目标数据库的存储单元,作为保存有相同物理数据库表的存储单元。通过该可选方式无论对于哪种类型的数据库,均能够识别出保存有相同物理数据库表的存储单元,提高了对不同类型的数据库的适配。
对于需要进行数据同步的分布式数据库来说,通常情况下,其数据库的结构以及存储单元的分布也是相同的。例如,对于源数据库中来说,其一种有三个存储单元:A1、A2和A3,其中,A1保存了表1、A2保存了表2和表3、A3保存了表4;目标数据库一般承担了源数据库的备份工作,因此,目标数据库也具有三个存储单元:B1、B2和B3,其中,B1保存了表1、B2保存了表2和表3、B3保存了表4。这种处理方式在作为主备存在的源数据库和目标数据库中是比较常见的。考虑到这种情况的存在,作为一个可选的实施方式,可以使用标识信息来标识出一个存储单元所保存的物理数据库表,如果两个存储单元保存的数据库表是相同的,则这两个存储单元的标识信息也相同,如果两个存储单元保存的数据库表是不同的,则这两个存储单元的标识信息也不相同。在使用了标识信息的情况下,就可以通过标识信息来识别存储单元是否保存有相同的物理数据库表,即在该可选实施方式中,识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元可以包括如下步骤:获取每个所述源数据库的存储单元对应的标识信息;获取每个所述目标数据库的存储单元对应的标识信息,其中,保存有相同物理数据库表的存储单元具有相同的标识信息;将具有相同标识信息的源数据库的存储单元和目标数据库的存储单元,作为保存有相同物理数据库表的存储单元。通过该可选实施方式,不再需要遍历每个存储单元中保存的物理数据库表的名称,根据标识信息的是否相同就可以确定两个存储单元中的保存的物理数据库表是否相同,进一步提高了识别效率。
例如,在分布式数据库中可以使用组值(GroupKey)来作为标识信息,获取源数据库的子实例(即存储单元)的GroupKey,以及获取目标数据库的子实例的GroupKey,如果两个子实例的GroupKey相同,则将这两个子实例作为保存有相同物理数据库表的子实例。
上述提供了两种可选的识别保存有相同物理数据库表的方式,考虑到可能存在识别错误的情况(虽然这种情况发生的概率是比较低的),作为另一种可选的实施方式,还可以将识别出的两个存储单元交由用户来进行确认,即在识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元之后,还可以包括如下步骤:将存储有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元通过用户界面进行显示,其中,在所述用户界面中能够对具有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元进行修改。在该可选实施方式中,如果用户对源数据库的存储单元和目标数据库的存储单元的对应关系进行了修改,则按照用户修改后的对应关系来对源数据库和目标数据库中对应的存储单元进行数据同步。考虑到如果每次识别之后均通过用户确认,会造成操作上的繁琐,在这种情况下,也可以在识别之后直接进行数据同步,如果数据同步出现异常,则再将识别结果显示给用户。
图4是根据本申请实施例的识别具有相同物理数据库表的存储单元的流程图,如图4所示,该识别包括如下步骤:首先选择使用默认的识别算法还是配置的算法,该步骤中可以根据数据库的类型来确定,例如在配置算法的时候可以配置该算法使用的分布式数据库的类型,然后根据分布式数据库的类型来查找相应的算法,在图4中查找到根据GroupKey来进行识别的算法,此时,获取源子实例/分区的GroupKey,然后,获取目标子实例/分区的GroupKey,对GroupKey进行匹配,如果GroupKey相等就是一一对应的一组源子实例/分区和目标子实例/分区,在根据匹配算法匹配之后,将匹配结果交由用户确认。如果没有匹配到为该类型的分布式数据库配置的任何识别算法,则使用默认识别算法,在该默认识别算法中,获取源数据库(即图4中的源端分布式数据库)的所有子实例/分区中的库表名称,获取目标数据库(即图4中的目标端分布式数据库)的所有子实例/分区中的库表名称,通过库表名称进行匹配,库表名字相同的一组源子实例/分区和目标子实例/分区为待进行同步处理的子实例/分区。无论采用默认的算法还是配置的算法,均将匹配结果交由用户确认,如果用户确认则识别结束,如果用户进行了调整,则使用用户调整后的匹配结果。这种处理方式即能够提高处理效率,又能提供了对异常情况的处理,提高了用户体验。
在识别出保存了相同物理数据库表的存储单元之后,就可以进行数据同步了。在有些分布式数据库中,其并没有提供在两个存储单元之间建立链路的能力,此时需要用户通过手工敲击命令的方式在两个存储单元之间建立用于进行数据同步的链路,这种手工建立链路的方式效率比较低。在一个可选实施方式中,可以在识别出保存了相同物理数据库表的存储单元之后,自动进行链路建立。即将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元可以包括如下步骤:在每组存储单元之间均建立链路,其中,将保存有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元作为一组存储单元;通过每组存储单元之间建立的链路对各组存储单元进行数据同步。通过该可选方式,可以实现链路的自动建立,从而为缩短数据同步时延提供了保证。
在从源数据库到目标数据库进行数据同步的过程中,针对每组存储单元可以分别建立一个任务,这样多组存储单元进行数据同步时,就可以建立多个任务,建立了多个任务之后,即为并行处理多组存储单元的数据同步提供了基础。即在该可选实施方式中,为多组存储单元建立的多个任务可以并行执行。通过并行处理,可以进一步提高数据同步的效率,缩短数据同步的时间。
在使用了多个任务之后,对需要对多个任务进行管理。在另一个可选实施方式中,考虑到多个任务的功能均是在两个存储单元之间进行数据同步,因此为了便于管理,可以创建一个父任务,然后将上述的多个任务均作为该父任务的子任务。即在该可选实施方式中,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元可以包括如下步骤:建立一个父任务,并为每组存储单元的数据同步均建立一个所述父任务下的子任务;通过每个子任务对每组存储单元进行数据同步。在进行数据同步时,通常情况下会有多组存储单元均需要进行数据同步,在这种情况下,采用父子任务之后,父任务就可以自动为每组存储单元均建立进行数据同步的链路,可以提高同步效率。
对于父任务和子任务来说,子任务由父任务拆解而来,子任务可以继承父任务的基础属性和方法,这样对在需要修改任务的属性时,通过对父任务的修改就实现对所有子任务的修改。另外,父任务的完成状态依赖于子任务的完成状态,一个简单的逻辑是只有子任务全部完成,父任务才算完成,即通过父任务的状态就可以知道是否所有的同步任务均已经完成。因此,通过父子任务的方式可以更好的对多组存储单元之间的数据同步进行监控和控制。
上述实施方式中的同步处理即可以用在增强数据上也可以用在全量数据上。即将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元可以包括如下步骤:从所述源数据库的存储单元获取待同步的全量数据和/或增量数据;将所述全量数据和/或增量数据同步到所述目标数据库的存储单元。在该可选实施方式中,将同步全量数据称为全量同步,将同步增量数据称为增量同步。所谓全量同步是在开始数据同步的那一时刻,当前时间之前的所存量数据进行同步的过程,在该同步过程中,通过直接读取存量数据的方式拉取数据。所谓增量同步是在开始数据同步的那一时刻,对子啊上一次同步之后又增量写入的数据进行同步,一般会通过读取和解析源库写入日志方式进行同步。
无论是全量同步还是增量同步,在同步的过程均可能出现异常,这其中最容易出现的是与源数据库和目标数据库之间的连接异常,作为一种处理方式:可以在出现异常之后再进行处理,但是这种方式会影响同步的进度。在另一种可选实施方式中,可以预先进行检查,在检查没有问题之后再进行同步。即将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元可以包括如下步骤:获取用于连接所述源数据库和所述目标数据库的信息;根据所述信息对能否连接到所述源数据库和所述目标数据库进行检查;在所述检查通过之后,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元。在该可选实施方式中,可以将这种检查称为预检查,即在数据同步前,可以对源数据库库和目标数据库库进行连接性检查、账号权限权限和/或数据库配置检查等方面的检查,在此统一称为预检查。
图2是根据本申请实施例的进行预检查的父子任务运行关系的示意图,如图2所示,源数据库(Source DB)包括多个子实例或分区(在下文中,将子实例或分区称为子实例/分区,在图2中示出了子实例/分区1和子实例/分区2,其余子实例/分区未示出),目标数据库(Target DB)也包括了多个子实例或分区,其中,源数据库与目标分布式数据中的子实例/分区1是具有相同物理数据库表的存储单元,同理两个子实例/分区2也是具有相同物理数据库表的存储单元。建立父任务之后,为子实例/分区1和子实例/分区2的数据同步分别建立了两个子任务:子任务1和子任务2,子任务1和子任务2根据需要进行全量同步或增量同步(也可以将同步称为迁移)。在图2中,父任务、子任务1和子任务2均进行了预检查,如果任何一个任务的预检查没有通过,则视为预检查未通过,不进行后续的数据同步,如果父任务、子任务1和子任务2的预检查均通过,再进行数据同步。
需要说明的是,源数据库和目标数据库为同构数据库,因为源数据库和目标数据库之间结构相同,子任务直接从源数据库读取全量和增量数据,写入到目标数据库中,不需要经过任何代理层,也不需要进行逻辑库表和物理库表之间的转换,速度会更快。如果源数据库和目标数据库为异构数据库,则可以首先将源数据库的数据结构进行转换,转换成与目标数据库中结构相同,然后再使用上述实施方式中的同步处理方法。
图3是根据本申请实施例的基于父子任务的数据库同步方法的流程图,图3中示出了一个采用了父子任务的可选的实施例,如图3所示,该基于父子任务的数据库同步方法可以包括如下步骤:
步骤1,获取源数据库的信息以及下面步骤所使用到的子实例/分区信息,该源数据库信息包括实例标识(ID)、实例连接串(该连接串包括了用于连接数据库的信息)、用户名、密码等用于创建数据库连接的信息。
步骤2,获取目标数据库的信息以及下面步骤所使用到的子实例/分区信息,该源数据库信息包括实例标识(ID)、实例连接串(该连接串包括了用于连接数据库的信息)、用户名、密码等用于创建数据库连接的信息。
步骤3,识别源数据库和目标数据库下子实例/分区的一一对应关系,用于确定后续步骤在源数据库和目标数据库之间建立同步链路的子实例/分区。
步骤4,根据步骤1至步骤3获取到的源数据库和目标数据库的子实例/分区信息以及对应关系信息,建立一个同步的父任务,以及多个同步子任务。
步骤5,父任务和子任务同时进行预检查,如果预检查不通过,流程结束,任务建立失败;如果预检查通过多个子任务并发开始全量数据和增量数据的同步。
在上述步骤3中,可以提供获取源数据库到目标数据库的实例/分区一一对应关系的接口,通过该接口用户可以根据具体数据库的实例/分区的实现方式来配置识别具有相同物理数据库表的存储单元的算法。同时,在本可选实施例中对于该接口也配置了一种默认算法。如果对于某种类型的分布式数据库配置了对应的算法,则使用该对应的算法,如果没有配置对应的算法,则使用以及默认的算法即可。
对于默认算法来说,通过步骤2获取到的源数据库和目标数据库的信息,连接到源数据库和目标数据库,并读取物理子实例/分区中的库表名称,通过库表名称进行匹配,库表名字匹配的一组源子实例/分区和目标子实例/分区,认为它们是一组进行数据同步的物理实例/分区。
如果配置了其他算法,例如,配置了根据GroupKey来判断的算法,此时,获取源子实例/分区和目标子实例/分区的GroupKey,GroupKey相等就是一一对应的一组源子实例/分区和目标子实例/分区。还可以允许用户对匹配结果进行纠正。通过上述默认算法或者配置的算法识别去匹配的一组源子实例/分区和目标子实例/分区之后,会把匹配结果展示给用户,在正式建立链路前,允许用户对匹配结果进行纠正,以确保匹配结果的正确性。
图4是根据本申请实施例的识别具有相同物理数据库表的存储单元的流程图,如图4所示,该识别包括如下步骤:首先选择使用默认的识别算法还是配置的算法,该步骤中可以根据数据库的类型来确定,例如在配置算法的时候可以配置该算法使用的分布式数据库的类型,然后根据分布式数据库的类型来查找相应的算法,在图4中查找到根据GroupKey来进行识别的算法,此时,获取源子实例/分区的GroupKey,然后,获取目标子实例/分区的GroupKey,对GroupKey进行匹配,如果GroupKey相等就是一一对应的一组源子实例/分区和目标子实例/分区,在根据匹配算法匹配之后,将匹配结果交由用户确认。如果没有匹配到为该类型的分布式数据库配置的任何识别算法,则使用默认识别算法,在该默认识别算法中,获取源数据库的所有子实例/分区中的库表名称,获取目标数据库的所有子实例/分区中的库表名称,通过库表名称进行匹配,库表名字相同的一组源子实例/分区和目标子实例/分区为待进行同步处理的子实例/分区。无论采用默认的算法还是配置的算法,均将匹配结果交由用户确认,如果用户确认则识别结束,如果用户进行了调整,则使用用户调整后的匹配结果。
在上述步骤1到步骤5中,采用的是源数据库的子实例/分区与目标数据库的子实例/分区一一对应进行同步的方式。源数据库和目标数据库都是直接读写子实例/分区上的物理库表。在不考虑效率的情况下,可以直接往目标数据库中写。但这样需要把源数据库读到的物理库表信息转换成逻辑库表,有一定的性能损耗。
在上述可选实施方式中,通过自动识别源数据库和目标数据库子实例或者分区的一一对应关系,一次性建立所有源端到目标端物理库表的同步链路,建立链路的成本和维护的成本都更低,同时,源数据库和目标数据库都是直接读写子实例/分区上的物理库表,延迟更低。并且,上述可选实施方式还通知支持全量同步和增量同步。
需要说明的是,上述源数据库和目标数据库可以是分布式数据库,当然其他类型的数据库也可以适用上述实施方式中的同步方案。
在本实施例中,提供一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行以上实施例中的方法。
上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
该本实施例中就提供了这样的一种装置。一种数据库同步装置,包括:第一获取模块,用于获取源数据库下的用于存储物理数据库表的存储单元;第二获取模块,用于获取目标数据库下的用于存储物理数据库表的存储单元;识别模块,用于识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元;同步模块,用于将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元,其中,进行数据同步的源数据库的存储单元和目标数据库的存储单元上保存有相同的物理数据库表。
该系统或者装置用于实现上述的实施例中的方法的功能,该系统或者装置中的每个模块与方法中的每个步骤相对应,已经在方法中进行过说明的,在此不再赘述。
例如,所述识别模块,用于获取每个所述源数据库的存储单元保存的物理数据库表的名称;获取每个所述目标数据库的存储单元保存的物理数据库表的名称;将保存有相同名称的物理数据库表的源数据库的存储单元和目标数据库的存储单元,作为保存有相同物理数据库表的存储单元;和/或,所述识别模块,用于获取每个所述源数据库的存储单元对应的标识信息;获取每个所述目标数据库的存储单元对应的标识信息,其中,保存有相同物理数据库表的存储单元具有相同的标识信息;将具有相同标识信息的源数据库的存储单元和目标数据库的存储单元,作为保存有相同物理数据库表的存储单元。
又例如,还包括:显示模块,用于将存储有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元通过用户界面进行显示,其中,在所述用户界面中能够对具有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元进行修改。
可选地,所述同步模块,用于在每组存储单元之间均建立链路,其中,将保存有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元作为一组存储单元;通过每组存储单元之间建立的链路对各组存储单元进行数据同步;和/或,所述同步模块,用于在需要进行数据同步的存储单元为多组的情况下,为每组存储单元分别建立一个任务,其中,将保存有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元作为一组存储单元;通过每组存储单元对应的任务将数据从该组存储单元的源数据库的存储单元同步到该组存储单元的目标数据库的存储单元,其中,多组存储单元对应的多个所述任务能够并行执行;和/或,所述同步模块,用于建立一个父任务,并为每组存储单元的数据同步均建立一个所述父任务下的子任务;通过每个子任务对每组存储单元进行数据同步;和/或,所述同步模块,用于从所述源数据库的存储单元获取待同步的全量数据和/或增量数据;将所述全量数据和/或增量数据同步到所述目标数据库的存储单元;和/或,所述同步模块,用于获取用于连接所述源数据库和所述目标数据库的信息;根据所述信息对能否连接到所述源数据库和所述目标数据库进行检查;在所述检查通过之后,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元。
通过上述可选实施方式,解决了现有技术中数据库在进行数据同步时所存在的同步效率比较低的问题,进而降低了数据库数据同步的延迟,提高了数据库数据同步的效率。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种数据库同步方法,包括:
获取源数据库下的用于存储物理数据库表的存储单元;
获取目标数据库下的用于存储物理数据库表的存储单元;
识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元;
将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元,其中,进行数据同步的源数据库的存储单元和目标数据库的存储单元上保存有相同的物理数据库表。
2.根据权利要求1所述的方法,其中,识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元包括:
获取每个所述源数据库的存储单元保存的物理数据库表的名称;
获取每个所述目标数据库的存储单元保存的物理数据库表的名称;
将保存有相同名称的物理数据库表的源数据库的存储单元和目标数据库的存储单元,作为保存有相同物理数据库表的存储单元。
3.根据权利要求1所述的方法,其中,识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元包括:
获取每个所述源数据库的存储单元对应的标识信息;
获取每个所述目标数据库的存储单元对应的标识信息,其中,保存有相同物理数据库表的存储单元具有相同的标识信息;
将具有相同标识信息的源数据库的存储单元和目标数据库的存储单元,作为保存有相同物理数据库表的存储单元。
4.根据权利要求1所述的方法,其中,在识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元之后,还包括:
将存储有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元通过用户界面进行显示,其中,在所述用户界面中能够对具有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元进行修改。
5.根据权利要求1至4中任一项所述的方法,其中,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元包括:
在每组存储单元之间均建立链路,其中,保存有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元为一组存储单元;
通过每组存储单元之间建立的链路对各组存储单元进行数据同步。
6.根据权利要求1至4中任一项所述的方法,其中,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元包括:
在需要进行数据同步的存储单元为多组的情况下,为每组存储单元分别建立一个任务,其中,保存有相同物理数据库表的源数据库的存储单元和目标数据库的存储单元为一组存储单元;
通过每组存储单元对应的任务将数据从该组的源数据库的存储单元同步到该组的目标数据库的存储单元,其中,多组存储单元对应的多个所述任务能够并行执行。
7.根据权利要求6所述的方法,其中,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元包括:
建立一个父任务,并为每组存储单元的数据同步均建立一个所述父任务下的子任务;
通过每个子任务对每组存储单元进行数据同步。
8.根据权利要求1至4中任一项所述的方法,其中,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元包括:
获取用于连接所述源数据库和所述目标数据库的信息;
根据所述信息对能否连接到所述源数据库和所述目标数据库进行检查;
在所述检查通过之后,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元。
9.根据权利要求1至4中任一项所述的方法,其中,将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元包括:
从所述源数据库的存储单元获取待同步的全量数据和/或增量数据;
将所述全量数据和/或增量数据同步到所述目标数据库的存储单元。
10.一种数据库同步装置,包括:
第一获取模块,用于获取源数据库下的用于存储物理数据库表的存储单元;
第二获取模块,用于获取目标数据库下的用于存储物理数据库表的存储单元;
识别模块,用于识别出所述源数据库和所述目标数据库中保存有相同物理数据库表的存储单元;
同步模块,用于将数据从所述源数据库的存储单元同步到所述目标数据库的存储单元,其中,进行数据同步的源数据库的存储单元和目标数据库的存储单元上保存有相同的物理数据库表。
11.一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1至9任一项所述的方法步骤。
12.一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1至9任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211088702.0A CN115587141A (zh) | 2022-09-07 | 2022-09-07 | 一种数据库同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211088702.0A CN115587141A (zh) | 2022-09-07 | 2022-09-07 | 一种数据库同步方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115587141A true CN115587141A (zh) | 2023-01-10 |
Family
ID=84771063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211088702.0A Pending CN115587141A (zh) | 2022-09-07 | 2022-09-07 | 一种数据库同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115587141A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473019A (zh) * | 2023-12-25 | 2024-01-30 | 阿里云计算有限公司 | 一种数据同步方法、系统、计算机设备以及存储介质 |
-
2022
- 2022-09-07 CN CN202211088702.0A patent/CN115587141A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473019A (zh) * | 2023-12-25 | 2024-01-30 | 阿里云计算有限公司 | 一种数据同步方法、系统、计算机设备以及存储介质 |
CN117473019B (zh) * | 2023-12-25 | 2024-03-22 | 阿里云计算有限公司 | 一种数据同步方法、系统、计算机设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019154394A1 (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
CN104615606B (zh) | 一种Hadoop分布式文件系统及其管理方法 | |
CN111614733B (zh) | 一种分布式多分片集群的部署方法、装置及存储介质 | |
CN110532123B (zh) | HBase系统的故障转移方法及装置 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
US11151157B2 (en) | Database management method | |
CN114077518B (zh) | 数据快照方法、装置、设备及存储介质 | |
CN115292408A (zh) | MySQL数据库的主从同步方法、装置、设备及介质 | |
CN111651302B (zh) | 分布式数据库备份方法,装置及系统 | |
CN109753245B (zh) | 一种多磁盘负载均衡异步读写调度方法及装置 | |
CN111352766A (zh) | 一种数据库的双活实现方法及装置 | |
CN115587141A (zh) | 一种数据库同步方法和装置 | |
CN113157701A (zh) | 一种oracle数据库的双活机制部署方法及装置 | |
CN112000850A (zh) | 进行数据处理的方法、装置、系统及设备 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN114500289B (zh) | 控制平面恢复方法、装置、控制节点及存储介质 | |
CN115328931A (zh) | 数据库集群数据校验方法、装置、存储介质及电子设备 | |
CN114969206A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN113672591A (zh) | 数据迁移方法、系统、存储介质及电子设备 | |
CN111966680A (zh) | 一种数据库存储扩展方法和装置 | |
CN111797062B (zh) | 数据处理方法、装置和分布式数据库系统 | |
CN109062701A (zh) | 一种操作Redis集群的方法、装置、计算机系统和存储介质 | |
CN115878378B (zh) | 基于云原生的两地三中心数据库容灾系统部署方法及装置 | |
US9747166B2 (en) | Self healing cluster of a content management system | |
CN115712683A (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 |