基于内存池共享内存降低RTO时间

可获得性

本特性自openGauss 7.0.0-RC2版本开始引入。

特性简介

本特性通过向灵衢系统上的一块逻辑上非易失性的UBS Memory共享内存做checkpoint,与传统向磁盘写checkpoint协同工作减少数据库恢复时需要回放的日志量,进一步降低RTO时间,支持以下场景:

  • 支持主机与备机通过日志同步,加速备机升主的场景。
  • 支持数据库主机重启时加速恢复的场景。

客户价值

通常主机故障后,数据恢复需要很长时间,在此期间数据库不可用,严重影响系统可用性。

目前openGauss已通过并行回放、极致RTO等技术降低RTO,本特性在此基础上通过内存池共享内存进一步降低数据恢复时间,提高可用性。在70万tpmc下,开启极致RTO时备机failover升主时间小于6s。

特性描述

UBS Memory是在灵衢超节点上基于底层UB Memory能力提供的高阶服务能力,实现UB(Unified Bus,灵衢总线)系统上的内存借用和共享能力,为上层应用提供UB Memory的简易使用能力。通过对底层硬件能力和OS层接口的封装和集成,提供类posix逻辑的操作接口,UBS Memory特性分为内存借用和内存共享两类,共享内存可供多个节点共同使用,本特性使用UBS Memory的内存共享功能。

正常情况下,当数据库对page进行修改时,会将对应page异步写入共享内存,共享内存与数据库进程相互独立,不受数据库故障影响。当主机故障时,主机重启或备机升主的过程中,会跳过共享内存中page对应的部分日志回放,对应page在数据库提供服务后会从共享内存中进行拉取,此时如果访问共享内存中未拉取的page则会进行按需拉取。本特性通过减少故障恢复过程中所需回放的日志量,从而达到加速故障恢复过程的效果。

guc参数max_smb_memory控制本特性的开关,max_smb_memory的值为共享内存的大小,为0时表示不使用本特性。

max_smb_memory

参数说明: 从内存池中申请的共享内存大小,用于存放数据库修改的page。

该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。

取值范围: 整型, 0 ~ 13107200, 单位为8kB。

max_smb_memory需要设置为BLCKSZ的整数倍,BLCKSZ目前设置为8kB,即max_smb_memory需要设置为8kB整数倍。

默认值:0

设置建议:

主备场景在开启极致RTO的情况下,一般设置为10GB足够。单主机场景下,推荐设置为50GB。

特性增强

无。

特性约束

  • 支持与并行回放或极致RTO一起使用,不支持与极致RTO按需回放和极致RTO实施构建一同使用。
  • 本特性不支持在资源池化部署下使用。
  • 本特性不支持备机读。
  • max_smb_memory当前最大支持50GB。
  • 使用本特性须在数据库启动前使用smb_mgr工具申请共享内存,数据库关闭后同样使用smb_mgr工具释放共享内存。具体命令为smb_mgr start/stop -D [数据库路径] -L [libubsm_sdk.so路径]。

依赖关系

无。

意见反馈
编组 3备份
    openGauss 2025-09-28 07:42:17
    取消