System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理领域,尤其涉及一种预写日志存储级别参数的修改方法、设备和介质。
技术介绍
1、目前可以通过在线加载配置文件的方式在线修改预写日志存储级别(writeahead log level,wal_level)参数。但是,如此修改后,每个进程有自己的预写日志存储级别参数副本,而pg(postgresql)系统并不能保证每个进程的预写日志存储级别参数相同。如某个进程未收到sighup信号,不同的进程加载配置文件时配置文件内容有改动等都可能导致每个进程的预写日志存储级别参数不同。
2、若不同进程的预写日志存储级别参数不同,很可能导致物理级别的事务(xlog)日志和逻辑级别的事务日志混杂在一起。当将预写日志存储级别参数在线修改为逻辑值时无法确保获得一致的逻辑级别的事务日志,因此逻辑解码这些混杂的事务日志时,会出现数据丢失的情况。
技术实现思路
1、本申请提供一种预写日志存储级别参数的修改方法、设备和介质,用以保证每个进程的预写日志存储级别参数相同,减小逻辑解码事务日志的过程中数据丢失的风险。
2、第一方面,本申请提供一种预写日志存储级别参数的修改方法,包括:
3、将配置文件中的预写日志存储级别参数修改为逻辑值,向postmaster进程发送第一重载信号,以控制postmaster进程加载所述配置文件将postmaster进程本地以及共享内存中预写日志存储级别参数修改为逻辑值;
4、控制子进程仅从所述共享内存中获取逻辑值的预写日志存储
5、可选的,所述方法还包括:
6、将配置文件中预写日志存储级别的参数修改为物理值,向postmaster进程发送第二重载信号,以控制postmaster进程加载所述配置文件将postmaster进程本地以及共享内存中预写日志存储级别参数修改为物理值;
7、控制子进程仅从所述共享内存中获取物理值的预写日志存储级别参数。
8、可选的,所述方法还包括:
9、获取所述postmaster进程和所述子进程中将本地的预写日志存储级别参数修改为逻辑值时正在运行的第一事务集,将所述第一事务集内第一事务均运行完成的时间点作为事务日志级别均为逻辑级别的时间点;
10、逻辑解码所述时间点后运行的第二事务集的事务日志。
11、可选的,所述将所述第一事务集内第一事务均运行完成的时间点作为事务日志级别均为逻辑级别的时间点,具体包括:
12、按照预设时间间隔检测所述第一事务集内第一事务是否正在运行;
13、将检测到所述第一事务集内第一事务均运行完成的预设时间间隔对应的两个时刻中的后一时刻作为事务日志级别均为逻辑级别的时间点。
14、可选的,所述按照预设间隔检测所述第一事务集内第一事务是否正在运行,具体包括:
15、按照预设时间间隔检测第一事务日志内运行完成的事务的标识是否包括所述第一事务集内所有第一事务的标识。
16、可选的,所述获取所述postmaster进程和所述子进程中将本地的预写日志存储级别参数修改为逻辑值时正在运行的第一事务集,具体包括:
17、获取postmaster进程和子进程中将本地的预写日志存储级别参数修改为逻辑值时正在运行的主事务的数量和标识、子事务的数量和标识,并记录在第一事务日志中。
18、可选的,所述将所述第一事务集内第一事务均运行完成的时间点作为事务日志级别均为逻辑级别的时间点,具体包括:
19、从第一事务日志中记录的第一事务集内获取一个第一事务,在所述一个第一事务运行完成后,获取下一个第一事务,直至所有第一事务运行完成;
20、将所有第一事务运行完成的时间点作为事务日志级别均为逻辑级别的时间点。
21、可选的,所述将所述第一事务集内第一事务均运行完成的时间点作为事务日志级别均为逻辑级别的时间点,具体包括:具体包括:
22、检测指定事务是否运行完成或丢弃;
23、当指定事务运行完成或丢弃时,从第一事务日志中记录的第一事务集内获取一个第一事务,在所述一个第一事务运行完成后,获取下一个第一事务,直至所有第一事务运行完成;
24、将所有第一事务运行完成的时间点作为事务日志级别均为逻辑级别的时间点。
25、第二方面,本申请提供一种预先日志存储级别参数的修改装置,包括:
26、修改模块,用于将配置文件中的预写日志存储级别参数修改为逻辑值,向postmaster进程发送第一重载信号,以控制postmaster进程加载所述配置文件将本地以及共享内存中预写日志存储级别参数修改为逻辑值;
27、控制模块,用于控制子进程仅从所述共享内存中获取逻辑值的预写日志存储级别参数。
28、第三方面,本申请提供一种电子设备,包括:存储器和处理器;
29、存储器用于存储指令;处理器用于调用存储器中的指令执行第一方面及第一方面任一种可能的设计中的预先日志存储级别参数的修改方法。
30、第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机指令,当电子设备的至少一个处理器执行该计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的预先日志存储级别参数的修改方法。
31、第五方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机指令,当电子设备的至少一个处理器执行该计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的预先日志存储级别参数的修改方法。
32、本申请提供的预写日志存储级别参数的修改方法,将配置文件中的预写日志存储级别参数修改为逻辑值,向postmaster进程发送第一重载信号,使得postmaster进程加载配置文件并根据配置文件中的预写日志存储级别参数将postmaster进程本地以及共享内存中预写日志存储级别参数修改为逻辑值,而后控制子进程仅从共享内存中获取预写日志存储级别参数不会对共享内存中的预写日志存储级别参数进行修改,由于共享内存中的预写日志存储级别参数为逻辑值,子进程可以获取逻辑值的预写日志存储级别参数,从而使得postmaster进程和子进程中预写日志存储级别参数一致且均为逻辑值,使得同一时刻postmaster进程和子进程中运行事务的事务日志级别均为逻辑级别,减小逻辑解码事务日志过程中数据丢失的风险。
本文档来自技高网...【技术保护点】
1.一种预写日志存储级别参数的修改方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述第一事务集内第一事务均运行完成的时间点作为事务日志级别均为逻辑级别的时间点,具体包括:
5.根据权利要求4所述的方法,其特征在于,所述按照预设间隔检测所述第一事务集内第一事务是否正在运行,具体包括:
6.根据权利要求3所述的方法,其特征在于,所述获取所述Postmaster进程和所述子进程中将本地的预写日志存储级别参数修改为逻辑值时正在运行的第一事务集,具体包括:
7.根据权利要求6所述的方法,其特征在于,所述将所述第一事务集内第一事务均运行完成的时间点作为事务日志级别均为逻辑级别的时间点,具体包括:
8.根据权利要求6所述的方法,其特征在于,所述将所述第一事务集内第一事务均运行完成的时间点作为事务日志级别均为逻辑级别的时间点,具体包括:
9.一种电
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如权利要求1至8中任意一项所述的预先日志存储级别参数的修改方法。
...【技术特征摘要】
1.一种预写日志存储级别参数的修改方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述第一事务集内第一事务均运行完成的时间点作为事务日志级别均为逻辑级别的时间点,具体包括:
5.根据权利要求4所述的方法,其特征在于,所述按照预设间隔检测所述第一事务集内第一事务是否正在运行,具体包括:
6.根据权利要求3所述的方法,其特征在于,所述获取所述postmaster进程和所述子进程中将本地的预写日志存储级别参数修改为逻辑...
【专利技术属性】
技术研发人员:沈志伟,
申请(专利权)人:北京人大金仓信息技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。