CN107391628A - 数据同步方法及装置 - Google Patents
数据同步方法及装置 Download PDFInfo
- Publication number
- CN107391628A CN107391628A CN201710555263.2A CN201710555263A CN107391628A CN 107391628 A CN107391628 A CN 107391628A CN 201710555263 A CN201710555263 A CN 201710555263A CN 107391628 A CN107391628 A CN 107391628A
- Authority
- CN
- China
- Prior art keywords
- data
- daily record
- point position
- position information
- 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.)
- Granted
Links
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
技术领域
本发明涉及通信技术领域,具体涉及一种数据同步方法及装置。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。在许多数据库应用场景中(如扩充备用库、读写数据库分离等),通常需两个或两个以上数据库中的数据保持同步。
但是,发明人在实现本发明的过程中发现,现有技术中至少存在下述缺陷:现今通常采用将原数据库中数据通过传输通道,如网络链接等方式传输至目标数据库的方法来实现数据的同步。然而,采用该种方法在数据量较大时,从原数据库中读取数据的效率较低,使得在同步过程中影响线上数据库的正常运行(一般在读取数据过程中,通常会对线上数据库执行加锁操作),并且该种方法受限于传输通道传输能力(如带宽限制等),同步效率低,同步延迟性高。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据同步方法及装置。
根据本发明的一个方面,提供了一种数据同步方法,包括:获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据;确定所述备份数据的备份时间点,根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息;从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步。
根据本发明的另一方面,提供了一种数据同步装置,包括:获取模块,适于获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据;点位信息确定模块,适于确定所述备份数据的备份时间点,根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息;数据操作确定模块,适于从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;同步模块,适于针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步。
根据本发明的又一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述数据同步方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述数据同步方法对应的操作。
根据本发明的数据同步方法及装置,获取与原数据库相对应的备份数据,在目标数据库中创建与备份数据相对应的全量数据;确定备份数据的备份时间点,根据原数据库对应的日志文件确定与备份时间点相对应的日志点位信息;从日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;针对目标数据库中存储的全量数据执行所述数据操作,直至目标数据库与原数据库中的数据同步。由此可见,本方案根据备份数据获得相应的全量数据,由于原数据库通常不会对已经生成的备份数据执行写操作,所以在获取备份数据的过程中,无需对原数据库执行加锁操作,所以不会造成原数据库线上业务的中断,从而不影响原数据库的正常运行;在获取全量数据之后,不对原数据库中的数据进行读取等操作,仅需获取原数据库中的日志信息,通过日志信息对数据进行操作,从而实现原数据库与目标数据库的数据同步,并提高了数据同步效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例提供的一种数据同步方法的流程图;
图2示出了根据本发明另一个实施例提供的一种数据同步方法的流程图;
图3示出了根据本发明一个实施例提供的一种数据同步装置的结构框图;
图4示出了根据本发明一个实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例提供的一种数据同步方法的流程图,该方法包括:
步骤S110,获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据。
其中,在数据库中为避免发生意外停机等数据丢失的情况,会对数据库中的数据进行备份。通常情况下,数据库不对备份后产生的备份数据进行写操作。并且,备份数据可以为完全备份数据,或差异性备份数据等。其中,完全备份数据为对数据库中的用户表、系统表、索引、视图和存储过程等所有数据库对象进行备份产生的数据,而差异性备份为只针对自上次完全备份以来所改变的数据进行备份所产生的备份数据。本发明中的备份数据包含完全备份数据、和/或差异备份数据等,本发明对具体的备份数据类型不做具体限定。可选的,原数据库相对应的备份数据包括多个不同时间备份的备份数据,则本步骤中可获取最近时间备份的备份数据,或者获取预设的备份数据。获取的备份数据可以为多个不同时间备份的备份数据,如获取2017.05.12.16:00时备份的完全备份数据,以及2017.06.12.16:00备份的差异备份数据等。具体的备份文件的选择本领域人员可根据实际业务情况自行设置。
其中,在目标数据库中创建与备份数据相对应的全量数据时,可通过多种方式实现。例如,由于备份数据通常以文本文件形式存在,则可在获取与原数据库相对应的备份数据后,根据文本文件中记录的表结构、及表数据等,通过CREATE等语句,将文件中的所有记录转换成INSERT语句。然后通过在目标库中执行该语句,从而创建出与备份数据相对应的全量数据。
并且,在本实施例中,不仅可以通过单线程实现备份数据的获取及全量数据的创建,也可以通过多线程实现备份数据的获取及全量数据的创建。通过多个并行执行的线程能够大幅缩短全量数据的创建时间。
可选的,由于备份数据中除了包含可供创建全量数据的表结构、表数据等信息外,还包含与创建全量数据无关的数据,如某些系统控制备份数据等。则可设定相应的过滤规则,将与创建全量数据无关的备份数据进行过滤。
步骤S120,确定备份数据的备份时间点,根据原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息。
其中,数据库中含有记录数据库信息的各类日志文件,如查询日志、错误日志、事务日志、和/或二进制日志等,其中某类日志中按照时间顺序和/或操作顺序记录有针对数据库中的各个数据表执行的数据操作(如,事务日志或二进制日志等)。由于数据表中的每一条数据都是通过执行相应的数据操作而录入的,因此,通过该类日志能够确定数据表在各个时刻所对应的数据存储状态。为了便于确定各个数据操作的执行时间和/或执行顺序,该类日志文件中包含多个按照时间顺序和/或操作顺序排列的日志点位信息,每个日志点位信息对应于一条或多条日志记录,一条日志记录对应于数据库中针对至少一条数据执行的数据操作。相应地,在确定备份数据的备份时间点时,根据原数据库对应的日志文件确定与备份时间点相对应的日志点位信息。
步骤S130,从日志文件中获取在与备份时间点相对应的日志点位信息之后产生的日志记录,确定与日志记录相对应的数据操作。
具体地,日志文件中在与备份时间点相对应的日志点位信息之后,记录有在上述全量数据的基础上新增的操作信息。该新增的操作信息中包含对全量数据的删除、更改、和/或插入等信息。
根据与备份时间点相对应的日志点位信息之后产生的日志记录,可以获知在该日志点位之后对原数据库中数据执行的数据操作。可选的,可实时获取原数据库中备份时间点相对应的日志点位信息之后产生的每条日志记录,对该日志记录进行解析后获得原数据库执行过的数据操作信息,从而确定与该日志记录相对应的数据操作。举例来说,根据一条bin_log日志信息:
“Query OK,0 rowsaffected(0.44sec)
insertinto yong.tb1 values(1,′tom′)”
可判断出其相应的数据操作为“insertinto yong.tb1 values(1,′tom′)”,即在yong.tb1表中插入数据“(1,′tom′)”。
步骤S140,针对目标数据库中存储的全量数据执行所述数据操作,直至目标数据库与原数据库中的数据同步。
根据步骤S130确定的与日志记录相对应的数据操作,对目标数据库中存储的全量数据执行该数据操作。在具体执行过程中,直至目标数据库与原数据库中的数据同步。
由此可见,本实施例提供的数据同步方法根据备份数据获得相应的全量数据,由于原数据库通常不会对已经生成的备份数据执行写操作,所以在获取备份数据的过程中,无需对原数据库执行加锁操作,所以不会造成原数据库线上业务的中断,从而不影响原数据库的正常运行;在获取全量数据之后,不对原数据库中的数据进行读取等操作,仅需获取原数据库中的日志信息,通过日志信息对数据进行操作,从而实现原数据库与目标数据库的数据同步,并提高了数据同步效率。
图2示出了根据本发明另一个实施例提供的一种数据同步方法的流程图。如图2所示,该方法包括:
步骤S210,获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据。
本实施例中的数据同步方法可应用于关系型数据库,如mysql数据库等。可选的,为了避免由于临时文件而耗费大量的资源,也为了提高数据同步效率,本实施例提供的数据同步方法在内存中执行。
其中,在数据库中为避免发生意外停机等数据丢失的情况,会对数据库中的数据进行备份。通常情况下,数据库不对备份后产生的备份数据进行写操作。并且,备份后产生的备份数据可以为完全备份数据,或差异性备份数据等。其中,完全备份数据为对数据库中的用户表、系统表、索引、视图和存储过程等所有数据库对象进行备份产生的数据,而差异性备份为只针对自上次完全备份以来所改变的数据进行备份所产生的备份数据。本发明中的备份数据包含完全备份数据、和/或差异备份数据等,本发明对具体的备份数据类型不做具体限定。
可选的,原数据库相对应的备份数据包括多个不同时间备份的备份数据,则本步骤中可获取最近时间备份的备份数据,或者获取预设的备份数据。获取的备份数据可以为多个不同时间备份的备份数据,如获取2017.05.12.16:00时备份的完全备份数据,以及2017.06.12.16:00备份的差异备份数据等。具体的备份文件的选择本领域人员可根据实际业务情况自行设置。
其中,在目标数据库中创建与备份数据相对应的全量数据时,可通过多种方式实现。例如,由于备份数据通常以文本文件形式存在,则可在获取与原数据库相对应的备份数据后,根据文本文件中记录的表结构、及表数据等,通过CREATE等语句,将文件中的所有记录转换成INSERT语句。然后通过在目标库中执行该语句,从而创建出与备份数据相对应的全量数据。
并且,在本实施例中,不仅可以通过单线程实现备份数据的获取及全量数据的创建,也可以通过多线程实现备份数据的获取及全量数据的创建。通过多个并行执行的线程能够大幅缩短全量数据的创建时间。
可选的,由于备份数据中除了包含可供创建全量数据的表结构、表数据等信息外,还包含与创建全量数据无关的数据,如某些控制备份数据等。则可设定相应的过滤规则,将与创建全量数据无关的备份数据进行过滤。
可选的,本步骤中的全量数据还可以通过快照数据获得。具体地,为保证数据一致性,需针对待迁移的数据表执行加锁操作,开启用于针对待迁移的数据表执行快照处理的事务;当事务开启完毕后,针对待迁移的数据表执行解锁操作,并根据与待迁移的数据表相对应的快照数据获取全量数据。其中,在后续步骤S220中将执行加锁操作后对应的日志点位信息确定为与全量数据相对应的日志点位信息。进一步可选的,当待迁移的数据表为多个时,开启用于针对待迁移的数据表执行快照处理的事务的步骤和/或根据与待迁移的数据表相对应的快照数据获取所述全量数据的步骤由多个线程并行处理,以此来提高快照处理和/或全量数据的获取速度。
步骤S220,确定备份数据的备份时间点,根据原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息。
其中,数据库中含有记录数据库信息的各类日志文件,如查询日志、错误日志、事务日志、和/或二进制日志等,其中某类日志中按照时间顺序和/或操作顺序记录有针对数据库中的各个数据表执行的数据操作(如,事务日志或二进制日志等)。由于数据表中的每一条数据都是通过执行相应的数据操作而录入的,因此,通过该类日志能够确定数据表在各个时刻所对应的数据存储状态。为了便于确定各个数据操作的执行时间和/或执行顺序,该类日志文件中包含多个按照时间顺序和/或操作顺序排列的日志点位信息,每个日志点位信息对应于一条或多条日志记录,一条日志记录对应于数据库中针对至少一条数据执行的数据操作。相应地,在确定备份数据的备份时间点时,根据原数据库对应的日志文件确定与备份时间点相对应的日志点位信息。
可选的,为便于数据的管理,数据库通常为每一个或每几个数据表分配相应的日志文件。当原数据库含有多个表以及原数据库对应多个日志文件时,可创建多个进程,每个进程分别对应于至少一个日志文件。则分别针对每个日志文件,确定该日志文件与备份时间点相对应的日志点位信息;并将该日志文件中与备份时间点相对应的日志点位信息提供给与该日志文件相对应的进程。例如,表1示出了与备份时间点相对应的日志点位信息。如表1所示,原数据库中包含log_1、log_2、log_3、以及log_4,共4个日志文件,其与备份时间点相对应的日志点位信息分别为log_1_12、log_2_23、log_3_34、以及log_4_56,并且,log_1与log_4的日志点位信息提供给进程1,log_2的日志点位信息提供给进程2,log_3的日志点位信息提供给进程3。
表1
日志文件 | 日志点位信息 | 进程 |
log_1 | log_1_12 | 1 |
log_4 | log_4_56 | 1 |
log_2 | log_2_23 | 2 |
log_3 | log_3_34 | 3 |
步骤S230,从日志文件中获取在与备份时间点相对应的日志点位信息之后产生的日志记录,确定与日志记录相对应的数据操作。
具体地,日志文件中在与备份时间点相对应的日志点位信息之后,记录有在上述全量数据的基础上新增的操作信息。该新增的操作信息中包含对全量数据的删除、更改、和/或插入等信息。根据与备份时间点相对应的日志点位信息之后产生的日志记录,可以获知在该日志点位之后对原数据库中数据执行的数据操作。可选的,可实时获取原数据库中备份时间点相对应的日志点位信息之后产生的每条日志记录,对该日志记录进行解析后获得原数据库执行过的数据操作信息,从而确定与该日志记录相对应的数据操作。举例来说,根据一条bin_log日志信息:
“Query OK,0 rowsaffected(0.44sec)
insertinto yong.tb1 values(1,′tom′)”
可判断出其相应的数据操作为“insertinto yong.tb1 values(1,′tom′)”,即在yong.tb1表中插入数据“(1,′tom′)”。
另外,当原数据库中包括多个数据表,且原数据库对应的日志文件的数量为多个时,可创建多个并行执行的进程,每个进程分别对应于至少一个日志文件。其中,多个并行执行的进程的数量可根据原数据库对应的日志文件的数量和/或大小、以及同步完成时间等来确定。例如,若原数据库对应的日志文件的数据量较多和/或日志文件较大时,而要求的同步完成时间较短,则可创建较多的并行执行的进程。本实施例对创建的进程数目及创建的具体规则不做限定,本领域技术人员可自行设定。
每个进程从该进程对应的日志文件中获取在日志点位信息之后产生的日志记录,确定与日志记录相对应的数据操作。以表1为例,进程1获取log_1中log_1_12之后产生的日志记录并确定相对应的数据操作,以及获取log_4中log_4_56之后产生的日志记录并确定相对应的数据操作;进程2获取log_2中log_2_23之后产生的日志记录并确定相对应的数据操作;进程3获取log_3中log_3_34之后的日志记录并确定相对应的数据操作。
可选的,可优先从内存中获取与备份时间点相对应的日志点位信息之后产生的日志记录。以bin_log为例,其在内存中存在binlog_cache,binlog_cache记录了对数据发生或潜在发生更改的SQL语句,当binlog_cache达到预设容量,或预设时间时,需将binlog_cache中的数据写入磁盘,但由于磁盘数据读写速度较慢,所以本步骤中可优选地从binlog_cache中读取日志文件中的日志记录,以提高日志读取速度。
可选的,由于日志文件中的日志点位通常对应于一条或多条日志记录,当与备份时间点相对应的日志点位信息对应于多条日志记录时,(其中,各个日志点位信息根据预设的时间间隔进行设置,或者根据预设的日志记录条数进行设置,如每隔5分钟设置一个日志点位,或每隔10条日志记录设置一个日志点位),确定与备份时间点相对应的日志点位信息所对应的多条日志记录中产生时间最早的日志记录,并获取产生时间最早的日志记录以及在产生时间最早的日志记录之后产生的各条日志记录。并且,当确定与日志记录相对应的数据操作的操作类型为插入类型时,进一步获取该数据操作对应的主键信息,并判断全量数据中是否包含与该主键信息相同的数据记录,若是,则根据该数据操作对与主键信息相同的数据记录进行替换。举例来说,与备份时间点相对应的日志点位为102点位,102点位对应于10条日志记录,则确定出102点位对应的10条日志记录中最早的日志记录为102-1,则获取102-1之后的所有日志记录。若根据日志记录102-4确定是对主键为“1”的数据执行插入操作时,则判断全量数据中是否包含与该主键信息相同的数据记录,若有,则将全量数据中的主键为“1”的数据进行替换,从而保证数据库系统的幂等性。
可选的,在获取与备份时间点相对应的日志点位信息之后产生的日志记录时,可将当前已获取的日志记录在日志文件中对应的日志点位信息记录在预设的进度表中,当获取在该日志点位信息之后产生的日志记录的过程中断后再次执行时,可根据进度表中记录的日志点位信息从日志文件中获取日志记录,从而可以实现数据的断点续传。另外,当创建了多个并行执行的进程时,可为每个进程分配相应的进度表,并将每个进程已获取的日志记录在日志文件中对应的日志点位信息记录在与该进程相对应的进度表中。
进一步可选的,当进度表中记录的日志点位信息对应于多条日志记录时,可确定进度表中记录的日志点位信息所对应的多条日志记录中产生时间最早的日志记录,并获取产生时间最早的日志记录以及在产生时间最早的日志记录之后产生的各条日志记录。并且,当确定与日志记录相对应的数据操作的操作类型为插入类型时,获取所述数据操作对应的主键信息,并判断全量数据中是否包含与所述主键信息相同的数据记录,若是,则根据所述数据操作对与所述主键信息相同的数据记录进行替换。此处,本领域技术人员能够理解的是,由于备份时间点相对应的日志点位信息之后产生的日志记录往往为多条,相应地,在后续的步骤S240中,通常会针对全量数据依次执行各条日志记录所对应的数据操作。相应地,在判断全量数据中是否包含与主键信息相同的数据记录时,该全量数据是指:截至当前时刻,针对全量数据执行与当前已获取的日志记录相对应的数据操作后的数据内容。例如,假设当前已经在步骤S210创建的全量数据的基础上执行了N条日志记录所对应的数据操作(N为大于或等于1的自然数),那么,当确定与第N+1条日志记录相对应的数据操作的操作类型为插入类型时,获取与第N+1条日志记录相对应的数据操作对应的主键信息,并且,在步骤S20创建的全量数据的基础上执行了N条日志记录所对应的数据操作后得到的数据中,判断是否包含与第N+1条日志记录相对应的数据操作对应的主键信息相同的数据记录,若是,则根据与第N+1条日志记录相对应的数据操作对与该主键信息相同的数据记录进行替换。
举例来说,进度表position_log中的一个日志点位对应于10条日志记录,当在102点位的第3条日志记录后发生中断时,position_log中记录的当前已获取的日志记录在日志文件中对应的日志点位为102点位。当再次执行时确定102点位所对应的多条日志记录中产生时间最早的日志记录为102-1(102点位对应的第一条日志记录),则获取102-1之后产生的各条日志记录。由上述可知,当在102点位的第3条日志记录后发生中断时,在再次执行时获取的是102点位的第1条及其以后的日志记录,则使得获取的日志记录中出现冗余数据,即102点位的第1条至第3条日志记录重复获取。若确定与冗余日志记录102-2相对应的数据操作的操作类型为插入类型时,由于已执行过该插入操作,碍于数据库中主键的唯一性,使得在对同一主键数据进行插入时出现故障,所以当确定与日志记录102-2相对应的数据操作的操作类型为插入类型时,获取数据操作对应的主键信息,并判断全量数据中是否已存在与所述主键信息相同的数据记录,若是,则根据数据操作对与所述信息相同的数据记录进行替换。例如,在mysql数据库中,当全量数据中已存在与主键信息相同的数据记录时,可直接应用“replace_into”命令将所述主键信息相同的数据记录进行替换。
步骤S240,针对目标数据库中存储的全量数据执行所述数据操作。
根据步骤S230确定的与日志记录相对应的数据操作,对目标数据库中存储的全量数据执行该数据操作。例如,若步骤S230中确定与日志记录相对应的数据操作为对table1中的主键值为“1”的数据进行删除,则将目标数据库中的全量数据中tablc1中的主键值为“1”的数据进行删除。
当步骤S230中有多个并行执行的进程时,每个进程根据步骤S230确定的与日志记录相对应的数据操作,对目标数据库中存储的全量数据执行所述数据操作。例如,若步骤S230中进程1确定的数据操作为在tab.1中插入data1,进程2确定的数据操作为在tab.2中更新data21,进程3确定的数据操作为在tab.3中删除data31,则进程1、2和3分别执行插入、更新、以及删除操作。
步骤S250,根据预设的同步判断条件确定目标数据库与原数据库中的数据是否同步。
其中,在一种情形中,预设的同步判断条件可以为:将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;将当前产生时间最晚的日志记录在所述日志文件中的日志点位信息确定为第二日志点位信息;若第一日志点位信息与第二日志点位信息之间的间隔小于预设阈值,则确定目标数据库与原数据库中的数据同步。例如,当前执行的数据操作对应于的日志记录在日志文件中的日志点位为102点位(第一日志点位信息),则表明目标数据库已完成了在102点位之前的数据的同步,而当前原数据库中产生时间最晚的日志记录对应于日志点位111,当预设阈值为10时,则确定当前目标数据库与原数据库中的数据同步,本方法结束。
在另一种情形中,预设的同步判断条件还可以为:将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;若所述第一日志点位信息与预设的同步点位信息相同,则确定目标数据库与原数据库中的数据同步。其中,预设的同步点位信息根据以下中的至少一项确定:原数据库对应的日志文件的文件大小、与备份时间点相对应的日志点位信息、以及获取与原数据库相对应的备份数据时产生时间最晚的日志记录在所述日志文件中的日志点位信息。举例来说,可根据原数据库对应的日志文件的文件大小及与备份时间点相对应的日志点位信息确定预设的同步点位信息,如,若日志文件的文件大小为x,与备份时间点相对应的日志点位为a,则同步点位信息设定为kx+a,其中k可根据实际的业务情况自行设置;也可将获取与原数据库相对应的备份数据时产生时间最晚的日志记录在日志文件中的日志点位信息作为预设的同步点位信息,若在获取备份数据时对应的时间为16日12时,其最晚的日志记录在日志文件中的日志点位为324点位,备份时间点对应的日志点位为102点位,则当同步到324点位时,判定目标数据库与原数据库同步,此时目标数据库中与获取备份数据时原数据库中数据保持一致。
本步骤中的预设的同步判断条件包含但不限于上述方法,例如,可将同步时间达到预设时间时判定目标数据库与原数据库达到同步。
在具体实施过程中,可在步骤S230和步骤S240依次执行后执行步骤S250。若步骤S250中判断结果为是,则本方法结束;若判断结果为否,则进一步执行步骤S230或S240。或者,在通过步骤S250判断出目标数据库与原数据库中的数据已同步时,还可以根据原数据库和目标数据库的类型选择与其类型相对应的其他数据库同步方式(例如传统的或官方的数据库同步方式)继续同步后续过程中新增的增量数据,该种方式尤其适用于快速创建与主数据库(即原数据库)相对应的从数据库(即目标数据库)的场景中。例如,当通过步骤S230获取到至少一条日志记录相对应的数据操作后,可通过步骤S240执行相应的数据操作,当在步骤S250中判断目标数据库与原数据库中的数据未同步时,可进一步执行步骤S230,如此循环执行,直至步骤S250中判断目标数据库与原数据库中的数据已同步时,本方法结束;或者,在步骤S230获取到日志记录后,步骤S240中每执行预设数目的数据操作,便执行一次步骤S250,若判断结果为否,则再次执行步骤S240,直至将步骤S230获取到的日志记录对应的数据操作均执行完毕后,步骤S230进一步获取日志记录,如此循环达到目标数据库与原数据库同步。本发明对步骤S230、步骤S240及步骤S250的具体执行方式不做限定。
可选的,当目标数据库为包含多个存储节点的分布式数据库时,在步骤步骤S210创建全量数据之后,可为全量数据中的各条数据记录设置分布列;并根据所述分布列,将全量数据中的各条数据记录分别迁移至目标数据库的各个存储节点中,具体地,针对全量数据中的每条数据记录,根据分布列确定该数据记录中包含的分布键,并按照预设的分布规则确定目标数据库中与分布键相对应的存储节点,并将该数据记录迁移到目标数据库中与所述分布键相对应的存储节点中。并根据待迁移的数据表对应的日志文件确定与备份时间点相对应的日志点位信息。在步骤S230从日志文件中获取在所述日志点位信息之后产生的日志记录,确定与日志记录相对应的数据操作之后,步骤S240针对目标数据库的各个存储节点中存储的全量数据执行所述数据操作。具体地,与所述日志记录相对应的数据操作具体为多个按照时间顺序依次排列的数据操作,则步骤S240进一步针对每个数据操作,根据分布列确定与该数据操作相对应的数据记录中包含的分布键,并按照预设的分布规则确定目标数据库中与所述分布键相对应的存储节点,针对与分布键相对应的存储节点中存储的全量数据执行所述数据操作。在此,预设的分布规则范围规则、和/或哈希规则等,本实施例不做具体限定。
可选的,当原数据库与目标数据库类型不同时,可将全量数据的各条数据记录中符合预设的字段转换规则的字段进行转换,则步骤S240在执行每个数据操作时,确定与该数据操作相对应的数据记录中包含的各个字段,针对其中符合预设的字段转换规则的字段进行转换。进一步可选的,当目标数据库为多个存储节点的分布式数据库时,将转换后的各条数据记录分别迁移至所述目标数据库的各个存储节点中。
由此可见,本方案根据备份数据获得相应的全量数据,由于原数据库通常不会对已经生成的备份数据执行写操作,所以在获取备份数据的过程中,无需对原数据库执行加锁操作,所以不会造成原数据库线上业务的中断,从而不影响原数据库的正常运行;在获取全量数据之后,不对原数据库中的数据进行读取等操作,仅需获取原数据库中的日志信息,通过日志信息对数据进行操作,从而实现原数据库与目标数据库的数据同步,并提高了数据同步效率;另外,当原数据库中包括多个数据表,对应的日志文件的数量为多个时,本实施例通过创建多个并行执行的进程,每个进程从该进程对应的日志文件中获取日志记录,确定与日志记录相对应的数据操作,最终针对目标数据库中存储的全量数据执行所述数据操作,从而进一步地提高了数据同步效率,降低同步延迟;此外,本实施例提供的数据同步方法在内存中执行,从而进一步地提高了数据同步效率,并且本方法在执行过程中无临时文件的产生,从而减少了系统资源的浪费。
图3示出了根据本发明一个实施例提供的一种数据同步装置的结构框图,如图3所示,该装置包括:获取模块31、点位信息确定模块32、数据操作确定模块33、以及同步模块34。
获取模块31,适于获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据。
本实施例中的数据同步方法可应用于关系型数据库,如mysql数据库等。可选的,为了避免由于临时文件而耗费大量的资源,也为了提高数据同步效率,本实施例提供的数据同步方法在内存中执行。
其中,在数据库中为避免发生意外停机等数据丢失的情况,会对数据库中的数据进行备份。通常情况下,数据库不对备份后产生的备份数据进行写操作。并且,备份后产生的备份数据可以为完全备份数据,或差异性备份数据等。其中,完全备份数据为对数据库中的用户表、系统表、索引、视图和存储过程等所有数据库对象进行备份产生的数据,而差异性备份为只针对自上次完全备份以来所改变的数据进行备份所产生的备份数据。本发明中的备份数据包含完全备份数据、和/或差异备份数据等,本发明对具体的备份数据类型不做具体限定。
可选的,原数据库相对应的备份数据包括多个不同时间备份的备份数据,则本步骤中可获取最近时间备份的备份数据,或者获取预设的备份数据。获取的备份数据可以为多个不同时间备份的备份数据,如获取2017.05.12.16:00时备份的完全备份数据,以及2017.06.12.16:00备份的差异备份数据等。具体的备份文件的选择本领域人员可根据实际业务情况自行设置。
其中,在目标数据库中创建与备份数据相对应的全量数据时,可通过多种方式实现。例如,由于备份数据通常以文本文件形式存在,则可在获取与原数据库相对应的备份数据后,根据文本文件中记录的表结构、及表数据等,通过CREATE等语句,将文件中的所有记录转换成INSERT语句。然后通过在目标库中执行该语句,从而创建出与备份数据相对应的全量数据。
并且,在本实施例中,不仅可以通过单线程实现备份数据的获取及全量数据的创建,也可以通过多线程实现备份数据的获取及全量数据的创建。通过多个并行执行的线程能够大幅缩短全量数据的创建时间。
可选的,由于备份数据中除了包含可供创建全量数据的表结构、表数据等信息外,还包含与创建全量数据无关的数据,如某些控制备份数据等。则可设定相应的过滤规则,将与创建全量数据无关的备份数据进行过滤。
可选的,本步骤中的全量数据还可以通过快照数据获得。具体地,为保证数据一致性,需针对待迁移的数据表执行加锁操作,开启用于针对待迁移的数据表执行快照处理的事务;当事务开启完毕后,针对待迁移的数据表执行解锁操作,并根据与待迁移的数据表相对应的快照数据获取全量数据。其中,在后续步骤S220中将执行加锁操作后对应的日志点位信息确定为与全量数据相对应的日志点位信息。进一步可选的,当待迁移的数据表为多个时,开启用于针对待迁移的数据表执行快照处理的事务的步骤和/或根据与待迁移的数据表相对应的快照数据获取所述全量数据的步骤由多个线程并行处理,以此来提高快照处理和/或全量数据的获取速度。
点位信息确定模块32,适于确定备份数据的备份时间点,根据原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息。
其中,数据库中含有记录数据库信息的各类日志文件,如查询日志、错误日志、事务日志、和/或二进制日志等,其中某类日志中按照时间顺序和/或操作顺序记录有针对数据库中的各个数据表执行的数据操作(如,事务日志或二进制日志等)。由于数据表中的每一条数据都是通过执行相应的数据操作而录入的,因此,通过该类日志能够确定数据表在各个时刻所对应的数据存储状态。为了便于确定各个数据操作的执行时间和/或执行顺序,该类日志文件中包含多个按照时间顺序和/或操作顺序排列的日志点位信息,每个日志点位信息对应于一条或多条日志记录,一条日志记录对应于数据库中针对至少一条数据执行的数据操作。相应地,在确定备份数据的备份时间点时,根据原数据库对应的日志文件确定与备份时间点相对应的日志点位信息。
可选的,为便于数据的管理,数据库通常为每一个或每几个数据表分配相应的日志文件。当原数据库含有多个表以及原数据库对应多个日志文件时,可创建多个进程。则点位信息确定模块32具体适于:分别针对每个日志文件,确定该日志文件中与备份时间点相对应的日志点位信息;将该日志文件中与所述备份时间点相对应的日志点位信息提供给与该日志文件相对应的进程。
例如,表1示出了与备份时间点相对应的日志点位信息。如表1所示,原数据库中包含log_1、log_2、log_3、以及log_4,共4个日志文件,其与备份时间点相对应的日志点位信息分别为log_1_12、log_2_23、log_3_34、以及log_4_56,并且,log_1与log_4的日志点位信息提供给进程1,log_2的日志点位信息提供给进程2,log_3的日志点位信息提供给进程3。
数据操作确定模块33,适于从日志文件中获取在与备份时间点相对应的日志点位信息之后产生的日志记录,确定与日志记录相对应的数据操作。
具体地,日志文件中在与备份时间点相对应的日志点位信息之后,记录有在上述全量数据的基础上新增的操作信息。该新增的操作信息中包含对全量数据的删除、更改、和/或插入等信息。根据与备份时间点相对应的日志点位信息之后产生的日志记录,可以获知在该日志点位之后对原数据库中数据执行的数据操作。可选的,可实时获取原数据库中备份时间点相对应的日志点位信息之后产生的每条日志记录,对该日志记录进行解析后获得原数据库执行过的数据操作信息,从而确定与该日志记录相对应的数据操作。举例来说,根据一条bin_log日志信息:
“Query OK,0 rowsaffectcd(0.44sec)
insertinto yong.tb1 values(1,′tom′)”
可判断出其相应的数据操作为“insertinto yong.tb1 values(1,′tom′)”,即在yong.tb1表中插入数据“(1,′tom′)”。
可选的,当原数据库中包括多个数据表,且原数据库对应的日志文件的数量为多个时,数据操作确定模块33具体适于:创建多个并行执行的进程,每个进程分别对应于至少一个日志文件;每个进程从该进程对应的日志文件中获取在所述日志点位信息之后产生的日志记录,确定与日志记录相对应的数据操作。
其中,多个并行执行的进程的数量根据以下中的至少一个确定:所述原数据库对应的日志文件的数量和/或大小、以及同步完成时间。例如,若原数据库对应的日志文件的数据量较多和/或日志文件较大时,而要求的同步完成时间较短,则可创建较多的并行执行的进程。本实施例对创建的进程数目及创建的具体规则不做限定,本领域技术人员可自行设定。
每个进程从该进程对应的日志文件中获取在日志点位信息之后产生的日志记录,确定与日志记录相对应的数据操作。以表1为例,进程1获取log_1中log_1_12之后产生的日志记录并确定相对应的数据操作,以及获取log_4中log_4_56之后产生的日志记录并确定相对应的数据操作;进程2获取log_2中log_2_23之后产生的日志记录并确定相对应的数据操作;进程3获取log_3中log_3_34之后的日志记录并确定相对应的数据操作。
可选的,可优先从内存中获取与备份时间点相对应的日志点位信息之后产生的日志记录。以bin_log为例,其在内存中存在binlog_cache,binlog_cache记录了对数据发生或潜在发生更改的SQL语句,当binlog_cache达到预设容量,或预设时间时,需将binlog_cache中的数据写入磁盘,但由于磁盘数据读写速度较慢,所以本步骤中可优选地从binlog_cache中读取日志文件中的日志记录,以提高日志读取速度。
可选的,由于日志文件中的日志点位通常对应于一条或多条日志记录,当与备份时间点相对应的日志点位信息对应于多条日志记录时,数据操作确定模块33具体适于:确定与备份时间点相对应的日志点位信息所对应的多条日志记录中产生时间最早的日志记录;获取所述产生时间最早的日志记录以及在所述产生时间最早的日志记录之后产生的各条日志记录。其中,各个日志点位信息根据预设的时间间隔进行设置,或者根据预设的日志记录条数进行设置,如每隔5分钟设置一个日志点位,或每隔10条日志记录设置一个日志点位。
并且,后续的同步模块34具体适于当确定与日志记录相对应的数据操作的操作类型为插入类型时,进一步获取该数据操作对应的主键信息,并判断全量数据中是否包含与该主键信息相同的数据记录,若是,则根据该数据操作对与主键信息相同的数据记录进行替换。举例来说,与备份时间点相对应的日志点位为102点位,102点位对应于10条日志记录,则确定出102点位对应的10条日志记录中最早的日志记录为102-1,则获取102-1之后的所有日志记录。若根据日志记录102-4确定是对主键为“1”的数据执行插入操作时,则判断全量数据中是否包含与该主键信息相同的数据记录,若有,则将全量数据中的主键为“1”的数据进行替换,从而保证数据库系统的幂等性。
可选的,数据操作确定模块33,适于将当前已获取的日志记录在日志文件中对应的日志点位信息记录在预设的进度表中,当获取在该日志点位信息之后产生的日志记录的过程中断后再次执行时,可根据进度表中记录的日志点位信息从日志文件中获取日志记录。从而可以实现数据的断点续传。另外,当创建了多个并行执行的进程时,可为每个进程分配相应的进度表,并将每个进程已获取的日志记录在日志文件中对应的日志点位信息记录在与该进程相对应的进度表中。
进一步可选的,当进度表中记录的日志点位信息对应于多条日志记录时,数据操作确定模块33进一步适于:确定进度表中记录的日志点位信息所对应的多条日志记录中产生时间最早的日志记录,并获取产生时间最早的日志记录以及在产生时间最早的日志记录之后产生的各条日志记录。并且,当确定与日志记录相对应的数据操作的操作类型为插入类型时,获取所述数据操作对应的主键信息,并判断全量数据中是否包含与所述主键信息相同的数据记录,若是,则根据所述数据操作对与所述主键信息相同的数据记录进行替换。此处,本领域技术人员能够理解的是,由于备份时间点相对应的日志点位信息之后产生的日志记录往往为多条,相应地,在后续的同步模块34中,通常会针对全量数据依次执行各条日志记录所对应的数据操作。相应地,在判断全量数据中是否包含与主键信息相同的数据记录时,该全量数据是指:截至当前时刻,针对全量数据执行与当前已获取的日志记录相对应的数据操作后的数据内容。例如,假设当前已经在获取模块31创建的全量数据的基础上执行了N条日志记录所对应的数据操作(N为大于或等于1的自然数),那么,当确定与第N+1条日志记录相对应的数据操作的操作类型为插入类型时,获取与第N+1条日志记录相对应的数据操作对应的主键信息,并且,在获取模块31创建的全量数据的基础上执行了N条日志记录所对应的数据操作后得到的数据中,判断是否包含与第N+1条日志记录相对应的数据操作对应的主键信息相同的数据记录,若是,则根据与第N+1条日志记录相对应的数据操作对与该主键信息相同的数据记录进行替换。
举例来说,进度表position_log中的一个日志点位对应于10条日志记录,当在102点位的第3条日志记录后发生中断时,position_log中记录的当前已获取的日志记录在日志文件中对应的日志点位为102点位。当再次执行时确定102点位所对应的多条日志记录中产生时间最早的日志记录为102-1(102点位对应的第一条日志记录),则获取102-1之后产生的各条日志记录。由上述可知,当在102点位的第3条日志记录后发生中断时,在再次执行时获取的是102点位的第1条及其以后的日志记录,则使得获取的日志记录中出现冗余数据,即102点位的第1条至第3条日志记录重复获取。若确定与冗余日志记录102-2相对应的数据操作的操作类型为插入类型时,由于已执行过该插入操作,碍于数据库中主键的唯一性,使得在对同一主键数据进行插入时出现故障,所以当确定与日志记录102-2相对应的数据操作的操作类型为插入类型时,获取数据操作对应的主键信息,并判断全量数据中是否已存在与所述主键信息相同的数据记录,若是,则根据数据操作对与所述信息相同的数据记录进行替换。例如,在mysql数据库中,当全量数据中已存在与主键信息相同的数据记录时,可直接应用“replace_into”命令将所述主键信息相同的数据记录进行替换。
同步模块34,适于针对目标数据库中存储的全量数据执行所述数据操作。
根据数据操作确定模块33确定的与日志记录相对应的数据操作,对目标数据库中存储的全量数据执行该数据操作。例如,若数据操作确定模块33中确定与日志记录相对应的数据操作为对table1中的主键值为“1”的数据进行删除,则将目标数据库中的全量数据中table1中的主键值为“1”的数据进行删除。
当数据操作确定模块33中有多个并行执行的进程时,同步模块34具体适于:每个进程根据步骤数据操作确定模块33确定的与日志记录相对应的数据操作,对目标数据库中存储的全量数据执行所述数据操作。
例如,若数据操作确定模块33中进程1确定的数据操作为在tab.1中插入data1,进程2确定的数据操作为在tab.2中更新data21,进程3确定的数据操作为在tab.3中删除data31,则进程1、2和3分别执行插入、更新、以及删除操作。
可选的,同步模块34进一步适于:根据预设的同步判断条件确定目标数据库与原数据库中的数据是否同步。
其中,在一种情形中,预设的同步判断条件可以为:将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;将当前产生时间最晚的日志记录在所述日志文件中的日志点位信息确定为第二日志点位信息;若第一日志点位信息与第二日志点位信息之间的间隔小于预设阈值,则确定目标数据库与原数据库中的数据同步。例如,当前执行的数据操作对应于的日志记录在日志文件中的日志点位为102点位(第一日志点位信息),则表明目标数据库已完成了在102点位之前的数据的同步,而当前原数据库中产生时间最晚的日志记录对应于日志点位111,当预设阈值为10时,则确定当前目标数据库与原数据库中的数据同步,本方法结束。
在另一种情形中,预设的同步判断条件还可以为:将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;若所述第一日志点位信息与预设的同步点位信息相同,则确定目标数据库与原数据库中的数据同步。其中,预设的同步点位信息根据以下中的至少一项确定:原数据库对应的日志文件的文件大小、与备份时间点相对应的日志点位信息、以及获取与原数据库相对应的备份数据时产生时间最晚的日志记录在所述日志文件中的日志点位信息。举例来说,可根据原数据库对应的日志文件的文件大小及与备份时间点相对应的日志点位信息确定预设的同步点位信息,如,若日志文件的文件大小为x,与备份时间点相对应的日志点位为a,则同步点位信息设定为kx+a,其中k可根据实际的业务情况自行设置;也可将获取与原数据库相对应的备份数据时产生时间最晚的日志记录在日志文件中的日志点位信息作为预设的同步点位信息,若在获取备份数据时对应的时间为16日12时,其最晚的日志记录在日志文件中的日志点位为324点位,备份时间点对应的日志点位为102点位,则当同步到324点位时,判定目标数据库与原数据库同步,此时目标数据库中与获取备份数据时原数据库中数据保持一致。
本模块中的预设的同步判断条件包含但不限于上述方法,例如,可将同步时间达到预设时间时判定目标数据库与原数据库达到同步。
可选的,当目标数据库为包含多个存储节点的分布式数据库时,在步骤获取模块31创建全量数据之后,可为全量数据中的各条数据记录设置分布列;并根据所述分布列,将全量数据中的各条数据记录分别迁移至目标数据库的各个存储节点中,具体地,针对全量数据中的每条数据记录,根据分布列确定该数据记录中包含的分布键,并按照预设的分布规则确定目标数据库中与分布键相对应的存储节点,并将该数据记录迁移到目标数据库中与所述分布键相对应的存储节点中。并根据待迁移的数据表对应的日志文件确定与备份时间点相对应的日志点位信息。在数据操作确定模块33从日志文件中获取在所述日志点位信息之后产生的日志记录,确定与日志记录相对应的数据操作之后,同步模块34针对目标数据库的各个存储节点中存储的全量数据执行所述数据操作。具体地,与所述日志记录相对应的数据操作具体为多个按照时间顺序依次排列的数据操作,则同步模块34进一步针对每个数据操作,根据分布列确定与该数据操作相对应的数据记录中包含的分布键,并按照预设的分布规则确定目标数据库中与所述分布键相对应的存储节点,针对与分布键相对应的存储节点中存储的全量数据执行所述数据操作。在此,预设的分布规则范围规则、和/或哈希规则等,本实施例不做具体限定。
可选的,当原数据库与目标数据库类型不同时,可将全量数据的各条数据记录中符合预设的字段转换规则的字段进行转换,则同步模块34在执行每个数据操作时,确定与该数据操作相对应的数据记录中包含的各个字段,针对其中符合预设的字段转换规则的字段进行转换。进一步可选的,当目标数据库为多个存储节点的分布式数据库时,将转换后的各条数据记录分别迁移至所述目标数据库的各个存储节点中。
可选的,当目标数据库为多个不同类型的数据库时,可设置多个数据迁移模块,用于针对不同类型的数据库提供相应的数据迁移方法,并通过预设的调用接口对多个数据迁移模块进行调用。其中,预设的调用接口可以为一个,其可以通过虚函数来实现。
由此可见,本方案根据备份数据获得相应的全量数据,由于原数据库通常不会对已经生成的备份数据执行写操作,所以在获取备份数据的过程中,无需对原数据库执行加锁操作,所以不会造成原数据库线上业务的中断,从而不影响原数据库的正常运行;在获取全量数据之后,不对原数据库中的数据进行读取等操作,仅需获取原数据库中的日志信息,通过日志信息对数据进行操作,从而实现原数据库与目标数据库的数据同步,并提高了数据同步效率;另外,当原数据库中包括多个数据表,对应的日志文件的数量为多个时,本实施例通过创建多个并行执行的进程,每个进程从该进程对应的日志文件中获取日志记录,确定与日志记录相对应的数据操作,最终针对目标数据库中存储的全量数据执行所述数据操作,从而进一步地提高了数据同步效率,降低同步延迟;此外,本实施例提供的数据同步方法在内存中执行,从而进一步地提高了数据同步效率,并且本方法在执行过程中无临时文件的产生,从而减少了系统资源的浪费。
根据本发明一个实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的数据迁移方法。
图4示出了根据本发明一个实施例提供的一种电子设备的结构示意图,本发明具体实施例并不对终端的具体实现做限定。
如图4所示,该电子设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述数据迁移方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。终端包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行以下操作:
获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据;
确定所述备份数据的备份时间点,根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息;
从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;
针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的数据同步装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:A1.一种数据同步方法,包括:
获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据;
确定所述备份数据的备份时间点,根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息;
从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;
针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步。
A2.根据A1所述的方法,其中,所述原数据库中包括多个数据表,且所述原数据库对应的日志文件的数量为多个;
则所述从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;针对所述目标数据库中存储的全量数据执行所述数据操作的步骤具体包括:
创建多个并行执行的进程,每个进程分别对应于至少一个日志文件;
每个进程从该进程对应的日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;针对所述目标数据库中存储的全量数据执行所述数据操作。
A3.根据A2所述的方法,其中,所述根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息的步骤具体包括:
分别针对每个日志文件,确定该日志文件中与所述备份时间点相对应的日志点位信息;
将该日志文件中与所述备份时间点相对应的日志点位信息提供给与该日志文件相对应的进程。
A4.根据A2或A3所述的方法,其中,所述多个并行执行的进程的数量根据以下中的至少一个确定:
所述原数据库对应的日志文件的数量和/或大小、以及同步完成时间。
A5.根据A1-A4任一所述的方法,其中,所述针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步的步骤进一步包括:
根据预设的同步判断条件确定所述目标数据库与所述原数据库中的数据是否同步。
A6.根据A5所述的方法,其中,所述预设的同步判断条件包括:
将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;
将当前产生时间最晚的日志记录在所述日志文件中的日志点位信息确定为第二日志点位信息;
若所述第一日志点位信息与所述第二日志点位信息之间的间隔小于预设阈值,则确定所述目标数据库与所述原数据库中的数据同步。
A7.根据A5所述的方法,其中,所述预设的同步判断条件包括:
将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;
若所述第一日志点位信息与预设的同步点位信息相同,则确定所述目标数据库与所述原数据库中的数据同步;
其中,所述预设的同步点位信息根据以下中的至少一项确定:所述原数据库对应的日志文件的文件大小、与所述备份时间点相对应的日志点位信息、以及获取与原数据库相对应的备份数据时产生时间最晚的日志记录在所述日志文件中的日志点位信息。
A8.根据A1-A7任一所述的方法,其中,当所述与所述备份时间点相对应的日志点位信息对应于多条日志记录时,所述从所述日志文件中获取在所述日志点位信息之后产生的日志记录的步骤具体包括:
确定与所述备份时间点相对应的日志点位信息所对应的多条日志记录中产生时间最早的日志记录;
获取所述产生时间最早的日志记录以及在所述产生时间最早的日志记录之后产生的各条日志记录;
且所述针对所述目标数据库中存储的全量数据执行所述数据操作的步骤具体包括:
当所述数据操作的操作类型为插入类型时,获取所述数据操作对应的主键信息;
判断所述全量数据中是否包含与所述主键信息相同的数据记录,若是,则根据所述数据操作对所述与所述主键信息相同的数据记录进行替换。
A9.根据A1-A8任一所述的方法,其中,所述从所述日志文件中获取在所述日志点位信息之后产生的日志记录的步骤具体包括:
将当前已获取的日志记录在所述日志文件中对应的日志点位信息记录在预设的进度表中;
当获取在所述日志点位信息之后产生的日志记录的过程中断后再次执行时,根据所述进度表中记录的日志点位信息从所述日志文件中获取日志记录。
A10.根据A9所述的方法,其中,当所述进度表中记录的日志点位信息对应于多条日志记录时,所述根据所述进度表中记录的日志点位信息从所述日志文件中获取日志记录的步骤具体包括:
确定所述进度表中记录的日志点位信息所对应的多条日志记录中产生时间最早的日志记录;
获取所述产生时间最早的日志记录以及在所述产生时间最早的日志记录之后产生的各条日志记录;
且所述针对所述目标数据库中存储的全量数据执行所述数据操作的步骤具体包括:
当所述数据操作的操作类型为插入类型时,获取所述数据操作对应的主键信息;
判断所述全量数据中是否包含与所述主键信息相同的数据记录,若是,则根据所述数据操作对所述与所述主键信息相同的数据记录进行替换。
A11.根据A1-A10任一所述的方法,其中,所述方法在内存中执行,应用于关系型数据库。
本发明还公开了:B12.一种数据同步装置,包括:
获取模块,适于获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据;
点位信息确定模块,适于确定所述备份数据的备份时间点,根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息;
数据操作确定模块,适于从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;
同步模块,适于针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步。
B13.根据B12所述的装置,其中,所述原数据库中包括多个数据表,且所述原数据库对应的日志文件的数量为多个;
则所述数据操作确定模块具体适于:
创建多个并行执行的进程,每个进程分别对应于至少一个日志文件;
每个进程从该进程对应的日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作。
B14.根据B13所述的装置,其中,所述点位信息确定模块具体适于:
分别针对每个日志文件,确定该日志文件中与所述备份时间点相对应的日志点位信息;
将该日志文件中与所述备份时间点相对应的日志点位信息提供给与该日志文件相对应的进程。
B15.根据B13或B14所述的装置,其中,所述多个并行执行的进程的数量根据以下中的至少一个确定:
所述原数据库对应的日志文件的数量和/或大小、以及同步完成时间。
B16.根据B12-B15任一所述的装置,其中,所述同步模块进一步适于:
根据预设的同步判断条件确定所述目标数据库与所述原数据库中的数据是否同步。
B17.根据B16所述的装置,其中,所述预设的同步判断条件包括:
将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;
将当前产生时间最晚的日志记录在所述日志文件中的日志点位信息确定为第二日志点位信息;
若所述第一日志点位信息与所述第二日志点位信息之间的间隔小于预设阈值,则确定所述目标数据库与所述原数据库中的数据同步。
B18.根据B17所述的装置,其中,所述预设的同步判断条件包括:
将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;
若所述第一日志点位信息与预设的同步点位信息相同,则确定所述目标数据库与所述原数据库中的数据同步;
其中,所述预设的同步点位信息根据以下中的至少一项确定:所述原数据库对应的日志文件的文件大小、与所述备份时间点相对应的日志点位信息、以及获取与原数据库相对应的备份数据时产生时间最晚的日志记录在所述日志文件中的日志点位信息。
B19.根据B12-B18任一所述的装置,其中,当所述与所述备份时间点相对应的日志点位信息对应于多条日志记录时,所述数据操作确定模块具体适于:
确定与所述备份时间点相对应的日志点位信息所对应的多条日志记录中产生时间最早的日志记录;
获取所述产生时间最早的日志记录以及在所述产生时间最早的日志记录之后产生的各条日志记录;
且所述同步模块具体适于:
当所述数据操作的操作类型为插入类型时,获取所述数据操作对应的主键信息;
判断所述全量数据中是否包含与所述主键信息相同的数据记录,若是,则根据所述数据操作对所述与所述主键信息相同的数据记录进行替换。
B20.根据B12-B19任一所述的装置,其中,所述数据操作确定模块具体适于:
将当前已获取的日志记录在所述日志文件中对应的日志点位信息记录在预设的进度表中;
当获取在所述日志点位信息之后产生的日志记录的过程中断后再次执行时,根据所述进度表中记录的日志点位信息从所述日志文件中获取日志记录。
B21.根据B20所述的装置,其中,当所述进度表中记录的日志点位信息对应于多条日志记录时,所述数据操作确定模块具体适于:
确定所述进度表中记录的日志点位信息所对应的多条日志记录中产生时间最早的日志记录;
获取所述产生时间最早的日志记录以及在所述产生时间最早的日志记录之后产生的各条日志记录;
且所述同步模块具体适于:
当所述数据操作的操作类型为插入类型时,获取所述数据操作对应的主键信息;
判断所述全量数据中是否包含与所述主键信息相同的数据记录,若是,则根据所述数据操作对所述与所述主键信息相同的数据记录进行替换。
B22.根据B12-B21任一所述的装置,其中,所述装置应用于关系型数据库。
本发明还公开了:C23.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如A1-A11中任一项所述的数据同步方法对应的操作。
本发明还公开了:D24.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如A1-A11中任一项所述的数据同步方法对应的操作。
Claims (10)
1.一种数据同步方法,包括:
获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据;
确定所述备份数据的备份时间点,根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息;
从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;
针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步。
2.根据权利要求1所述的方法,其中,所述原数据库中包括多个数据表,且所述原数据库对应的日志文件的数量为多个;
则所述从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;针对所述目标数据库中存储的全量数据执行所述数据操作的步骤具体包括:
创建多个并行执行的进程,每个进程分别对应于至少一个日志文件;
每个进程从该进程对应的日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;针对所述目标数据库中存储的全量数据执行所述数据操作。
3.根据权利要求2所述的方法,其中,所述根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息的步骤具体包括:
分别针对每个日志文件,确定该日志文件中与所述备份时间点相对应的日志点位信息;
将该日志文件中与所述备份时间点相对应的日志点位信息提供给与该日志文件相对应的进程。
4.根据权利要求2或3所述的方法,其中,所述多个并行执行的进程的数量根据以下中的至少一个确定:
所述原数据库对应的日志文件的数量和/或大小、以及同步完成时间。
5.根据权利要求1-4任一所述的方法,其中,所述针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步的步骤进一步包括:
根据预设的同步判断条件确定所述目标数据库与所述原数据库中的数据是否同步。
6.根据权利要求5所述的方法,其中,所述预设的同步判断条件包括:
将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;
将当前产生时间最晚的日志记录在所述日志文件中的日志点位信息确定为第二日志点位信息;
若所述第一日志点位信息与所述第二日志点位信息之间的间隔小于预设阈值,则确定所述目标数据库与所述原数据库中的数据同步。
7.根据权利要求5所述的方法,其中,所述预设的同步判断条件包括:
将当前执行的数据操作所对应的日志记录在日志文件中的日志点位信息确定为第一日志点位信息;
若所述第一日志点位信息与预设的同步点位信息相同,则确定所述目标数据库与所述原数据库中的数据同步;
其中,所述预设的同步点位信息根据以下中的至少一项确定:所述原数据库对应的日志文件的文件大小、与所述备份时间点相对应的日志点位信息、以及获取与原数据库相对应的备份数据时产生时间最晚的日志记录在所述日志文件中的日志点位信息。
8.一种数据同步装置,包括:
获取模块,适于获取与原数据库相对应的备份数据,在目标数据库中创建与所述备份数据相对应的全量数据;
点位信息确定模块,适于确定所述备份数据的备份时间点,根据所述原数据库对应的日志文件确定与所述备份时间点相对应的日志点位信息;
数据操作确定模块,适于从所述日志文件中获取在所述日志点位信息之后产生的日志记录,确定与所述日志记录相对应的数据操作;
同步模块,适于针对所述目标数据库中存储的全量数据执行所述数据操作,直至所述目标数据库与所述原数据库中的数据同步。
9.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的数据同步方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的数据同步方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710555263.2A CN107391628B (zh) | 2017-06-30 | 2017-06-30 | 数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710555263.2A CN107391628B (zh) | 2017-06-30 | 2017-06-30 | 数据同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391628A true CN107391628A (zh) | 2017-11-24 |
CN107391628B CN107391628B (zh) | 2021-04-09 |
Family
ID=60335576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710555263.2A Active CN107391628B (zh) | 2017-06-30 | 2017-06-30 | 数据同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391628B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052623A (zh) * | 2017-12-16 | 2018-05-18 | 沈阳明曦科技有限公司 | MySQL主从数据库的同步方法及同步系统 |
CN108153492A (zh) * | 2017-12-22 | 2018-06-12 | 联想(北京)有限公司 | 数据处理方法、系统和电子设备 |
CN108304527A (zh) * | 2018-01-25 | 2018-07-20 | 杭州哲信信息技术有限公司 | 一种数据提取方法 |
CN108647270A (zh) * | 2018-04-28 | 2018-10-12 | 尚谷科技(天津)有限公司 | 一种基于容错时间日志的数据迁移的方法 |
CN109033186A (zh) * | 2018-06-27 | 2018-12-18 | 东软集团股份有限公司 | 数据一致性检测方法、装置、存储介质及电子设备 |
CN109299191A (zh) * | 2018-09-18 | 2019-02-01 | 新华三大数据技术有限公司 | 一种数据分布方法、装置、服务器及计算机存储介质 |
CN109413266A (zh) * | 2018-09-29 | 2019-03-01 | 上海爱优威软件开发有限公司 | 一种基于跌落检测的数据备份方法及终端 |
CN109871295A (zh) * | 2017-12-01 | 2019-06-11 | 北京金山云网络技术有限公司 | 一种数据备份方法、备份装置、电子设备及存储介质 |
CN110083657A (zh) * | 2019-02-27 | 2019-08-02 | 北京字节跳动网络技术有限公司 | 数据互通方法、装置、终端及存储介质 |
CN110209735A (zh) * | 2019-05-05 | 2019-09-06 | 深圳市腾讯计算机系统有限公司 | 数据库备份方法、数据库备份装置、计算设备和存储介质 |
CN110673797A (zh) * | 2019-09-20 | 2020-01-10 | 浪潮电子信息产业股份有限公司 | 一种分布式块存储服务中的逻辑卷拷贝方法 |
CN111008123A (zh) * | 2019-10-23 | 2020-04-14 | 贝壳技术有限公司 | 数据库测试方法、装置、存储介质及电子设备 |
CN111061435A (zh) * | 2019-12-29 | 2020-04-24 | 浪潮电子信息产业股份有限公司 | 一种厚置备卷创建方法、装置及电子设备和存储介质 |
CN111460028A (zh) * | 2020-03-09 | 2020-07-28 | 拉扎斯网络科技(上海)有限公司 | 数据传输方法、数据传输装置、存储介质和电子设备 |
WO2021027956A1 (zh) * | 2019-08-15 | 2021-02-18 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易处理方法及装置 |
CN112882861A (zh) * | 2021-02-18 | 2021-06-01 | 北京思特奇信息技术股份有限公司 | 一种业务配置数据装载与恢复系统及方法 |
CN113010496A (zh) * | 2021-03-19 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、装置、设备和存储介质 |
CN113297230A (zh) * | 2020-07-27 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据验证方法及装置 |
CN116541469A (zh) * | 2023-07-07 | 2023-08-04 | 深圳市科力锐科技有限公司 | 数据同步的实现方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289357B1 (en) * | 1998-04-24 | 2001-09-11 | Platinum Technology Ip, Inc. | Method of automatically synchronizing mirrored database objects |
CN102917072A (zh) * | 2012-10-31 | 2013-02-06 | 北京奇虎科技有限公司 | 用于数据服务器集群之间进行数据迁移的设备、系统及方法 |
CN102982085A (zh) * | 2012-10-31 | 2013-03-20 | 北京奇虎科技有限公司 | 数据迁移系统和方法 |
CN104881494A (zh) * | 2015-06-12 | 2015-09-02 | 北京奇虎科技有限公司 | 与Redis服务器进行数据同步的方法、装置和系统 |
CN105183852A (zh) * | 2015-09-08 | 2015-12-23 | 网易(杭州)网络有限公司 | 一种数据库迁移方法和装置 |
CN105528368A (zh) * | 2014-09-30 | 2016-04-27 | 北京金山云网络技术有限公司 | 一种数据库迁移方法及装置 |
CN106055698A (zh) * | 2016-06-14 | 2016-10-26 | 智者四海(北京)技术有限公司 | 数据迁移方法、代理节点及数据库实例 |
CN110019506A (zh) * | 2017-09-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 日志记录处理方法和装置 |
-
2017
- 2017-06-30 CN CN201710555263.2A patent/CN107391628B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289357B1 (en) * | 1998-04-24 | 2001-09-11 | Platinum Technology Ip, Inc. | Method of automatically synchronizing mirrored database objects |
CN102917072A (zh) * | 2012-10-31 | 2013-02-06 | 北京奇虎科技有限公司 | 用于数据服务器集群之间进行数据迁移的设备、系统及方法 |
CN102982085A (zh) * | 2012-10-31 | 2013-03-20 | 北京奇虎科技有限公司 | 数据迁移系统和方法 |
CN105528368A (zh) * | 2014-09-30 | 2016-04-27 | 北京金山云网络技术有限公司 | 一种数据库迁移方法及装置 |
CN104881494A (zh) * | 2015-06-12 | 2015-09-02 | 北京奇虎科技有限公司 | 与Redis服务器进行数据同步的方法、装置和系统 |
CN105183852A (zh) * | 2015-09-08 | 2015-12-23 | 网易(杭州)网络有限公司 | 一种数据库迁移方法和装置 |
CN106055698A (zh) * | 2016-06-14 | 2016-10-26 | 智者四海(北京)技术有限公司 | 数据迁移方法、代理节点及数据库实例 |
CN110019506A (zh) * | 2017-09-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 日志记录处理方法和装置 |
Non-Patent Citations (3)
Title |
---|
巍红: "《从零开始学Linux》", 31 December 2010, 北京:中国铁道出版社 * |
张剑: "《信息安全技术:全2册》", 31 May 2015, 成都:电子科技大学出版社 * |
李小华,周毅: "《医院信息系统数据库技术与应用》", 31 October 2015, 广州:中山大学出版社 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871295A (zh) * | 2017-12-01 | 2019-06-11 | 北京金山云网络技术有限公司 | 一种数据备份方法、备份装置、电子设备及存储介质 |
CN108052623A (zh) * | 2017-12-16 | 2018-05-18 | 沈阳明曦科技有限公司 | MySQL主从数据库的同步方法及同步系统 |
CN108153492A (zh) * | 2017-12-22 | 2018-06-12 | 联想(北京)有限公司 | 数据处理方法、系统和电子设备 |
CN108153492B (zh) * | 2017-12-22 | 2021-09-14 | 联想(北京)有限公司 | 数据处理方法、系统和电子设备 |
CN108304527A (zh) * | 2018-01-25 | 2018-07-20 | 杭州哲信信息技术有限公司 | 一种数据提取方法 |
CN108647270A (zh) * | 2018-04-28 | 2018-10-12 | 尚谷科技(天津)有限公司 | 一种基于容错时间日志的数据迁移的方法 |
CN109033186A (zh) * | 2018-06-27 | 2018-12-18 | 东软集团股份有限公司 | 数据一致性检测方法、装置、存储介质及电子设备 |
CN109033186B (zh) * | 2018-06-27 | 2020-11-27 | 东软集团股份有限公司 | 数据一致性检测方法、装置、存储介质及电子设备 |
CN109299191A (zh) * | 2018-09-18 | 2019-02-01 | 新华三大数据技术有限公司 | 一种数据分布方法、装置、服务器及计算机存储介质 |
CN109413266A (zh) * | 2018-09-29 | 2019-03-01 | 上海爱优威软件开发有限公司 | 一种基于跌落检测的数据备份方法及终端 |
CN110083657A (zh) * | 2019-02-27 | 2019-08-02 | 北京字节跳动网络技术有限公司 | 数据互通方法、装置、终端及存储介质 |
CN110209735A (zh) * | 2019-05-05 | 2019-09-06 | 深圳市腾讯计算机系统有限公司 | 数据库备份方法、数据库备份装置、计算设备和存储介质 |
CN110209735B (zh) * | 2019-05-05 | 2024-04-30 | 深圳市腾讯计算机系统有限公司 | 数据库备份方法、数据库备份装置、计算设备和存储介质 |
WO2021027956A1 (zh) * | 2019-08-15 | 2021-02-18 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易处理方法及装置 |
CN110673797A (zh) * | 2019-09-20 | 2020-01-10 | 浪潮电子信息产业股份有限公司 | 一种分布式块存储服务中的逻辑卷拷贝方法 |
CN111008123A (zh) * | 2019-10-23 | 2020-04-14 | 贝壳技术有限公司 | 数据库测试方法、装置、存储介质及电子设备 |
CN111008123B (zh) * | 2019-10-23 | 2023-10-24 | 贝壳技术有限公司 | 数据库测试方法、装置、存储介质及电子设备 |
CN111061435A (zh) * | 2019-12-29 | 2020-04-24 | 浪潮电子信息产业股份有限公司 | 一种厚置备卷创建方法、装置及电子设备和存储介质 |
CN111460028A (zh) * | 2020-03-09 | 2020-07-28 | 拉扎斯网络科技(上海)有限公司 | 数据传输方法、数据传输装置、存储介质和电子设备 |
CN113297230A (zh) * | 2020-07-27 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据验证方法及装置 |
CN113297230B (zh) * | 2020-07-27 | 2024-03-08 | 阿里巴巴集团控股有限公司 | 数据验证方法及装置 |
CN112882861A (zh) * | 2021-02-18 | 2021-06-01 | 北京思特奇信息技术股份有限公司 | 一种业务配置数据装载与恢复系统及方法 |
CN112882861B (zh) * | 2021-02-18 | 2023-11-07 | 北京思特奇信息技术股份有限公司 | 一种业务配置数据装载与恢复系统及方法 |
CN113010496A (zh) * | 2021-03-19 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、装置、设备和存储介质 |
CN113010496B (zh) * | 2021-03-19 | 2024-03-08 | 腾讯云计算(北京)有限责任公司 | 一种数据迁移方法、装置、设备和存储介质 |
CN116541469A (zh) * | 2023-07-07 | 2023-08-04 | 深圳市科力锐科技有限公司 | 数据同步的实现方法、装置、设备及存储介质 |
CN116541469B (zh) * | 2023-07-07 | 2024-04-09 | 深圳市科力锐科技有限公司 | 数据同步的实现方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107391628B (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391628A (zh) | 数据同步方法及装置 | |
CN107357883A (zh) | 数据迁移方法及装置 | |
US11240035B2 (en) | Systems and methods for extending the utility of blockchains through use of related child blockchains | |
CN107391634A (zh) | 数据迁移方法及装置 | |
CN107391635A (zh) | 数据同步系统及方法 | |
US9183268B2 (en) | Partition level backup and restore of a massively parallel processing database | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
US11461304B2 (en) | Signature-based cache optimization for data preparation | |
US20170109378A1 (en) | Distributed pipeline optimization for data preparation | |
CN108055343A (zh) | 用于机房的数据同步方法及装置 | |
CN106933703A (zh) | 一种数据库数据备份的方法、装置及电子设备 | |
WO2021047541A1 (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN108573019B (zh) | 一种数据迁移方法、装置、电子设备及可读存储介质 | |
CN107451013A (zh) | 基于分布式系统的数据恢复方法、装置及系统 | |
EP3362808B1 (en) | Cache optimization for data preparation | |
WO2015183316A1 (en) | Partially sorted log archive | |
KR20190063835A (ko) | 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템 | |
CN107111534A (zh) | 一种数据处理的方法和装置 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN109710698B (zh) | 一种数据汇聚方法、装置、电子设备及介质 | |
CN110442645B (zh) | 数据索引方法及装置 | |
CN106528876A (zh) | 分布式系统的信息处理方法及分布式信息处理系统 | |
CN110222123A (zh) | 用于教育平台的Hive动态分区加载的方法及电子设备 | |
CN108256019A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |