System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种PostgreSQL复制槽高可用位点重入的方法技术_技高网

一种PostgreSQL复制槽高可用位点重入的方法技术

技术编号:40958445 阅读:2 留言:0更新日期:2024-04-18 20:36
本发明专利技术公开了一种PostgreSQL复制槽高可用位点重入的方法,涉及IT技术领域,创建一个用于记录历史位点的逻辑复制槽slot_reserved;创建一个指定时间的复制槽;维护自定义复制槽slot_reserved的位点;实现自定义复制槽slot_reserved的高可用;本发明专利技术通过该方法用户可以创建一个过去一段时间范围内,指定位点的复制槽;通过该复制槽,用户可以利用数据同步组件从指定位点开始重新同步数据,以实现诸如数据修复等功能。

【技术实现步骤摘要】

本专利技术属于it,尤其涉及一种postgresql复制槽高可用位点重入的方法。


技术介绍

1、postgresql提供逻辑复制功能,用于两个数据库集群之间同步数据。postgresql利用复制槽来记录逻辑复制的wal日志位点。wal日志是数据库中一种高效的日志算法,用于提前写入操作日志以保证数据不会丢失。逻辑复制就是沿着wal日志,逐个位点逐个位点地应用操作记录到目标库,从而实现数据复制。

2、postgresql提供了创建逻辑复制槽的函数,但是该函数无法指定特定的时间位点,本专利针对解决该问题。


技术实现思路

1、本专利技术所要解决的技术问题是针对
技术介绍
的不足提供一种postgresql复制槽高可用位点重入的方法,通过该方法用户可以创建一个过去一段时间范围内,指定位点的复制槽;通过该复制槽,用户可以利用数据同步组件从指定位点开始重新同步数据,以实现诸如数据修复功能。

2、本专利技术为解决上述技术问题采用以下技术方案:

3、一种postgresql复制槽高可用位点重入的方法,具体包含如下步骤;

4、步骤1,创建一个用于记录历史位点的逻辑复制槽slot_reserved;

5、步骤2,创建一个指定时间的复制槽;

6、步骤3,维护自定义复制槽slot_reserved的位点;

7、步骤4,实现自定义复制槽slot_reserved的高可用。

8、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,通过自研函数创建一个用于记录历史位点的逻辑复制槽slot_reserved,具体如下

9、步骤1.1,通过函数pg_copy_physical_replication_slot,拷贝复制槽slot_reserved为一个新的复制槽;其中,pg_copy_physical_replication_slot为拷贝物理复制槽;

10、步骤1.2,通过函数pg_replication_slot_advance将该复制槽移动到指定位点;其中,pg_replication_slot_advance为复制槽位点前移;

11、步骤1.3,返回该复制槽的相关信息给客户端。

12、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,在步骤2中,创建一个指定时间的复制槽,具体包含如下步骤;

13、步骤2.1,拷贝自定义复制槽slot_reserved的数据结构;

14、步骤2.2,更新自定义复制槽slot_reserved的数据结构到指定日志序列号lsn位点;

15、步骤2.3,返回更新后的复制槽信息给客户端,数据结构与开源函数

16、pg_create_logical_replication_slot一致,实现对该函数的重载;

17、其中,pg_create_logical_replication_slot为创建逻辑复制槽;

18、步骤2.4,若指定的lsn位点早于自定义复制槽slot_reserved,向客户端报错,提示信息为创建复制槽位点过早;

19、步骤2.5,若指定的lsn位点未达到,更新自定义复制槽slot_reserved的数据结构信息到最新位点pg_current_wal_lsn;其中,pg_current_wal_lsn为postgresql数据库当前write-ahead-log位点。

20、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,在步骤2.1中,复制槽slot_reserved的数据结构,包括catalog_xmin、restart_lsn和confirmed_flush_lsn关键字段;

21、其中,catalog_xmin为影响系统视图的最旧日志序列号;

22、restart_lsn为重启日志序列号;

23、confirmed_flush_lsn为已确认位点序列号。

24、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,在步骤2.3中,提供输入参数lsn,指定创建该位点的复制槽。

25、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,在步骤3中,根据参数控制定期前移slot_reserved的位点,创建一段时间以内的任意位点复制槽,同时也保证早于该位点的wal日志能被正常清理。

26、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,通过拷贝复制槽的数据结构,在从库上构建一个同名的复制槽,用于保证数据库主从切换后,提供创建指定时间的复制槽。

27、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,在步骤3中,维护自定义复制槽slot_reserved的位点,具体包含如下步骤;

28、步骤3.1,程序启动后,创建自定义复制槽slot_reserved;

29、步骤3.2,根据配置slotchecktime,在指定时间点检查该复制槽的位点;其中,slotchecktime为复制槽检查时间点;

30、步骤3.3,同时,在slotchecktime时间点,检查从库是否存在slot_reserved复制槽,如果不存在,拷贝自定义复制槽slot_reserved的数据结构,并重启从库,以实现复制槽slot_reserved的高可用。

31、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,在步骤3.2中,slotchecktime为凌晨1点。

32、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,在步骤3.2中,若位点距离当前时间点超过配置的参数reserveperiod,参数reserveperiod设置48小时,则查询48小时之前的lsn位点,并移动slot_reserved的位点到该位点上,保持48小时的lsn位点均可指定;其中,reserveperiod为保留周期,指保留多少时间之前的日志。

33、作为本专利技术postgresql复制槽高可用位点重入的方法的进一步优选方案,。

34、本专利技术采用以上技术方案与现有技术相比,具有以下技术效果:

35、1、本专利技术实现了一个自研的函数,创建过去一段时间以内的指定位点的复制槽;

36、2、本专利技术通过程序创建并维护自定义复制槽slot_reserved的位点,同时保证了该自定义复制槽的高可用,保证指定位点创建复制槽的功能不受数据库主从切换的影响。

本文档来自技高网...

【技术保护点】

1.一种PostgreSQL复制槽高可用位点重入的方法,其特征在于:具体包含如下步骤;

2.根据权利要求1所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:通过自研函数创建一个用于记录历史位点的逻辑复制槽slot_reserved,具体如下

3.根据权利要求1所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:

4.根据权利要求1所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:在步骤2.1中,复制槽slot_reserved的数据结构,包括catalog_xmin、restart_lsn和confirmed_flush_lsn关键字段;

5.根据权利要求1所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:在步骤2.3中,提供输入参数lsn,指定创建该位点的复制槽。

6.根据权利要求1所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:在步骤3中,根据参数控制定期前移slot_reserved的位点,创建一段时间以内的任意位点复制槽,同时也保证早于该位点的WAL日志能被正常清理。

7.根据权利要求1所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:通过拷贝复制槽的数据结构,在从库上构建一个同名的复制槽,用于保证数据库主从切换后,提供创建指定时间的复制槽。

8.根据权利要求7所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:在步骤3中,维护自定义复制槽slot_reserved的位点,具体包含如下步骤;

9.根据权利要求8所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:在步骤3.2中,slotCheckTime为凌晨1点。

10.根据权利要求9所述的PostgreSQL复制槽高可用位点重入的方法,其特征在于:在步骤3.2中,若位点距离当前时间点超过配置的参数reservePeriod,参数reservePeriod设置48小时,则查询48小时之前的LSN位点,并移动slot_reserved的位点到该位点上,保持48小时的LSN位点均可指定;其中,reservePeriod为保留周期,指保留多少时间之前的日志。

...

【技术特征摘要】

1.一种postgresql复制槽高可用位点重入的方法,其特征在于:具体包含如下步骤;

2.根据权利要求1所述的postgresql复制槽高可用位点重入的方法,其特征在于:通过自研函数创建一个用于记录历史位点的逻辑复制槽slot_reserved,具体如下

3.根据权利要求1所述的postgresql复制槽高可用位点重入的方法,其特征在于:

4.根据权利要求1所述的postgresql复制槽高可用位点重入的方法,其特征在于:在步骤2.1中,复制槽slot_reserved的数据结构,包括catalog_xmin、restart_lsn和confirmed_flush_lsn关键字段;

5.根据权利要求1所述的postgresql复制槽高可用位点重入的方法,其特征在于:在步骤2.3中,提供输入参数lsn,指定创建该位点的复制槽。

6.根据权利要求1所述的postgresql复制槽高可用位点重入的方法,其特征在于:在步骤3中,根据参数控制定期前移slot_reserved的位点,创建一段时间以内的任意位点复制槽,同时...

【专利技术属性】
技术研发人员:李耀宗
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1