openGauss- 异步备升主数据找回能力
可获得性
本特性自openGauss 6.0.0-RC1版本开始引入。
特性简介
主机发生异常后,如果仅有异步备可以升主,旧主可能存在已提交的事务未同步到备机,该功能旨在找回这部分数据,通过逻辑解码的方式提供给用户,再由用户自行处理。
客户价值
当部署方式是多中心,且只有主中心的备机是同步备,而异地部署的备机都是采用异步同步的方式,如果发生城市级故障,主机和同步备均不可用,则需要将异步备升主。这种场景下,旧主可能存在已提交的事务还未同步到异步备。该功能旨在找回这部分数据,实现系统RPO接近为零。
特性描述
该特性通过工具gs_retrieve实现,实际使用上需要指定新旧主的IP、端口、连接用户名和密码等,在旧主恢复之后,将未同步的数据通过逻辑解码的方式找回。
gs_retrieve整体流程是通过解析xlog获取所有待解码的事务,获取创建逻辑复制槽所需的restart_lsn和confirmed_flush,以便构建一致性快照,从而调用内置函数来创建逻辑复制槽和解码,最终返回解码数据。
特性增强
无。
特性约束
-
gs_retrieve工具仅支持在旧主所在机器上使用,新主可在不同机器。
-
旧主恢复之后建议将autovacuum设置为off,防止元数据的历史版本被回收清理。
-
解码范围内存在DDL的情况下,可能由于元数据的历史版本被清理而无法正常解码。通过force方式解码,可能会丢失数据。
-
当旧主xlog堆积过多,导致还没同步到异步备的日志被回收时,可能无法获取完整的数据。
-
在gs_retrieve工具运行过程中,如果旧主执行相关IUD业务,同样会被解码出来。
依赖关系
依赖逻辑解码特性。
详情查看:https://opengauss.org
详情查看:https://docs-opengauss.osinfra.cn