数据库其它

关注公众号 jb51net

关闭
首页 > 数据库 > 数据库其它 > openGauss数据库共享存储

openGauss数据库共享存储特性概述

作者:Gauss松鼠会

这篇文章主要介绍了openGauss数据库共享存储特性简介,本特性提供主备机共享一份存储的能力,实现基于磁阵设备的主备共享存储HA部署形态,可选通过OCK RDMA提升备机实时一致性读能力,需要的朋友可以参考下

openGauss 3.1.1是openGauss 5.0.0 release版本的Preview版本,希望广大社区伙伴和开发者基于此版本进行场景化验证,提前发现问题并反馈社区,社区将在LTS版本发布前进行问题修复。当前文档说明范围仅限企业版。

版本介绍

3.1.1与之前的版本特性功能保持兼容,主要功能如下:

继承功能:

新增功能:

其中,主备共享存储特性是3.1.X版本引入的比较重要特性。下面重点介绍一下。

主备共享存储

特性简介

本特性提供主备机共享一份存储的能力,实现基于磁阵设备的主备共享存储HA部署形态,可选通过OCK RDMA提升备机实时一致性读能力_。_主备共享存储架构图如下图所示。

在这里插入图片描述

图 1 主备共享架构图

客户价值

解决传统HA部署下存储容量较单机部署翻倍的问题,减少了存储容量,节省磁阵设备。可选通过OCK RDMA提升备机实时一致性读能力。

特性描述

-共享存储依赖两个自研的公共组件实现主备共享存储的能力:

DSS是独立进程,直接管理磁阵裸设备,并对外提供类似分布式文件系统的能力。通过共享内存和客户端API动态库,为数据库提供创建文件、删除文件、扩展和收缩文件、读写文件的能力。

DMS是动态库,集成在数据库内部,通过TCP/RDMA网络传输PAGE内容,将主备内存融合,提供内存池化能力,以此实现备机实时一致性读功能。

共享存储通过分布式存储服务DSS组件实现主备共享一份存储。与传统建库相比,共享存储基于磁阵建库将目录分为三种类型,每实例独占且不共享、每实例独占且共享、所有实例共享。其中需要共享的目录均需存放到磁阵设备上,而不共享的目录存放在本地盘上。另外备机建库只需要建隶属于自己的目录,不需要再次创建所有实例共享的目录结构。主备共享存储新增了相关GUC参数,以及将系统表存储方式从页式切换到段页式。

共享存储通过分布式内存服务DMS组件实现主备页面实时交换,提供备机实时一致性能力。即主机事务提交后,在备机立即能够读到,不存在延迟读现象(事务隔离级别为Read-Committed)。

共享存储通过OCK RDMA降低DMS主备页面交换时延。TCP下的备机一致性读进行时延对比,开启OCK RDMA,备机一致性读时延至少要降低20%。

特性约束

主备共享存储方案依赖于磁阵设备,磁阵的LUN需要支持SCSI3的PR协议(包括PR OUT(“PERSISTENT RESERVE OUT”)PR IN(“PERSISTENT RESERVE IN”)和INQUIRY), 用于实现集群IO FENCE。除此之外, 还需要支持SCSI3的CAW协议(COMPARE AND WRITE),用于实现共享磁盘锁。如Dorado 5000 V3磁阵设备。
实现的主备共享存储HA部署形态只支持1主1备和1主2备场景,其他场景为体验版未测试过,不承诺。
由于主备共享存储依赖类似分布式文件系统的功能来实现备机实时一致性读能力,因此要求文件元数据变更越少越好。基于性能考虑,只支持段页式表。
只支持主备部署在同一磁阵设备上,不支持容灾部署,也不支持主备混合部署(如主和备部署在不同的磁阵设备上)。
主备页面交换通过RDMA加速,依赖CX5网卡,并且依赖OCK RDMA动态库。
暂不支持备机重建及节点替换、节点修复等能力。
不支持从传统HA部署升级到基于主备共享存储部署。
共享存储模式下gs_xlogdump_xid,gs_xlogdump_lsn,gs_xlogdump_tablepath,gs_xlogdump_parsepage_tablepath、pg_create_logical_replication_slot、gs_verify_and_tryrepair_page、gs_repair_page、gs_repair_file函数功能不支持使用。
共享存储模式下T_CreatePublicationStmt、T_AlterPublicationStmt、T_CreateSubscriptionStmt、T_AlterSubscriptionStmt、T_DropSubscriptionStmt订阅功能不支持使用。
共享存储模式下不支持全局临时表。

安装部分对应的也新增了共享存储场景的支持。cluster_config_template.xml配置文件模板示例:

   ...
    <!-- 共享存储模式开关 -->
    <PARAM name="enable_dss" value="on"/>
    <!-- dss实例目录 -->
    <PARAM name="dss_home" value="/opt/huawei/install/data/dss"/>
    <!-- dss共享卷名 -->
    <PARAM name="ss_dss_vg_name" value="data"/>
    <!-- dss挂载卷组名和卷组信息,包含共享卷 -->
    <PARAM name="dss_vg_info" value="data:/dev/sdb,p0:/dev/sdc,p1:/dev/sdd"/>
    <!-- cm投票卷 -->
    <PARAM name="votingDiskPath" value="/dev/sde"/>
    <!-- cm共享卷 -->
    <PARAM name="shareDiskDir" value="/dev/sdf"/>
    <!-- dss开启ssl认证开关 -->
    <PARAM name="dss_ssl_enable" value="on"/>
    <!-- mes通信协议类型  -->
    <PARAM name="ss_interconnect_type" value="TCP"/>
    <!-- rdma绑定cpu序列  -->
    <PARAM name="ss_rdma_work_config" value="1 7"/>

欢迎有兴趣和条件的同学可以对主备共享存储特性进行场景化验证。

到此这篇关于openGauss数据库共享存储特性简介的文章就介绍到这了,更多相关openGauss数据库共享存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文