一种分布式数据库元数据复制方法及系统技术方案

技术编号:39321009 阅读:12 留言:0更新日期:2023-11-12 16:01
本发明专利技术公开了一种分布式数据库元数据复制方法及系统,属于分布式数据库技术领域,该方法的实现包括源端发送模块KVSender,目标端重写模块KVRewriter,目标端执行与落盘模块Executor,源端发送模块KVSender,用于将源端数据库需要进行同步的数据发送给目标端,目标端重写模块KVRewriter,将发送的key和value重写成正确的key和value;目标端执行与落盘模块Executor用于解决事务依赖并进行数据落盘。本发明专利技术能够在满足实时复制业务数据的同时进行不同数据库集群之间元数据的复制,在保证实时性的同时,支持主备库源端与目标端之间进行元数据同步,同时不影响正常数据的复制。同时不影响正常数据的复制。同时不影响正常数据的复制。

【技术实现步骤摘要】
一种分布式数据库元数据复制方法及系统


[0001]本专利技术涉及分布式数据库
,具体地说是一种分布式数据库元数据复制方法及系统。

技术介绍

[0002]数据库之间进行数据复制主要采取文件形式或者主备的方式。这两种方法各有优缺点。采取文件形式适用于整个数据库备份进行整库的导入导出,这种方式操作简单,且能在较短的时间内导入较大数据量的数据。但导入导出的方法不能满足实时性的要求,采用该方式时需要暂停数据库功能,或者导出某一快速检查点进行导入导出。
[0003]采用主备的方式可以满足大部分实时性的需求,但该种方式不太能应对系统元数据的变化,且不能对主库和备库进行一定程度上的微调,比如主库的数据表t1复制到备库的数据表t2.这种操作往往需要交给数据库上层应用进行实现,不够灵活,同时对主备库的ddl操作支持性较差。

技术实现思路

[0004]本专利技术的技术任务是针对以上不足之处,提供一种分布式数据库元数据复制方法及系统,能够在满足实时复制业务数据的同时,可以进行不同数据库集群之间元数据的复制,从而在保证实时性的同时,能够支持主备库源端与目标端之间进行元数据同步,同时不影响正常数据的复制。
[0005]本专利技术解决其技术问题所采用的技术方案是:
[0006]一种分布式数据库元数据复制方法,该方法的实现包括源端发送模块KVSender,目标端重写模块KVRewriter,目标端执行与落盘模块Executor,
[0007]源端发送模块KVSender,用于将源端数据库需要进行同步的数据发送给目标端,
[0008]目标端重写模块KVRewriter,将发送的key和value重写成正确的key和value;
[0009]目标端执行与落盘模块Executor用于解决事务依赖并进行数据落盘。
[0010]本方法提供了专有的连接进行元数据信息的同步,从而使得对于表本身操作的DDL语句也可以在不同数据库之间实时进行复制。在接收端提供了独有的KVRewriter进行两集群之间相同数据表元数据的重写工作;两个集群之间除了用于数据传输的连接外,无需其他连接,也无需文件导入导出形式的传输;KVRewriter可以根据元数据种类的不同进行动态地设置。
[0011]本方法提出的元数据复制方法在满足实时复制业务数据的同时,可以进行不同数据库集群之间元数据的复制,从而在保证实时性的同时,能够支持主备库源端与目标端之间进行元数据同步,同时不影响正常数据的复制。
[0012]优选的,在数据库的元数据中,设用户创建了表t1,则system.descriptor存储所有数据表的表结构,system.namespace存储用户表命名空间与数据表的映射关系,system.comment存储用户表的注释信息,而用户表t1中存储了相应的用户数据。
[0013]优选的,所述源端发送模块KVSender包括连接模块Connector,kv过滤模块Filter和kv转发模块Sender,用户设置目标端的ip地址、证书目录,以供源端建立到目标端的tcp连接;
[0014]kv过滤模块Filter遍历需要同步的所有kv操作,当用户设置对应的系统表同步后,源端对需要同步复制的数据表的TableID进行过滤;对于kv数据库而言,用户的所有DDL操作仍然是kv操作,这些ddl语句会产生元数据kv操作;kv过滤器将元数据key进行解析,过滤出原始TableID,并判断是否需要发送;kv过滤模块Filter把过滤出的需要发送的key传递给kv转发模块Sender,kv转发模块Sender通过管道将元数据kv发送给备端。
[0015]优选的,所述目标端重写模块KVRewriter中始终保存了对应的源端的TableDescriptor的最新副本,以及所有需要重写的字段,并保存了重写的映射关系。
[0016]优选的,所述目标端重写模块KVRewriter,接收到的kv随要同步复制的元数据有所不同,对于system.comment以及system.namespace,keyWriter只需要将key进行解码,解析得到原始的TableID,根据keyWriter中保存的重写映射关系,替换成新的TableID并重新编码,即可以完成对元数据KeyValue的重写工作;
[0017]对于TableDescriptor,目标端重写模块KVRWriter除了需要重写TableID外,还需要根据映射关系,重写该用户表在目标端对应的所属database,schema,以及外键的依赖关系;完成后keyWriter将重写好的kv交给Executor执行。
[0018]优选的,所述目标端执行与落盘模块Executor,由于源端与目标端的复制是实时进行的,当之间的kv进行传输时,该操作所处的事务可能尚未提交,Executor直至等待该事务提交后将该事务的所有kv写入存储,或者接收到事务回滚信息,丢弃掉该事务的所有kv。
[0019]通过为分布式数据库库系统提供了一个单独的专用于元数据的复制通道,而非通过主备或者文件导入导出的复制方式,从而在保证了实时性的同时,可以在不同的分布式数据库集群之间进行选择和切换。由于是在不同的集群之间提供的单独数据复制通道,各个数据库集群之间是相互独立的,用户可以选择复制元数据信息,只需要相应设置就可以有选择性地对部分数据表或系统表的元数据进行同步复制,在复制表数据的同时,还可以进行DDL操作的复制。
[0020]本专利技术还要求保护一种分布式数据库元数据复制系统,实现包括源端发送模块KVSender,目标端重写模块KVRewriter,目标端执行与落盘模块Executor,
[0021]源端发送模块KVSender,将源端数据库需要进行同步的数据发送给目标端,
[0022]目标端重写模块KVRewriter,将发送的key和value重写成正确的key和value;
[0023]目标端执行与落盘模块Executor用于解决事务依赖并进行数据落盘。
[0024]进一步的,所述源端发送模块KVSender包括连接模块Connector,kv过滤模块Filter和kv转发模块Sender,用户设置目标端的ip地址,证书目录,以供源端建立到目标端的tcp连接;
[0025]kv过滤模块Filter遍历需要同步的所有kv操作,当用户设置对应的系统表同步后,源端对需要同步复制的数据表的TableID进行过滤;对于kv数据库而言,用户的所有ddl操作仍然是kv操作,这些ddl语句会产生元数据kv操作;Kv过滤器会将元数据key进行解析,过滤出原始TableID,并判断是否需要发送;kv过滤模块Filter把过滤出的需要发送的key传递给kv转发模块Sender,kv转发模块Sender通过管道将元数据kv发送给备端。
[0026]进一步的,在数据库的元数据中,设用户创建了表t1,则system.descriptor存储所有数据表的表结构,system本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式数据库元数据复制方法,其特征在于,该方法的实现包括源端发送模块KVSender,目标端重写模块KVRewriter,目标端执行与落盘模块Executor,源端发送模块KVSender,用于将源端数据库需要进行同步的数据发送给目标端,目标端重写模块KVRewriter,将发送的key和value重写成正确的key和value;目标端执行与落盘模块Executor用于解决事务依赖并进行数据落盘。2.根据权利要求1所述的一种分布式数据库元数据复制方法,其特征在于,在数据库的元数据中,设用户创建了表t1,则system.descriptor存储所有数据表的表结构,system.namespace存储用户表命名空间与数据表的映射关系,system.comment存储用户表的注释信息,而用户表t1中存储了相应的用户数据。3.根据权利要求1或2所述的一种分布式数据库元数据复制方法,其特征在于,所述源端发送模块KVSender包括连接模块Connector,kv过滤模块Filter和kv转发模块Sender,用户设置目标端的ip地址、证书目录,以供源端建立到目标端的tcp连接;kv过滤模块Filter遍历需要同步的所有kv操作,当用户设置对应的系统表同步后,源端对需要同步复制的数据表的TableID进行过滤;Kv过滤器将元数据key进行解析,过滤出原始TableID,并判断是否需要发送;Kv过滤模块Filter把过滤出的需要发送的key传递给kv转发模块Sender,kv转发模块Sender通过管道将元数据kv发送给备端。4.根据权利要求3所述的一种分布式数据库元数据复制方法,其特征在于,所述目标端重写模块KVRewriter中始终保存了对应的源端的TableDescriptor的最新副本,以及所有需要重写的字段,并保存了重写的映射关系。5.根据权利要求4所述的一种分布式数据库元数据复制方法,其特征在于,所述目标端重写模块KVRewriter,对于system.comment以及system.namespace,keyWriter只需要将key进行解码,解析得到原始的TableID,根据keyWriter中保存的重写映射关系,替换成新的TableID并重新编码,即可以完成对元数据KeyValue的重写工作;对于TableDescriptor,目标端重写模块KVRWriter除了需要重写TableID外,还需要根据映射关系,重写该用户表在目标端对应的所属database,schema,以及外键的依赖关系;完成后keyWriter将重写好的kv交给Executor执行。6.根据权利要求5所述的一种分布式数据库元数据复制方法,其特征在于,所述目标端执行与落盘模块Executor,由于源端与目标端的复制是实时进行的,当之间的kv进行传输时,该操作所...

【专利技术属性】
技术研发人员:樊鑫源
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1