openGauss是一款开源的关系型数据库管理系统,它具有多核高性能、全链路安全性、智能运维等企业级特性。 openGauss内核早期源自开源数据库PostgreSQL,融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及ARM架构上进行了适配与优化。作为一个开源数据库,期望与广泛的开发者共同构建一个多元化技术的开源数据库社区。
openGauss架构
高性能
openGauss突破了多核CPU的瓶颈,实现两路鲲鹏128核150万tpmC,内存优化表(MOT)引擎达350万tpmC。
数据分区
内部线程共享的关键数据结构进行数据分区,减少加锁访问冲突。比如CLOG就采用分区优化,解决ClogControlLock锁瓶颈。
NUMA化内核数据结构
关键数据结构NUMA化分配,减少跨CPU访问。比如全局PGPROC数组按照NUMA Node的数目分为多份,分别在对应NUMA Node上申请内存。解决ProcArrayLock锁瓶颈。
绑核优化
把网络中断绑核和后台业务线程绑核区分开,避免运行线程在核间迁移造成的性能不稳定。
ARM指令优化
结合ARM平台的原子操作lse进行优化,实现关键互斥变量原子高效操作。
SQL BY PASS
通过SQL BY PASS优化SQL执行流程,简化CPU执行开销。
高可靠
正常业务负载情况下,RTO小于10秒,降低节点故障导致的业务不可用时间。
并行恢复
主机日志传输到备机时,备机日志落盘的同时,发送给重做恢复分发线程,分发线程根据日志类型和日志操作的数据页发给多个并行恢复线程进行日志重做,保证备机的重做速度跟上主机日志的产生速度。这样备机实时处于ready状态,从而实现瞬间故障切换。
MOT引擎(Beta发布)
内存优化表(MOT)存储引擎是一个专为多核大内存优化的存储引擎,具有极高的联机事务处理(OLTP)性能和资源利用率。MOT的数据和索引完全存储在内存中,通过NUMA感知执行,算法消除闩锁争用以及查询JIT本地编译,提供低时延数据访问及高效事务执行。更多请参考MOT引擎文档。
安全
openGauss支持账号管理,账号认证,口令复杂度检查,账号锁定,权限管理和校验,传输加密,操作 审计等全方位的数据库安全能力,保护业务满足安全要求。
易运维
openGauss将AI算法集成到数据库中,减少数据库维护的负担。
SQL预测
openGauss根据收集的历史性能数据进行编码和基于深度学习的训练及预测,支持SQL执行时间预测。
SQL诊断器
openGauss支持SQL执行语句的诊断器,提前发现慢查询。
参数自动调整
openGauss通过机器学习方法自动调整数据库参数,提高调参效率,降低正确调参成本。
安装
创建配置文件
在安装openGauss之前,需要创建clusterconfig.xml配置文件。XML文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss如何部署。用户需根据不同场配置对应的XML文件。
下面以一主一备的部署方案为例,说明如何创建XML配置文件。 以下value取值信息仅为示例,可自行替换。每行信息均有注释进行说明。
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAM name="clusterName" value="dbCluster" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="node1,node2" />
<!-- 节点IP,与nodeNames一一对应 -->
<PARAM name="backIp1s" value="192.168.0.11,192.168.0.12"/>
<!-- 数据库安装目录-->
<PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
<!-- 日志目录-->
<PARAM name="gaussdbLogPath" value="/var/log/omm" />
<!-- 临时文件目录-->
<PARAM name="tmpMppdbPath" value="/opt/huawei/tmp"/>
<!--数据库工具目录-->
<PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
<!--数据库core文件目录-->
<PARAM name="corePath" value="/opt/huawei/corefile"/>
<!-- openGauss类型,此处示例为单机类型,“single-inst”表示单机一主多备部署形态-->
<PARAM name="clusterType" value="single-inst"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- node1上的节点部署信息 -->
<DEVICE sn="1000001">
<!-- node1的hostname -->
<PARAM name="name" value="node1"/>
<!-- node1所在的AZ及AZ优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.0.11"/>
<PARAM name="sshIp1" value="192.168.0.11"/>
<!--dbnode-->
<PARAM name="dataNum" value="1"/>
<!--DBnode端口号-->
<PARAM name="dataPortBase" value="26000"/>
<!--DBnode主节点上数据目录,及备机数据目录-->
<PARAM name="dataNode1" value="/opt/huawei/install/data/db1,node2,/opt/huawei/install/data/db1"/>
<!--DBnode节点上设定同步模式的节点数-->
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
<!-- node2上的节点部署信息,其中“name”的值配置为主机名称(hostname) -->
<DEVICE sn="1000002">
<PARAM name="name" value="node2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.0.12"/>
<PARAM name="sshIp1" value="192.168.0.12"/>
</DEVICE>
</DEVICELIST>
</ROOT>
初始化安装环境
创建完openGauss配置文件后,在执行安装前,为了后续能以最小权限进行安装及openGauss管理操作,保证系统安全性,需要运行安装前置脚本gs_preinstall准备好安装用户及环境。
安装前置脚本gs_preinstall可以协助用户自动完成如下的安装环境准备工作:
1、自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。
2、自动将openGauss配置文件、安装包拷贝到openGauss主机的相同目录下。
3、openGauss安装用户、用户组不存在时,自动创建安装用户以及用户组。
4、读取openGauss配置文件中的目录信息并创建,将目录权限授予安装用户。
注意事项
用户需要检查上层目录权限,保证安装用户对安装包和配置文件目录读写执行的权限。
xml文件中各主机的名称与IP映射配置正确。
只能使用root用户执行gs_preinstall命令。
操作步骤
1.以root用户登录待安装openGauss的任意主机,并按规划创建存放安装包的目录。
mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
说明:
不建议把安装包的存放目录规划到openGauss用户的家目录或其子目录下,可能导致权限问题。
openGauss用户须具有/opt/software/openGauss目录的读写权限。
2.将安装包“openGauss-x.x.x-openEULER-64bit.tar.gz”和配置文件“clusterconfig.xml”都上传至上一步所创建的目录中。
3.在安装包所在的目录下,解压安装包openGauss-x.x.x-openEULER-64bit.tar.gz。安装包解压后,在/opt/software/openGauss目录下自动生成script目录。在script目录下生成gs_preinstall等OM工具脚本。
cd /opt/software/openGauss
tar -zxvf openGauss-x.x.x-openEULER-64bit.tar.gz
4.进入工具脚本目录。
cd /opt/software/openGauss/script
5.如果是openEuler的操作系统,执行如下命令打开performance.sh文件,用#注释sysctl -w vm.min_free_kbytes=112640 &> /dev/null,键入“ESC”键进入指令模式,执行:wq保存并退出修改。
vi /etc/profile.d/performance.sh
6.为确保openssl版本正确,执行预安装前请加载安装包中lib库。执行命令如下,其中*{packagePath}*为用户安装包放置的路径,本示例中为/opt/software/openGauss。
export LD_LIBRARY_PATH={packagePath}/script/gspylib/clib:$LD_LIBRARY_PATH
7.为确保成功安装,检查 hostname 与 /etc/hostname 是否一致。预安装过程中,会对hostname进行检查。
8.使用gs_preinstall准备好安装环境。若为共用环境需加入–sep-env-file=ENVFILE参数分离环境变量,避免与其他用户相互影响,ENVFILE为用户自行指定的环境变量分离文件的路径。 执行如下命令,即采用交互模式执行前置,并在执行过程中自动创建root用户互信和openGauss用户互信:
./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/clusterconfig.xml
omm为数据库管理员用户(即运行openGauss的操作系统用户),dbgrp为运行openGauss的操作系统用户的组名,/opt/software/ openGauss/clusterconfig.xml为openGauss的配置文件路径。执行过程中需要根据提示选择建立互信,并输入root或openGauss用户的密码。
执行安装
执行前置脚本准备好openGauss安装环境之后,按照启动安装过程部署openGauss。
前提条件
已成功执行前置脚本gs_preinstall。
所有服务器操作系统和网络均正常运行。
用户需确保各个主机上的locale保持一致。
操作步骤
1.(可选)检查安装包和openGauss配置文件在规划路径下是否已存在,如果没有,重新执行预安装,确保预安装成功,再执行以下步骤。
2.登录到openGauss的主机,并切换到omm用户。
su - omm
说明
omm为gs_preinstall脚本中-U参数指定的用户。
以上述omm用户执行gs_install脚本。否则会报执行错误。
3.使用gs_install安装openGauss