System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种分布式PostgreSQL数据库的快速克隆方法技术_技高网

一种分布式PostgreSQL数据库的快速克隆方法技术

技术编号:40943113 阅读:5 留言:0更新日期:2024-04-18 15:00
本发明专利技术涉及一种分布式PostgreSQL数据库的快速克隆方法,属于IT软件开发技术领域,包括如下步骤:创建分布式集群一致恢复点;快照克隆底层数据库实例;将底层数据库通过恢复点进行恢复;进行元数据恢复。本发明专利技术在研究Citus插件原理的基础上,定制元数据修复脚本,作为底层数据库恢复的后置步骤,实现集群维度意义上的克隆操作,直接让基于Citus扩展的分布式数据库的物理克隆复制后集群的元数据可修复,无需按照传统流程依次执行新建空的集群、新集群调用Citus接口重新生成元数据、进行业务数据的逻辑导入的操作,显著降低了克隆的时间;并且结合云计算基础设施层通用能力、Citus开放接口、PostgreSQL自恢复机制,实现底层数据库的克隆操作。

【技术实现步骤摘要】

本专利技术属于it软件开发,尤其涉及一种分布式postgresql数据库的快速克隆方法。


技术介绍

1、citus是postgresql数据库的分布式中间件,它不侵入修改数据库的内核代码,而是将元数据写入底层数据库,并以插件的形式扩展postgresql能力,实现数据库的横向扩展,citus主要由cn和dn节点组成,每个节点在底层都是单个或者一组构成主从关系的postgresql实例。

2、经citus扩展而成的分布式数据库,现有技术无标准的云上克隆方案,一种可能的方案是通过物理复制克隆底层数据库,这种方案虽然可以生成新的集群,但往往新集群所在的服务器ip地址已经发生变化,而新集群的元数据信息与原集群一模一样,实际上将导致新集群的cn节点与旧集群的dn节点重组成集群,与克隆操作的预期目标并不符合,另一种可能的方案是在空的新集群调用citus接口重新生成元数据再进行业务数据的导入,这种方案虽然可以达到克隆操作的预期目标,但耗时长,在容灾场景下会拖累服务恢复时间指标。


技术实现思路

1、鉴于以上现有技术的不足,专利技术的目的在于提供一种分布式postgresql数据库的快速克隆方法,主要包括克隆底层数据库实例和元数据恢复两个环节,克隆底层数据库实例环节是利用云计算基础设施层的快照、卷克隆等操作,实现底层数据库实例的物理克隆,将业务数据和元数据原样克隆到新的云上服务器,元数据恢复环节是在研究citus插件原理的基础上,执行自定义的元数据修复脚本,针对citus的元数据信息进行替换修复,让分布式数据库能够恢复正确的转发机制,重新正确地响应客户端发出的sql指令,实现集群维度意义上的克隆操作。

2、本专利技术,提出了一种分布式postgresql数据库的快速克隆方法,包括如下步骤:

3、s1.创建分布式集群一致恢复点;

4、s2.快照克隆底层数据库实例;

5、s3.将底层数据库通过恢复点进行恢复;

6、s4.进行元数据恢复。

7、进一步地,所述的创建分布式集群一致恢复点步骤具体包括:

8、s11.调用citus提供的接口citus_create_restore_point;

9、s12.通过citus_create_restore_point接口在底层抢占整个分布式集群的排它锁,预设时间内禁止对集群的写入操作;

10、s13.抢占锁成功后在所有底层数据库实例上自动创建一个还原点。

11、进一步地,所述s13中,所述还原点具有集群范围内的一致性。

12、进一步地,所述的快照克隆底层数据库实例步骤具体包括:

13、s21.基于云计算基础设施层,将所有底层数据库实例所在的云盘作为一个整体,创建快照一致性组,使数据写入云盘的时序一致性;

14、s22.再基于快照一致性组进行卷克隆操作,创建一组新的云服务器挂载克隆出来的卷。

15、进一步地,所述的将底层数据库通过恢复点进行恢复步骤具体包括:

16、s31.在新的云服务器上分别启动所有的底层postgresql实例;

17、s32.postgresql实例启动后将自动利用预写日志文件进行崩溃恢复流程。

18、进一步地,所述的进行元数据恢复步骤具体包括:

19、s41.在原citus cn节点克隆出来的底层postgresql实例对应服务器上,执行自定义元数据修复脚本。

20、进一步地,所述脚本的执行逻辑为扫描集群中的元数据信息。

21、进一步地,所述的在原citus cn节点克隆出来的底层postgresql实例对应服务器上,执行自定义元数据修复脚本步骤之后包括:

22、s42.根据克隆前后的ip端口对应关系调用citus提供的接口citus_update_node,对元数据信息做更新操作,重新恢复分布式集群的功能。

23、进一步地,所述s41中,所述脚本的入参为原集群各个底层数据库的连接信息和新集群底层各个数据库的连接信息。

24、进一步地,所述底层数据库为一个主架构,两个从架构。

25、本专利技术有益效果如下:

26、1.本专利技术在研究citus插件原理的基础上,定制元数据修复脚本,作为底层数据库恢复的后置步骤,实现集群维度意义上的克隆操作,直接让基于citus扩展的分布式数据库的物理克隆复制后集群的元数据可修复,无需按照传统流程依次执行新建空的集群、新集群调用citus接口重新生成元数据、进行业务数据的逻辑导入的操作,显著降低了克隆的时间;

27、2.本专利技术结合云计算基础设施层通用能力、citus开放接口、postgresql自恢复机制,实现底层数据库的克隆操作,使基于citus扩展的分布式数据库的物理克隆具有可操作性。

本文档来自技高网...

【技术保护点】

1.一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述的创建分布式集群一致恢复点步骤具体包括:

3.根据权利要求2所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述S13中,所述还原点具有集群范围内的一致性。

4.根据权利要求1所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述的快照克隆底层数据库实例步骤具体包括:

5.根据权利要求1所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述的将底层数据库通过恢复点进行恢复步骤具体包括:

6.根据权利要求1所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述的进行元数据恢复步骤具体包括:

7.根据权利要求6所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述脚本的执行逻辑为扫描集群中的元数据信息。

8.根据权利要求6所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述的在原Citus CN节点克隆出来的底层PostgreSQL实例对应服务器上,执行自定义元数据修复脚本步骤之后包括:

9.根据权利要求6所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述S41中,所述脚本的入参为原集群各个底层数据库的连接信息和新集群底层各个数据库的连接信息。

10.根据权利要求1所述的一种分布式PostgreSQL数据库的快速克隆方法,其特征在于,所述底层数据库为一个主架构,两个从架构。

...

【技术特征摘要】

1.一种分布式postgresql数据库的快速克隆方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种分布式postgresql数据库的快速克隆方法,其特征在于,所述的创建分布式集群一致恢复点步骤具体包括:

3.根据权利要求2所述的一种分布式postgresql数据库的快速克隆方法,其特征在于,所述s13中,所述还原点具有集群范围内的一致性。

4.根据权利要求1所述的一种分布式postgresql数据库的快速克隆方法,其特征在于,所述的快照克隆底层数据库实例步骤具体包括:

5.根据权利要求1所述的一种分布式postgresql数据库的快速克隆方法,其特征在于,所述的将底层数据库通过恢复点进行恢复步骤具体包括:

6.根据权利要求1所述的一种分布式postgresql数据库的快速克隆方...

【专利技术属性】
技术研发人员:林佩航陈晓帆
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1