System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于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复制槽高
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的位点,创建一段时间以内的任意位点复制槽,同时也保证早
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的位点,创建一段时间以内的任意位点复制槽,同时...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。