数据同步方法及装置、计算机设备与可读介质与流程

文档序号:19610172发布日期:2020-01-03 14:02阅读:来源:国知局

技术特征:

1.一种数据同步方法,其特征在于,所述方法包括:

将第一系统的源数据库的结构对象迁移至第二系统的目标数据库中;

将所述源数据库中预设历史时间点对应的全量数据迁移至所述目标数据库中;

将所述源数据库中所述预设历史时间点后对应的实时数据批量同步至所述目标数据库中。

2.根据权利要求1所述的方法,其特征在于,将第一系统的源数据库的结构对象迁移至第二系统的目标数据库中,包括:

将所述第一系统的所述源数据库中的源库/表名称和源表中的字段类型经过映射后迁移至所述第二系统的所述目标数据库中。

3.根据权利要求2所述的方法,其特征在于,将所述第一系统的所述源数据库中的源库/表名称和源表中的字段类型经过映射后迁移至所述第二系统的所述目标数据库中,包括:

从所述第一系统的所述源数据库中读取建表语句;所述建表语句中包括所创建的所述源库/表名称以及源表中的字段类型;

检测所述建表语句中所创建的所述源库/表名称是否在预先配置的需要迁移的库/表白名单中;

若在,根据预设的库表映射器,将所述建表语句中的所述源库/表名称映射为所述目标数据库中对应的目标库/表名称,同时根据预设的字段类型映射表,将所述源表中的字段类型映射为目标表中的字段类型;

根据所述目标库/表名称,检测预先设置的进度管理节点中存储的库/表列表中是否包括对应的所述目标库/表名称;所述进度管理节点独立于所述第一系统和所述第二系统来实现信息持久化存储;

若未包括,对所述建表语句分别进行语法解析和语法转换,得到转换后的目标建表语句;

根据所述目标建表语句,在所述第二系统的所述目标数据库中创建对应的所述目标库/表;

进一步地,所述方法还包括:将所述目标库/表名称存入所述进度管理节点中。

4.根据权利要求3所述的方法,其特征在于,若所述建表语句包括注释和/或唯一键,对所述建表语句分别进行语法解析和语法转换,包括:

对所述建表语句中的所述注释和/或所述唯一键分别进行语法解析和语法转换,以使得所述注释和所述唯一键能够被迁移至所述第二系统的所述目标数据库中。

5.根据权利要求1所述的方法,其特征在于,将所述源数据库中预设历史时间点对应的全量数据迁移至所述目标数据库中,包括:

采用多线程并发处理的方式从所述源数据库中获取所述预设历史时间点对应的所述全量数据中、未迁移的各数据及对应的源库/表名称;

根据预设的库表映射器,将各所述数据的源库/表名称映射为所述目标数据库中对应的所述目标库/表名称;

将各所述数据以及对应的所述目标库/表名称,写入预设的内存中;

判断所述内存的写入时长是否达到预设时长,或者所述内存中写入的总数据的大小是否达到预设阈值;

若是,将所述内存中写入的各所述数据以及对应的所述目标库/表名称写入预设的队列中;

通过轮询所述队列,将所述队列中的各所述数据,按照对应的所述目标库/表名称写入至所述目标数据库的全量表中。

6.根据权利要求5所述的方法,其特征在于,采用多线程并发处理的方式从所述源数据库中获取所述预设历史时间点对应的所述全量数据中、未迁移的各数据及对应的源库/表名称,包括:

采用多线程并发处理的方式,按照主键值由小到大的顺序分别从所述源数据库中的所述全量数据中获取未迁移的各数据及对应的源库/表名称;

对应地,通过轮询所述队列,将所述队列中的各所述数据,按照对应的所述目标库/表名称写入至所述目标数据库中之后,所述方法还包括:

将写入所述目标数据库中的各所述数据的主键名称和主键值存储至进度管理节点中,所述进度管理节点独立于所述第一系统和所述第二系统来实现信息持久化存储。

7.根据权利要求6所述的方法,其特征在于,若同步中断并恢复后,所述方法还包括:

从所述进度管理节点中获取存储的最大主键值;

将所述最大主键值后最近邻的主键值对应的数据作为重启后数据同步的起点,以便于继续按照主键值由小到大的顺序分别从所述源数据库中获取未迁移的各数据,进行数据同步处理。

8.根据权利要求5所述的方法,其特征在于,将所述源数据库中所述预设历史时间点后对应的实时数据批量同步至所述目标数据库中,包括:

对于所述源数据库中所述预设历史时间点后对应的各源dml语句,获取各所述源dml语句中的数据的源库/表名称以及操作属性;

根据所述库表映射器,将各所述源dml语句中的数据的源库/表名称映射为所述目标数据库中对应的所述目标库/表名称;

将各所述源dml语句中的数据、对应的所述目标库/表名称以及所述操作属性,写入预设的所述内存中;

判断所述内存的写入时长是否达到预设时长,或者所述内存中写入的总数据的大小是否达到预设阈值;

若是,将所述内存中写入的各所述源dml语句中的数据、对应的所述目标库/表名称以及所述操作属性写入预设的所述队列中;

通过轮询所述队列,将所述队列中的各所述源dml语句中的数据,按照对应的所述目标库/表名称以及所述操作属性写入至所述目标数据库的增量表中。

9.根据权利要求8所述的方法,其特征在于,若各所述源dml语句中还包括数据的唯一键值,根据预设的库表映射器,将各所述源dml语句中的数据的源库/表名称映射为所述目标数据库中对应的所述目标库/表名称之后,将各所述源dml语句中的数据、对应的所述目标库/表名称以及所述操作属性,写入预设的内存中之前,所述方法还包括:

判断所述内存中是否存储有所述唯一键值对应的数据,若存在,删除所述内存中所述唯一键值对应的数据、对应的所述目标库/表名称以及所述操作属性。

10.根据权利要求8所述的方法,其特征在于,将所述源数据库中的实时数据批量同步至所述目标数据库中,包括:

对于所述源数据库中各的源ddl语句,获取各所述源ddl语句中的源库/表名称;

检测各所述源ddl语句中的源库/表名称是否在预先配置的需要迁移的库/表白名单中;

若在,根据预设的库表映射器,将各所述源ddl语句中的源库/表名称映射为所述目标数据库中对应的目标库/表名称;

根据进度管理节点中存储的所述第二系统的所述目标数据库中已存在的目标库/表名称,判断所述各源ddl语句是否需要同步至所述第二系统的所述目标数据库中;

若需要,对各所述源ddl语句分别进行语法解析和语法转换,得到转换后对应的目标ddl语句;

将各所述目标ddl语句写入预设的所述内存中;

判断所述内存的写入时长是否达到预设时长,或者所述内存中写入的总数据的大小是否达到预设阈值;

若是,将所述内存中写入的各所述目标ddl语句写入预设的所述队列中;

通过轮询所述队列,将所述队列中的各所述目标ddl语句作用在所述全量表和所述增量表中。

11.根据权利要求10所述的方法,其特征在于,若所述源数据库中的多张分表同步在所述目标数据库中为一张目标表时,对于所述源数据库中增加字段的源ddl语句,将所述队列中的对应地所述目标ddl语句作用在所述全量表和所述增量表中之后,所述方法还包括:

在所述进度管理节点中记录各表字段在所述源数据库中所处的位置与在所述目标数据库中对应的表字段所处的位置的映射关系。

12.根据权利要求11所述的方法,其特征在于,若所述源数据库中的多张分表同步在所述目标数据库中为一张目标表时,对于各所述分表的增加字段的源ddl语句,将所述队列中的对应地所述目标ddl语句作用在所述全量表和所述增量表中之后,所述方法还包括:

在所述进度管理节点中记录所述增加字段对应的所述分表的中间状态信息,以标识在对应的所述分表中所述增加字段已插入;和/或

在各所述分表的中间状态信息中设置所述增加字段的位置值,且未插入所述增加字段的位置值设置为一个不同于正常位置值的异常值。

13.一种数据同步装置,其特征在于,所述装置包括:

结构迁移单元,用于将第一系统的源数据库的结构对象迁移至第二系统的目标数据库中;

全量数据迁移单元,用于将所述源数据库中预设历史时间点对应的全量数据迁移至所述目标数据库中;

增量数据迁移单元,用于将所述源数据库中所述预设历史时间点后对应的实时数据批量同步至所述目标数据库中。

14.根据权利要求13所述的装置,其特征在于,所述结构迁移单元,用于:

将所述第一系统的所述源数据库中的源库/表名称和源表中的字段类型经过映射后迁移至所述第二系统的所述目标数据库中。

15.根据权利要求14所述的装置,其特征在于,所述结构迁移单元,用于:

从所述第一系统的所述源数据库中读取建表语句;所述建表语句中包括所创建的所述源库/表名称以及源表中的字段类型;

检测所述建表语句中所创建的所述源库/表名称是否在预先配置的需要迁移的库/表白名单中;

若在,根据预设的库表映射器,将所述建表语句中的所述源库/表名称映射为所述目标数据库中对应的目标库/表名称,同时根据预设的字段类型映射表,将所述源表中的字段类型映射为目标表中的字段类型;

根据所述目标库/表名称,检测预先设置的进度管理节点中存储的库/表列表中是否包括对应的所述目标库/表名称;所述进度管理节点独立于所述第一系统和所述第二系统来实现信息持久化存储;

若未包括,对所述建表语句分别进行语法解析和语法转换,得到转换后的目标建表语句;

根据所述目标建表语句,在所述第二系统的所述目标数据库中创建对应的所述目标库/表;

将所述目标库/表名称存入所述进度管理节点中。

16.根据权利要求15所述的装置,其特征在于,所述结构迁移单元,用于:

对所述建表语句中的所述注释和/或所述唯一键分别进行语法解析和语法转换,以使得所述注释和所述唯一键能够被迁移至所述第二系统的所述目标数据库中。

17.根据权利要求13所述的装置,其特征在于,所述全量数据迁移单元,用于:

采用多线程并发处理的方式从所述源数据库中获取所述预设历史时间点对应的所述全量数据中、未迁移的各数据及对应的源库/表名称;

根据预设的库表映射器,将各所述数据的源库/表名称映射为所述目标数据库中对应的所述目标库/表名称;

将各所述数据以及对应的所述目标库/表名称,写入预设的内存中;

判断所述内存的写入时长是否达到预设时长,或者所述内存中写入的总数据的大小是否达到预设阈值;

若是,将所述内存中写入的各所述数据以及对应的所述目标库/表名称写入预设的队列中;

通过轮询所述队列,将所述队列中的各所述数据,按照对应的所述目标库/表名称写入至所述目标数据库的全量表中。

18.根据权利要求17所述的装置,其特征在于,所述全量数据迁移单元,用于:

采用多线程并发处理的方式,按照主键值由小到大的顺序分别从所述源数据库中的所述全量数据中获取未迁移的各数据及对应的源库/表名称;

对应地,通过轮询所述队列,将所述队列中的各所述数据,按照对应的所述目标库/表名称写入至所述目标数据库中之后,所述方法还包括:

将写入所述目标数据库中的各所述数据的主键名称和主键值存储至进度管理节点中,所述进度管理节点独立于所述第一系统和所述第二系统来实现信息持久化存储。

19.根据权利要求18所述的装置,其特征在于,所述全量数据迁移单元,用于:

若同步中断并恢复后,从所述进度管理节点中获取存储的最大主键值;

将所述最大主键值后最近邻的主键值对应的数据作为重启后数据同步的起点,以便于继续按照主键值由小到大的顺序分别从所述源数据库中获取未迁移的各数据,进行数据同步处理。

20.根据权利要求17所述的装置,其特征在于,所述增量数据迁移单元,用于:

对于所述源数据库中所述预设历史时间点后对应的各源dml语句,获取各所述源dml语句中的数据的源库/表名称以及操作属性;

根据所述库表映射器,将各所述源dml语句中的数据的源库/表名称映射为所述目标数据库中对应的所述目标库/表名称;

将各所述源dml语句中的数据、对应的所述目标库/表名称以及所述操作属性,写入预设的所述内存中;

判断所述内存的写入时长是否达到预设时长,或者所述内存中写入的总数据的大小是否达到预设阈值;

若是,将所述内存中写入的各所述源dml语句中的数据、对应的所述目标库/表名称以及所述操作属性写入预设的所述队列中;

通过轮询所述队列,将所述队列中的各所述源dml语句中的数据,按照对应的所述目标库/表名称以及所述操作属性写入至所述目标数据库的增量表中。

21.根据权利要求20所述的装置,其特征在于,所述增量数据迁移单元,用于:

若各所述源dml语句中还包括数据的唯一键值,判断所述内存中是否存储有所述唯一键值对应的数据,若存在,删除所述内存中所述唯一键值对应的数据、对应的所述目标库/表名称以及所述操作属性。

22.根据权利要求20所述的装置,其特征在于,所述增量数据迁移单元,用于:

对于所述源数据库中各的源ddl语句,获取各所述源ddl语句中的源库/表名称;

检测各所述源ddl语句中的源库/表名称是否在预先配置的需要迁移的库/表白名单中;

若在,根据预设的库表映射器,将各所述源ddl语句中的源库/表名称映射为所述目标数据库中对应的目标库/表名称;

根据进度管理节点中存储的所述第二系统的所述目标数据库中已存在的目标库/表名称,判断所述各源ddl语句是否需要同步至所述第二系统的所述目标数据库中;

若需要,对各所述源ddl语句分别进行语法解析和语法转换,得到转换后对应的目标ddl语句;

将各所述目标ddl语句写入预设的所述内存中;

判断所述内存的写入时长是否达到预设时长,或者所述内存中写入的总数据的大小是否达到预设阈值;

若是,将所述内存中写入的各所述目标ddl语句写入预设的所述队列中;

通过轮询所述队列,将所述队列中的各所述目标ddl语句作用在所述全量表和所述增量表中。

23.根据权利要求22所述的装置,其特征在于,所述增量数据迁移单元,用于:

若所述源数据库中的多张分表同步在所述目标数据库中为一张目标表时,对于所述源数据库中增加字段的源ddl语句,在所述进度管理节点中记录各表字段在所述源数据库中所处的位置与在所述目标数据库中对应的表字段所处的位置的映射关系。

24.根据权利要求23所述的装置,其特征在于,所述增量数据迁移单元,用于:

若所述源数据库中的多张分表同步在所述目标数据库中为一张目标表时,在所述进度管理节点中记录所述增加字段对应的所述分表的中间状态信息,以标识在对应的所述分表中所述增加字段已插入;和/或

在各所述分表的中间状态信息中设置所述增加字段的位置值,且未插入所述增加字段的位置值设置为一个不同于正常位置值的异常值。

25.一种计算机设备,其特征在于,所述设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-12中任一所述的方法。

26.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-12中任一所述的方法。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1