PostgreSQL数据库流复制异常处理方法及装置制造方法及图纸

技术编号:30753280 阅读:21 留言:0更新日期:2021-11-10 12:06
本发明专利技术提供一种PostgreSQL数据库流复制异常处理方法及装置,所述方法包括步骤:异步模式,写入预写日志前后,主流复制控制器分别向备用流复制控制器发送用户写事务命令和主预写日志写入完成同步消息,完成预写日志发送,并接收备用流复制控制器返回的备预写日志写入完成同步消息;主节点崩溃,只有主预写日志写入完成同步,但无备预写日志写入完成同步消息时,备用流复制控制器同步主备数据;同步模式,主流复制控制器发送握手消息,并根据是否返回握手消息答复判断备节点崩溃与否;备节点均崩溃时,根据主点空闲与否选择更改模式或者构造确认消息。本发明专利技术实现异步模式数据备份可靠性及同步模式备节点同时崩溃时主节点防呆。呆。呆。

【技术实现步骤摘要】
PostgreSQL数据库流复制异常处理方法及装置


[0001]本专利技术属于数据库流异常处理
,具体涉及一种PostgreSQL数据库流复制异常处理方法及装置。

技术介绍

[0002]PostgreSQL是一套企业级的、跨平台、高度可定制的、功能强大的开源数据库系统。PostgreSQL的可靠性、稳定性、数据一致性等获得了数据库行业的肯定,是唯一能实现数据零丢失的开源数据库系统。随着PostgreSQL的商用逐渐推动,在数据库市场上成为对标Oracle,MySQL等传统大型商业数据库的有力竞争者。
[0003]数据库系统中,数据的备份成为保证数据安全性的一个重要的后备手段;而随着数据库服务器的集群分布,数据库服务器之间可以协同工作,主服务器出现故障时,允许多台计算机提供相同的数据。
[0004]PostgreSQL提供了流复制技术实现数据的同步,即备用服务器可以实时同步主服务器。首先主备数据库服务器间使用PostgreSQL提供的TCP协议建立网络连接。主数据库的服务器在数据变动并产生WAL记录后,立即将记录以TCP数据流的方式传送给备用数据库服务器,而不必等到预写日志文件被填充后成才进行传输。此种机制极大的缩减了主备服务器间的数据同步延迟,拥有更高效的可用度。流复制技术为数据库的热备、高可用性、负载均衡等提供了原生技术支持。PostgreSQL流复制提供异步复制和同步复制两种方式。
[0005]PostgreSQL流复制存在问题如下:
[0006](一)PostgreSQL流复制默认是异步的,如果主数据库服务器崩溃,则某些已被提交的事务可能还没有被复制到备用数据库服务器,这会导致数据丢失。
[0007](二)同步复制能够保证一个事务的所有修改都能被传送到一台或者多台同步备用数据库服务器。在请求同步流复制时,一个写事务的每次提交将一直等待,直到收到一个确认表明该提交在主数据库服务器和备用数据库服务器上都已经被写入到磁盘上的事务日志中。此种方式保证主备服务器WAL日志双双落盘才返回成功,但增加了主备数据库服务器间来回通讯确认的等待时间,延长了前台客户端请求事务的响应时间。
[0008]在开启同步复制模式情况下,备数据库节点的状态会直接影响到主数据库节点。若整个分布式集群架构所有备数据库节点同时崩溃且不能恢复的时候,主数据库节点进行写事务操作,此时主数据库节点收不到任何备用节点回复的确认,那么主数据库节点上的所有操作将会被挂住,一直到有备数据库节点恢复并发回确认回复后,主数据库节点才恢复正常,而此时如果主数据库节点是很重要的业务,此类挂死不能操作的现象对用户来说是极其致命的缺陷。
[0009]此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种PostgreSQL数据库流复制异常处理方法及装置,是非常有必要的。

技术实现思路

[0010]针对现有技术的上述现有PostgreSQL数据库流复制的异步复制模式下,在主数据库节点崩溃时,若某些已被提交的事务还没有被复制到后备服务器,会导致数据丢失,而同步复制模式下所有后备数据库节点都崩溃的情况下,导致主数据库节点挂死缺陷,本专利技术提供一种PostgreSQL数据库流复制异常处理方法及装置,以解决上述技术问题。
[0011]第一方面,本专利技术提供一种PostgreSQL数据库流复制异常处理方法,包括如下步骤:
[0012]S1.在主备数据库节点异步模式,主流复制控制器在控制写入预写日志前后,分别向备用流复制控制器发送用户写事务命令消息和主预写日志写入完成同步消息,再控制主日志发送模块向备用日志接收模块发送预写日志,并接收备用流复制控制器在备数据库节点完成预写日志回放后返回的备预写日志写入完成同步消息;
[0013]S2.当出现异步模式的主数据库节点崩溃,且存在主预写日志写入完成同步消息,但无备预写日志写入完成同步消息时,备用流复制控制器控制备用数据库节点执行写事务操作接收到的用户写事务操作命令,实现和主数据库数据保持一致;
[0014]S3.在主备数据库节点同步模式,主流复制控制器按设定周期向各备用流复制控制器发送握手消息,并根据预设时间门限内是否接收到握手消息答复判断对应备用数据库节点崩溃与否;
[0015]S4.当出现同步模式的备用数据库节点均崩溃,根据主数据库节点空闲与否判断更改主备数据库节点模式或者构造备用日志接收模块返回给主日志发送模块的确认消息。
[0016]进一步地,步骤S1之前还包括如下步骤:
[0017]S1A.在主数据库节点配置主流复制控制器,在备用数据库节点配置备用流复制控制器,并设置各流复制控制器获取所在数据库节点的配置信息;
[0018]S1B.根据流复制控制器获取的数据库节点的配置信息判断当前工作模式;
[0019]若为异步模式,进入步骤S1;
[0020]若为同步模式,进入步骤S3。流复制控制器读取配置信息用于后续消息处理和异常处理中的模式判断以及主数据库节点及备用数据可节点定位。
[0021]进一步地,所述数据库节点配置信息包括本节点主从配置、异步/同步模式、IP配置以及对端IP。本节点主从配置即判断流复制控制器所在节点为主数据库节点还是备数据库节点,IP配置及对端IP用于定位与当前数据库节点通信的数据库节点。
[0022]进一步地,步骤S1具体步骤如下:
[0023]S11.在主备数据库节点异步模式,主流复制控制器在主数据库节点接收到用户写事务操作后,向备用流复制控制器同步发送用户写事务命令;
[0024]S12.主流复制控制器控制本地写入预写日志,并在本地预写日志写入完成后,向备用流复制控制器发送主预写日志写入完成同步消息;
[0025]S13.主流复制控制器控制主日志发送模块向备日志接收模块发送预写日志;
[0026]S14.备用流复制控制器将备用日志接收模块接收的预写日志发送到日志回放模块进行回放,并在日志回放完成后,向主流复制控制器发送备预写日志写入完成同步消息。用户写事务命令及主预写日志写入完成同步消息记录主数据库节点进行写入本地预写日志的时间节点,备预写日志写入完成同步消息记录备用数据库节点完成日志回放的时间节
点。
[0027]进一步地,步骤S11中,在主备数据库节点异步模式,主数据库节点的postgres模块接收到用户写事务操作后,通知主流复制控制器同步向备用流复制控制器发送用户写事务命令消息;
[0028]步骤S12中,在向备用流复制控制器发送主写入完成同步消息后,主流复制控制器通过postgres模块向用户返回预写日志在主数据库节点完成通知;
[0029]步骤S14中,备用流复制控制器向主流复制控制器发送备预写日志写入完成同步消息后,通过备用日志接收模块经主日志接收模块向主流复制控制器返回日志回放完成通知。postgres模块为postgres数据库与用户交换的模块,接收用户的写事务操作以及向用户返回写事务完成通知;主日志本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种PostgreSQL数据库流复制异常处理方法,其特征在于,包括如下步骤:S1.在主备数据库节点异步模式,主流复制控制器在控制写入预写日志前后,分别向备用流复制控制器发送用户写事务命令消息和主预写日志写入完成同步消息,再控制主日志发送模块向备用日志接收模块发送预写日志,并接收备用流复制控制器在备数据库节点完成预写日志回放后返回的备预写日志写入完成同步消息;S2.当出现异步模式的主数据库节点崩溃,备用流复制控制器检测备用数据库节点状态,若存在主预写日志写入完成同步消息,但无备预写日志写入完成同步消息时,备用流复制控制器控制备用数据库节点执行接收到的用户写事务操作命令,实现和主数据库数据保持一致;S3.在主备数据库节点同步模式,主流复制控制器按设定周期向各备用流复制控制器发送握手消息,并根据预设时间门限内是否接收到握手消息答复判断对应备用数据库节点崩溃与否;S4.当出现同步模式的备用数据库节点均崩溃,根据主数据库节点空闲与否判断更改主备数据库节点模式或者构造备用日志接收模块返回给主日志发送模块的确认消息。2.如权利要求1所述的PostgreSQL数据库流复制异常处理方法,其特征在于,步骤S1之前还包括如下步骤:S1A.在主数据库节点配置主流复制控制器,在备用数据库节点配置备用流复制控制器,并设置各流复制控制器获取所在数据库节点的配置信息;S1B.根据流复制控制器获取的数据库节点的配置信息判断当前工作模式;若为异步模式,进入步骤S1;若为同步模式,进入步骤S3。3.如权利要求2所述的PostgreSQL数据库流复制异常处理方法,其特征在于,所述数据库节点配置信息包括本节点主从配置、异步/同步模式、IP配置以及对端IP。4.如权利要求1所述的PostgreSQL数据库流复制异常处理方法,其特征在于,步骤S1具体步骤如下:S11.在主备数据库节点异步模式,主流复制控制器在主数据库节点接收到用户写事务命令后,向备用流复制控制器同步发送写事务命令消息;S12.主流复制控制器控制本地写入预写日志,并在本地预写日志写入完成后,向备用流复制控制器发送主预写日志写入完成同步消息;S13.主流复制控制器控制主日志发送模块向备日志接收模块发送预写日志;S14.备用流复制控制器将备用日志接收模块接收的预写日志发送到日志回放模块进行回放,并在日志回放完成后,向主流复制控制器发送备预写日志写入完成同步消息。5.如权利要求4所述的PostgreSQL数据库流复制异常处理方法,其特征在于,步骤S11中,在主备数据库节点异步模式,主数据库节点的postgres模块接收到用户写事务操作后,通知主流复制控制器同步向备用流复制控制器发送用户写事务命令消息;步骤S12中,在向备用流复制控制器发送主预写日志写入完成同步消息后,主流复制控制器通过postgres模块向用户返回预写日志在主数据库节点完成通知;步骤S14中,在备用数据库节点日志回放模块完成预写日志写入后,备用流复制控制器向主流复制控制器发送备写入预写日志完成同步消息。
6.如权利要求4所述的PostgreSQL数据库流复制异常处理方法,其特征在于,步骤S2具体步骤如下:S21.在主备数据库节点异步模式,备用流复制控制器判断是否出现主数据库节点崩溃;若是,进入步骤S22;若...

【专利技术属性】
技术研发人员:孙颉张闯刘科黄广奎
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1