基于内存池共享内存降低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路径]。
依赖关系
无。