本文档环境:openEuler 22.03 LTS x86_64 4G1C40G
openGauss 介绍
openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。
openGauss社区版本分为长期支持版本和创新版本:
· 长期支持版本 (LTS) ——规模上线使用,发布间隔周期为1年,提供3年社区支持。
· 社区创新版本 (Preview) ——联创测试使用,发布间隔周期为1年,提供6个月社区支持。
openGauss支持单机部署和单机HA部署两种部署方式。单机部署时,可在一个主机部署多个数据库实例,但为了数据安全,不建议用户这样部署。单机HA部署支持一台主机和最少一台备机,备机一共最多8台的配置方式。
说明: 通过openGauss提供的脚本安装时,只允许在单台物理机部署一个数据库系统。如果您需要在单台物理机部署多个数据库系统,建议您通过命令行安装,不需要通过openGauss提供的安装脚本执行安装。
openGauss 6.0介绍
openGauss 6.0.0 LTS 是社区最新发布的长期支持版本,版本生命周期为3年。 本次发布包含2个数据库服务端安装版本:企业版、轻量版,用户可根据使用场景需要下载不同版本。
内核能力增强
企业级特性
- oGEngine原位更新存储引擎增强:大压力下性能抖动小于3%,存储空间利用率相比 AStore 提升15%;支持 SMP 并行查询(支持顺序扫描算子);其他可靠性全面增强。
- 存储过程增强:游标支持嵌套定义,cursor 定义中可以再定义子 cursor。通过 TYPE 语法定义动态游标 REF CURSOR 时,支持通过 RETURN 指定游标返回的数据类型。支持存储过程覆盖率测试并输出 html 报告,同时允许创建 procedure 时忽略依赖关系进行创建。
- SQL功能增强:支持 PIPELINED 管道函数,函数可以返回行集合。SELECT 语句支持通过 ROTATE 和 NOT ROTATE 子句进行行列转换。
- 其他增强:支持全链路跟踪能力,实现追踪并记录 jdbc 查询接口执行 sql 的端到端网络耗时,并记录在数据库 dbe_perf.statement 视图、statement_history 表中。慢 SQL 统计默认开启执行计划统计。
内核四高能力
高性能
- 主备复制性能:支持 UWAL 组件,加速主备 XLog 复制,提升一主一同步备场景下 TPCC 性能20%。优化主备锁机制控制粒度和有序队列加锁逻辑,提升一主一同步备场景下 TPCC 性能10%。对 SyncRepLock 的控制粒度进行修改,并且对原有的 WalSnder、Backends 所共同控制的加锁有序队列机制进行修改,去除大粒度的加锁同步操作。
- 北向网络性能:借助高性能用户态网络协议栈(Gazelle),基于区域大页划分、动态绑核、全路径零拷贝等技术,避免资源的共享开销。基于数据读写与协议处理分离的设计,避免多线程锁竞争,从而达到性能最大化。
- 分区表性能:在多分区表场景(大于 3000 分区)下,TPCC 数据导入耗时下降 13%,TPCC 性能提升 30%;分区表数据操作(查询、插入、更新、删除等)耗时下降 50%。
- SMP场景扩展:函数 /PACKAGE支持指定并行相关参数,NO SCROLL 游标和作为并行函数入参的游标表达式支持并行执行。
- 基础算子性能:Insert、Update、Delete、索引扫描性能提升 15%以上。
高可用
- CM 集群管理组件支持在资源池化场景下,通过 CM 切换备集群首备,实现备集群首备切换能力。
- CM 两节点部署,支持心跳网络,支持多个三方 ip 检测,减少脑裂情况发生。
- 逻辑复制功能新增支持 Alter/Truncate/Rename 表和分区表DDL语法支持。使得大部分的常用DDL语法均支持逻辑复制,提供逻辑复制功能可用性。
- 支持异步备升主数据找回能力, 新增 gs_retrieve 工具实现对旧主未同步到异步备的数据通过逻辑解码的方式找回,满足异步备升主场景 RPO≈0。
- 发布订阅支持用户自定义冲突解决方案,构建完整异地双活能力。
高智能
- 新增 DataVec 向量数据库插件,作为为专有大模型的向量数据存储和检索的底座,支持向量数据的存储、 相似度计算,支持针对向量数据建立索引(IVFFLAT、HNSW),加速查询。
高安全
- 支持对服务启停操作进行审计、对数据库备份恢复操作进行审计。
- 发布安全配置基线以及安全配置巡检工具。提供工具自动化检测数据库的各项配置是否符合安全指导并提供配置建议,支持自动修改不安全的参数。
- 抽象加解密与密钥管理适配层,支持统一接口对接第三方密钥管理服务和加密机,兼容第三方 KMS。
DataPod 三层资源池化架构持续创新
按需回放 redo 阶段支持 DDL 执行
failover 场景中,新主 redo 阶段支持对外提供服务,同时支持常见 DDL 执行,包括:SCHEMA、TABLE、INDEX、VIEW、PROCEDURE 的 CREATE/DROP/ALTER 操作,以及 DATABASE 的 ALTER 操作。
支持离线对资源池化备机进行扩缩容操作
支持通过 gs_expansion、gs_dropnode 工具,对资源池化集群进行增删备节点。
dsscmd 支持连接到 DSS Server 中,直接执行读写文件的命令
支持通过交互式方式连接到DSS Server,去除每次访问 DSS 文件系统对 DSS Server 的建连操作。同时支持 cd,pwd 命令,以及上下方向键浏览历史执行命令,提升易用性。
对接分布式存储,并支持将算子卸载到存储设备进行计算
通过在存储上完成计算,消减存储层和计算层的网络 IO 流量,充分利用存储的 CPU 资源。在 100GB 和 1TB 两种数据量下的 TPC-H 性能提升了 40%。
写操作透明转发
应用可以从任何一个节点接入数据库,内核会将写操作透明转发到读写节点,本地只执行读操作,并保持事务一致性。该功能可以简化应用接入数据库,同时增强系统扩展性。
支持 SPQ 多机并行查询框架
基于资源池化架构所有节点都共享集群内的资源,支持生成多机执行计划,并将计划分发到各节点执行,查询节点可汇聚各节点数据实现所有读节点并行查询,充分发挥集群的 OLAP 能力,使资源池化同时具备较强的 TP 和 AP 能力,满足资源池化(一主两备)场景下 TPC-H&TPC-DS 相比单节点 SMP 提升大于 2.6 倍。
容灾能力增强
集群内高可用:支持 XLog 按需回放,实时解析 XLog 构建页面多版本恢复链,在主机故障时备机快速对外提供服务,实现典型业务负载下 RTO<10s。
集群间高可用:容灾支持两种方式,基于 Dorado 同步复制实现主备双集群方案,适用于百公里级别的同城双中心容灾场景,支持 RPO=0,典型业务负载下 RTO<30s; 基于流复制的主备双集群方案,可灵活部署,适用于同城或异地容灾场景。
DataKit 数据全生命周期管理平台能力增强
录制回放功能
- 支持流量录制回放工具,支持连接源端数据库(MySQL),通过截取和解析 MySQL 网络通讯包采集 SQL,并且向 openGauss 数据库进行 SQL 回放&压测,支持N倍压力回放并比较结果和性能。
- 同时支持解析 MySQL 数据库的 General Log 表或文件、Attach 到 JAVA 应用程序等方式采集SQL。
迁移能力
- 可靠性增强,支持主机故障时可自动轮询切换到新主节点,实现数据库节点故障时迁移的断点续传。支持 JDBC 超时重连、流量控制机制。
- 易用性增强,支持指定表的全量和增量迁移;Portal 支持依赖包离线安装,支持对 chameleon 打包时对其所依赖的三方库和 so 统一打包。
- 评估能力增强,支持从 MySQL 源库、文件、业务进程中解析和采集 SQL 并输出兼容性报告,支持展示不兼容 SQL 的初始位置,便于快速定位业务不兼容点。对 Mybatis/iBatis ORM 框架评估,提取 SQL 正确率高于 99.5%。
智能运维
- 支持集群监控和智能诊断,能依据系统运行的历史数据进行不优 SQL、等待事件、锁等异常诊断,发现系统潜在风险。
- 增加 CM 日志采集,支持 lucene 语法搜索。
- 支持智能参数调优,结合机器学习方法,有效利用当前负载信息和数据库历史性能表现,推荐一组性能最优的参数。
安装部署
提升对 DataKit 资源中心和集群安装的易用性:
- 支持按文件导入方式批量添加服务器和用户。
- 支持指定IP和端口,通过 gs_om 查询集群配置信息,实现对已安装数据库集群的管理。
- 支持资源池化双集群部署,支持安装、切换和状态查询操作。
对象管理
- 支持查看/修改用户/角色。
- 支持对触发器、外部表、定时任务的操作。
- 支持存储过程、函数、匿名块的调试,减低 PLSQL 开发调试难度。
生态兼容性增强
MySQL 兼容
- 兼容 MySQL 5.7/8.0 协议。
- 支持删除表时忽略视图和表的依赖。删除表时,如果一个视图是基于该表创建的,那么删除可以正常执行,该视图会被设为非法状态,查询视图时直接报错。
- 支持 straight_join,在内连接中强制左右表的顺序,以左表驱动右表,而不是以开销大小驱动优化器选择执行顺序。
- 支持interval内部表达式运算、列引用、预编译绑定参数用法。
- performance、shrink 关键字从保留字降级为非保留(不能是函数或类型)关键字。使得其可以作为表名/列名来使用。
安装前准备
软硬件要求
仅作参考,自测环境低一些也可以,本文档是openEuler 22.03 LTS x86_64 4G1C40G 的配置
硬件环境
表1 硬件环境要求列出了openGauss服务器应具备的最低硬件要求。在实际产品中,硬件配置的规划需考虑数据规模及所期望的数据库响应速度。请根据实际情况进行规划。
表 1 硬件环境要求
项目 |
配置描述 |
内存 |
功能调试建议32GB以上。 性能测试和商业部署时,单实例部署建议128GB以上。 复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。 |
CPU |
功能调试最小1×8 核 2.0GHz。 性能测试和商业部署时,建议1×16核 2.0GHz。 CPU超线程和非超线程两种模式都支持。 说明: 个人开发者最低配置2核4G, 推荐配置4核8G。 目前,openGauss仅支持ARM服务器和基于X86_64通用PC服务器的CPU。 |
硬盘 |
用于安装openGauss的硬盘需最少满足如下要求:
建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装openGauss。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。 openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。 |
网络要求 |
300兆以上以太网。 建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。 该文档只采用了1块网卡。 |
软件环境
表 2 软件环境要求
软件类型 |
配置描述 |
Linux操作系统 |
|
Linux文件系统 |
剩余inode个数 > 15亿(推荐) |
工具 |
bzip2 |
Python |
|
软件依赖要求
openGauss的软件依赖要求如表3 软件依赖要求所示。
建议使用上述操作系统安装光盘或者源中,下列依赖软件的默认安装包,若不存在下列软件,可参看软件对应的建议版本。
表 3 软件依赖要求
所需软件 |
建议版本 |
libaio-devel |
建议版本:0.3.109-13 |
readline-devel |
建议版本:7.0-13 |
expect |
-- |
系统参数配置
操作系统主机命名(可选)
如果采用默认主机名,可忽略该步骤,默认的主机名localhost.localdomain,xml文件中的主机名也需要改成localhost.localdomain
hostnamectl set-hostname opendb01
/etc/hosts配置(可选)
如果采用默认主机名,可忽略该步骤,预安装会自动追加127.0.0.1 localhost #Gauss OM IP Hosts Mapping
cp /etc/hosts /etc/hosts.bak cat >>/etc/hosts<<EOF 192.168.40.106 opendb01 EOF
/etc/security/limits.conf配置
不用配置该文件,会自动追加如下内容:
cp /etc/security/limits.conf /etc/security/limits.conf_bak_`date +%F` cat >> /etc/security/limits.conf << "EOF" #add by openGauss * soft nofile 1000000 * hard nofile 1000000 EOF
关闭透明页
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag --加入开机启动 echo ' echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag' >>/etc/rc.local chmod +x /etc/rc.local
防火墙配置
systemctl stop firewalld.service systemctl disable firewalld.service
如果启用防火墙需进行如下配置:
如果数据库端口和ssh端口不是5432和22,需视情况更改
firewall-cmd --zone=public --add-port=5432/tcp --permanent firewall-cmd --zone=public --add-port=22/tcp --permanent firewall-cmd --reload
selinux配置
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config setenforce 0
关闭 numa和禁用透明大页
sed -i "s/quiet/quiet numa=off transparent_hugepage=never/g" /etc/default/grub grub2-mkconfig -o /etc/grub2.cfg
设置字符集参数
echo "export LANG=en_US.UTF-8" >> /etc/profile source /etc/profile
设置时区和时间
如果服务器时间和当前时间相差8小时或者12小时,需要查看时区,分析是否决定更改。
非可视化更改步骤
--查看当前时间 [root@opendb01 ~]# date Tue Oct 15 09:06:37 AM CST 2024 --查看当前时区 [root@opendb01 ~]# timedatectl Local time: Tue 2024-10-15 09:06:49 CST Universal time: Tue 2024-10-15 01:06:49 UTC RTC time: Tue 2024-10-15 01:06:49 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no --更改时区 执行tzselect命令 [root@opendb01 ~]# tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent, ocean, "coord", or "TZ". 1) Africa 2) Americas 3) Antarctica 4) Asia 5) Atlantic Ocean 6) Australia 7) Europe 8) Indian Ocean 9) Pacific Ocean 10) coord - I want to use geographical coordinates. 11) TZ - I want to specify the time zone using the Posix TZ format. --找到Asia,输入4,回车 Please select a country whose clocks agree with yours. 1) Afghanistan 18) Israel 35) Palestine 2) Armenia 19) Japan 36) Philippines 3) Azerbaijan 20) Jordan 37) Qatar 4) Bahrain 21) Kazakhstan 38) Russia 5) Bangladesh 22) Korea (North) 39) Saudi Arabia 6) Bhutan 23) Korea (South) 40) Singapore 7) Brunei 24) Kuwait 41) Sri Lanka 8) Cambodia 25) Kyrgyzstan 42) Syria 9) China 26) Laos 43) Taiwan 10) Cyprus 27) Lebanon 44) Tajikistan 11) East Timor 28) Macau 45) Thailand 12) Georgia 29) Malaysia 46) Turkmenistan 13) Hong Kong 30) Mongolia 47) United Arab Emirates 14) India 31) Myanmar (Burma) 48) Uzbekistan 15) Indonesia 32) Nepal 49) Vietnam 16) Iran 33) Oman 50) Yemen 17) Iraq 34) Pakistan --找到china,输入9,回车 Please select one of the following time zone regions. 1) Beijing Time 2) Xinjiang Time --找到北京时间,输入1,回车 Please select one of the following time zone regions. 1) Beijing Time 2) Xinjiang Time --选择yes,输入1,回车 The following information has been given: China Beijing Time Therefore TZ='Asia/Shanghai' will be used. Selected time is now: Wed Jan 24 21:40:32 CST 2024. Universal Time is now: Wed Jan 24 13:40:32 UTC 2024. Is the above information OK? 1) Yes 2) No --更新设置 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime --查看是否更改成功 root@HKSZF-ZW-172-19-146-176:/topsoft# date Fri Apr 19 14:15:52 CST 2024 [root@localhost ~]# timedatectl Local time: Fri 2024-04-19 14:16:08 CST Universal time: Fri 2024-04-19 06:16:08 UTC RTC time: Fri 2024-04-19 06:16:07 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: n/a NTP synchronized: no RTC in local TZ: no DST active: n/a
可视化更改步骤
--查看当前时间 [root@opendb01 ~]# date Tue Oct 15 09:07:37 AM CST 2024 --查看当前时区 [root@opendb01 ~]# timedatectl Local time: Tue 2024-10-15 09:08:08 CST Universal time: Tue 2024-10-15 01:08:08 UTC RTC time: Tue 2024-10-15 01:08:08 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no
在可视化界面中查看
选择进入 Applications -> System Tools -> Settings -> Details -> Date & Time
调整时间
点击“Date & Time”行中任意位置,弹出弹窗,调整时间为当前北京时间,再关闭弹窗,即保存。如下图所示:
再次使用命令查看,本地时间已显示为北京时间
[root@localhost ~]# timedatectl Local time: Fri 2024-04-19 14:43:31 CST Universal time: Fri 2024-04-19 06:43:31 UTC RTC time: Fri 2024-04-19 06:43:30 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: n/a NTP synchronized: no RTC in local TZ: no DST active: n/a
关闭swap交换内存(可选)
关闭swap交换内存是为了保障数据库的访问性能,避免把数据库的缓冲区内存淘汰到磁盘上。 如果服务器内存比较小,内存过载时,可打开swap交换内存保障正常运行。
swapoff -a
关闭RemoveIPC
在各数据库节点上,关闭RemoveIPC。CentOS操作系统默认为关闭,可以跳过该步骤。
- 修改/etc/systemd/logind.conf文件中的“RemoveIPC”值为“no”。a. 使用VIM打开logind.conf文件。
--更改后的/etc/systemd/logind.conf vi /etc/systemd/logind.conf RemoveIPC=no --更改后的systemd-logind.service vi /usr/lib/systemd/system/systemd-logind.service RemoveIPC=no --重新加载配置参数 systemctl daemon-reload systemctl restart systemd-logind --检查修改是否生效 loginctl show-session | grep RemoveIPC systemctl show systemd-logind | grep RemoveIPC
关闭HISTORY记录(可选)
为避免指令历史记录安全隐患,需关闭各主机的history指令。
更改/etc/profile中HISTSIZE值 vi /etc/profile HISTSIZE默认值为1000 更改为 HISTSIZE=0 --生效 source /etc/profile
配置yum源
将操作系统镜像上传至/opt目录下
mount /opt/*.iso /mnt/ cat << EOF >> /etc/fstab /dev/sr0 /mnt iso9660 loop 0 0 EOF mkdir -p /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak cat >> /etc/yum.repos.d/os.repo <<"EOF" [OS1] name=OS baseurl=file:///mnt enabled=1 gpgcheck=0 EOF
安装依赖包
--安装openGauss数据库的依赖包 yum install -y libaio-devel readline-devel expect --安装辅助工具 yum install -y tar yum install -y vim
编译安装rlwrap
解决上下翻历史命令、退格删除。
上传rlwrap-0.46.1.tar.gz至/opt目录下
yum install gcc-c++ readline* libtermcap-devel* tar -xvf rlwrap-0.46.1.tar.gz cd rlwrap-0.46.1 ./configure make make install
创建用户及用户组(可选)
可以创建也可以不创建,自行操作
--创建用户组dbgrp groupadd dbgrp --创建用户组dbgroup下的普通用户omm,并设置密码为Gauss_234 useradd -g dbgrp -m omm passwd omm
为了实现安装过程中安装帐户权限最小化,及安装后openGauss的系统运行安全性,安装脚本在安装过程中会自动按照用户指定内容创建安装用户,并将此用户作为后续运行和维护openGauss的管理员帐户。
用户/组名 |
所属类型 |
规划建议 |
dbgrp |
操作系统 |
建议规划单独的用户组,例如dbgrp。 初始化安装环境时,由-G参数所指定的安装用户所属的用户组。该用户组如果不存在,则会自动创建,也可提前创建好用户组。在执行gs_preinstall脚本时会检查权限。gs_preinstall脚本会自动赋予此组中的用户对安装目录、数据目录的访问和执行权限。 创建dbgrp用户组命令: groupadd dbgrp |
omm |
操作系统 |
建议规划用户用于运行和维护openGauss,例如omm。 初始化安装环境时,由-U参数所指定和自动创建的操作系统用户,如果已经存在该用户,请清理该用户或更换初始化用户。从安全性考虑,对此用户的所属组规划如下: 所属组:dbgrp |
在安装openGauss过程中root用户运行 openGauss-All-6.0.0-openEuler22.03-x86_64.tar.gz中scripts目录中的“gs_preinstall”时,会创建与安装用户同名的数据库用户,即数据库用户omm。此用户具备数据库的最高操作权限,此用户初始密码由用户指定。
目录规划
--创建存放安装包的目录 mkdir -p /topsoft/soft/openGauss chmod 777 -R /topsoft/soft
不建议把安装包的存放目录规划到openGauss用户的根目录或其子目录下,可能导致权限问题。。安装目录和数据目录在统一目录下也会导致权限问题,建议安装目录和数据目录分开。
openGauss用户须具有/topsoft/soft/openGauss目录的读写权限。
规划以下目录但是不要创建,后面执行gs_preinstall时会自动创建,如果提前创建,执行gs_preinstall过程中会报错
/topsoft/huawei/install/app #数据库安装目录 /topsoft/huawei/log/omm #日志目录 /topsoft/huawei/tmp #临时文件目录 /topsoft/huawei/install/om #数据库工具目录 /topsoft/huawei/corefile #数据库core文件目录
下载并上传安装包
登录openGauss开源社区https://opengauss.org/zh/download/,选择对应平台的企业版安装包。
安装包“openGauss-All-6.0.0-openEuler22.03-x86_64.tar.gz”上传至/topsoft/soft/openGauss目录。
配置单节点XML文件
安装openGauss前需要创建XML文件。XML文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss如何部署。用户需根据不同场景配置对应的XML文件。
关于如何配置XML文件,详细请参见创建XML配置文件。
将cluster_config.xml上传至/topsoft/soft/openGauss目录,安装包“openGauss-All-6.0.0-openEuler22.03-x86_64.tar.gz”和配置文件“cluster_config.xml”都上传至上一步所创建的目录中。
为确保成功安装,检查hostname与/etc/hostname是否一致。预安装过程中,会对hostname进行检查。
默认端口5432,若待用自定义端口,更改xml文件中的端口号
官方XML文件模板
cat cluster_config.xml <?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss整体信息 --> <CLUSTER> <!-- 数据库名称 --> <PARAM name="clusterName" value="dbCluster" /> <!-- 数据库节点名称(hostname) --> <PARAM name="nodeNames" value="node1_hostname" /> <!-- 数据库安装目录--> <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" /> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="192.168.0.1"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- 节点1上的部署信息 --> <DEVICE sn="node1_hostname"> <!-- 节点1的主机名称 --> <PARAM name="name" value="node1_hostname"/> <!-- 节点1所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.0.1"/> <PARAM name="sshIp1" value="192.168.0.1"/> <!--dbnode--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="5432"/> <PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> </DEVICELIST> </ROOT>
根据官方模板更改后的xml文件
cat cluster_config.xml <?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss整体信息 --> <CLUSTER> <!-- 数据库名称 --> <PARAM name="clusterName" value="dbCluster" /> <!-- 数据库节点名称(hostname) --> <PARAM name="nodeNames" value="opendb01" /> <!-- 数据库安装目录--> <PARAM name="gaussdbAppPath" value="/topsoft/huawei/install/app" /> <!-- 日志目录--> <PARAM name="gaussdbLogPath" value="/topsoft/huawei/log/omm" /> <!-- 临时文件目录--> <PARAM name="tmpMppdbPath" value="/topsoft/huawei/tmp" /> <!-- 数据库工具目录--> <PARAM name="gaussdbToolPath" value="/topsoft/huawei/install/om" /> <!-- 数据库core文件目录--> <PARAM name="corePath" value="/topsoft/huawei/corefile" /> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="192.168.3.175"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- 节点1上的部署信息 --> <DEVICE sn="opendb01"> <!-- 节点1的主机名称 --> <PARAM name="name" value="opendb01"/> <!-- 节点1所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.3.175"/> <PARAM name="sshIp1" value="192.168.3.175"/> <!--dbnode--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="5432"/> <PARAM name="dataNode1" value="/topsoft/huawei/install/data/dn"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> </DEVICELIST> </ROOT>
可通过以下全局替换
vi /topsoft/soft/openGauss/cluster_config.xml :%s#node1_hostname#opendb01#g #主机名 :%s#/opt/huawei/install/app#/topsoft/huawei/install/app#g #安装目录 :%s#/opt/huawei/install/app#/topsoft/huawei/install/app#g #安装目录 :%s#/var/log/omm#/topsoft/huawei/log/omm#g #日志目录 :%s#/opt/huawei/tmp#/topsoft/huawei/tmp#g #临时文件目录 :%s#/opt/huawei/install/om#/topsoft/huawei/install/om#g #数据库工具目录 :%s#/opt/huawei/corefile#/topsoft/huawei/corefile#g #数据库core文件目录 :%s#192.168.0.1#192.168.40.106#g #IP地址 :%s#/opt/huawei/install/data/dn#/topsoft/huawei/install/data/dn#g #数据节点目录 /opt/huawei/install/data/dn
解压安装包
对于个人开发者或非企业级环境,下载极简安装包(不安装OM等组件)即可。本文档采用的是企业版安装,因此安装OM等组件
注意:安装包“openGauss-All-6.0.0-openEuler22.03-x86_64.tar.gz”和配置文件“cluster_config.xml”需在同一目录中,本文档是/topsoft/soft/openGauss目录。
--进入安装包所在目录 [root@opendb01 ~]# cd /topsoft/soft/openGauss/ [root@opendb01 openGauss]# ls -l total 151172 -rw-r--r--. 1 root root 1882 Oct 15 09:43 cluster_config.xml -rw-r--r--. 1 root root 154793862 Oct 15 09:40 openGauss-All-6.0.0-openEuler22.03-x86_64.tar.gz --解压openGauss-All-6.0.0-openEuler22.03-x86_64.tar.gz安装包 tar -xvf openGauss-All-6.0.0-openEuler22.03-x86_64.tar tar -xvf openGauss-OM-6.0.0-openEuler22.03-x86_64.tar.gz
- 在执行前置脚本gs_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。
- 运行前置脚本gs_preinstall准备安装环境时,脚本内部会自动将openGauss配置文件、解压后的安装包同步拷贝到其余服务器的相同目录下。
- 在执行前置脚本或者互信前,请检查/etc/profile文件中是否包含错误输出信息,如果存在错误输出,需手动处理。
使用gs_preinstall初始化安装环境
安装环境的初始化包含上传安装包和XML文件(二者需在同一目录)、解压安装包、使用gs_preinstall准备好安装环境。
创建完openGauss配置文件后,在执行安装前,为了后续能以最小权限进行安装及openGauss管理操作,保证系统安全性,需要运行安装前置脚本gs_preinstall准备好安装用户及环境。在执行前置脚本gs_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。
安装前置脚本gs_preinstall可以协助用户自动完成如下的安装环境准备工作:
- 自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。openGauss所设置的Linux内核参数取值请参见配置操作系统参数。
- 脚本内部会自动将openGauss配置文件、安装包拷贝到openGauss主机的相同目录下。
- openGauss安装用户、用户组不存在时,自动创建安装用户以及用户组。
- 读取openGauss配置文件中的目录信息并创建,将目录权限授予安装用户。
- 只能使用root用户执行gs_preinstall命令
- 在执行前置脚本或者互信前,请检查/etc/profile文件中是否包含错误输出信息,如果存在错误输出,需手动处理。
[root@opendb01 /]# cd /topsoft/soft/openGauss/script/ ./gs_preinstall -U omm -G dbgrp -X /topsoft/soft/openGauss/cluster_config.xml
这里设置:omm用户密码omm
预安装脚本执行的详细过程如下:
[root@opendb01 script]# ./gs_preinstall -U omm -G dbgrp -X /topsoft/soft/openGauss/cluster_config.xml Parsing the configuration file. Successfully parsed the configuration file. Installing the tools on the local node. Successfully installed the tools on the local node. Setting host ip env Successfully set host ip env. Are you sure you want to create the user[omm] (yes/no)? yes Preparing SSH service. Successfully prepared SSH service. Checking OS software. Successfully check OS software. Checking OS version. Successfully checked OS version. Checking cpu instructions. Successfully checked cpu instructions. Creating cluster's path. Successfully created cluster's path. Set and check OS parameter. Setting OS parameters. Successfully set OS parameters. Warning: Installation environment contains some warning messages. Please get more details by "/topsoft/soft/openGauss/script/gs_checkos -i A -h opendb01 -X /topsoft/soft/openGauss/cluster_config.xml --detail". Set and check OS parameter completed. Preparing CRON service. Successfully prepared CRON service. Setting user environmental variables. Successfully set user environmental variables. Setting the dynamic link library. Successfully set the dynamic link library. Setting Core file Successfully set core path. Setting pssh path Successfully set pssh path. Setting Cgroup. Successfully set Cgroup. Set ARM Optimization. No need to set ARM Optimization. Fixing server package owner. Setting finish flag. Successfully set finish flag. Preinstallation succeeded.
警告可忽略
执行安装
使用gs_install安装openGauss。安装脚本gs_install必须以前置脚本中指定的omm执行,否则,脚本执行会报错。
/topsoft/soft/openGauss/cluster_config.xml为openGauss配置文件的路径。在执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码。这里设置为Topnet@123
设置的密码要符合复杂度要求:
- 最少包含8个字符,最多包含16个字符。
- 不能和用户名、当前密码(ALTER)、或当前密码反序相同。
- 至少包含大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。
注意事项:
- openGauss支持字符集的多种写法:gbk/GBK、UTF-8/UTF8/utf8/utf-8和Latine1/latine1。
- openGauss5.0安装时若不指定字符集,默认字符集为SQL_ASCII,为简化和统一区域loacle默认设置为C,若想指定其他字符集和区域,请在安装时使用参数–gsinit-parameter="–locale=LOCALE"来指定,LOCALE为新数据库设置缺省的区域。但是openGauss6.0已经将默认字符集更改为了UTF8
- 默认端口5432
--赋予配置文件777的权限,因为安装脚本gs_install必须以前置脚本中指定的omm执行 chmod 777 /topsoft/soft/openGauss/cluster_config.xml chmod 777 /topsoft/soft --切换用户 omm为前置脚本gs_preinstall中-U参数指定的用户 su - omm --查看配置文件/etc/profile中的语言参数 [omm@opendb01 dn_6001]$ cat /etc/profile | grep LANG export LANG=en_US.UTF-8 --查看系统支持UTF-8编码的区域 locale -a|grep utf8 --执行安装脚本 gs_install -X /topsoft/soft/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"
安装过程中会生成ssl证书,证书存放路径为{gaussdbAppPath}/share/sslcert/om,其中{gaussdbAppPath}为openGauss配置文件中指定的程序安装目录。
[omm@opendb01 om]$ cd /topsoft/huawei/install/app/share/sslcert/om [omm@opendb01 om]$ ls -l total 64 -rw-------. 1 omm dbgrp 4399 Oct 15 10:52 cacert.pem -rw-------. 1 omm dbgrp 4402 Oct 15 10:52 client.crt -rw-------. 1 omm dbgrp 1766 Oct 15 10:52 client.key -rw-------. 1 omm dbgrp 56 Oct 15 10:52 client.key.cipher -rw-------. 1 omm dbgrp 1217 Oct 15 10:52 client.key.pk8 -rw-------. 1 omm dbgrp 24 Oct 15 10:52 client.key.rand -rw-------. 1 omm dbgrp 10921 Oct 15 10:52 openssl.cnf -rw-------. 1 omm dbgrp 4402 Oct 15 10:52 server.crt -rw-------. 1 omm dbgrp 1766 Oct 15 10:52 server.key -rw-------. 1 omm dbgrp 56 Oct 15 10:52 server.key.cipher -rw-------. 1 omm dbgrp 24 Oct 15 10:52 server.key.rand
日志文件路径下会生成两个日志文件:“gs_install-YYYY-MMDD_HHMMSS.log”和“gs_local-YYYY-MM-DD_HHMMSS.log”。
/topsoft/huawei/log/omm/omm/om/gs_install-2024-10-15_105058.log
详细过程如下:
[omm@opendb01 script]$ gs_install -X /topsoft/soft/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8" Parsing the configuration file. Successfully checked gs_uninstall on every node. Check preinstall on every node. Successfully checked preinstall on every node. Creating the backup directory. Successfully created the backup directory. begin deploy.. Installing the cluster. begin prepare Install Cluster.. Checking the installation environment on all nodes. begin install Cluster.. Installing applications on all nodes. Successfully installed APP. begin init Instance.. encrypt cipher and rand files for database. Please enter password for database: Please repeat for database: begin to create CA cert files The sslcert will be generated in /topsoft/huawei/install/app/share/sslcert/om NO cm_server instance, no need to create CA for CM. Non-dss_ssl_enable, no need to create CA for DSS Cluster installation is completed. Configuring. Deleting instances from all nodes. Successfully deleted instances from all nodes. Checking node configuration on all nodes. Initializing instances on all nodes. Updating instance configuration on all nodes. Check consistence of memCheck and coresCheck on database nodes. Configuring pg_hba on all nodes. Configuration is completed. The cluster status is Normal. Successfully started cluster. Successfully installed application. end deploy..
访问数据库
连接数据库的客户端工具包括gsql、应用程序接口(如JDBC)。
- gsql是openGauss自带的客户端工具。使用gsql连接数据库,可以交互式地输入、编辑、执行SQL语句。
- 用户可以使用标准的数据库应用程序接口(如JDBC),开发基于openGauss的应用程序。
--查看进程 [omm@opendb01 ~]$ ps -ef | grep gaussdb omm 18668 1 6 10:52 ? 00:00:09 /topsoft/huawei/install/app/bin/gaussdb -D /topsoft/huawei/install/data/dn 或 [omm@opendb01 om]$ gs_ctl query -D /topsoft/huawei/install/data/dn [2024-10-15 10:55:41.885][20437][][gs_ctl]: gs_ctl query ,datadir is /topsoft/huawei/install/data/dn HA state: local_role : Normal static_connections : 0 db_state : Normal detail_information : Normal Senders info: No information Receiver info: No information
gsql是openGauss提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何使用gsql连接数据库,关于gsql使用方法的更多信息请参考《工具与命令参考》中“客户端工具 > gsql”章节。
缺省情况下,客户端连接数据库后处于空闲状态时会根据参数session_timeout的默认值自动断开连接。如果要关闭超时设置,设置参数session_timeout为0即可。默认为0表示关闭超时设置
以操作系统用户omm登录数据库主节点。
su - omm 法一: gsql -d postgres -p 5432 参数说明: -d 连接的数据库名称, -p 数据库主节点的端口号 法二: gsql -d "host=127.0.0.1 port=5432 dbname=postgres user=omm password=Topnet@123" --登录后如下: [omm@opendb01 om]$ gsql -d postgres -p 5432 gsql ((openGauss 6.0.0 build aee4abd5) compiled at 2024-09-29 19:14:27 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=# \l+ List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description -----------+-------+----------+------------+------------+-------------------+-------+------------+-------------------------------------------- postgres | omm | UTF8 | en_US.utf8 | en_US.utf8 | | 13 MB | pg_default | default administrative connection database template0 | omm | UTF8 | en_US.utf8 | en_US.utf8 | =c/omm +| 13 MB | pg_default | default template for new databases | | | | | omm=CTc/omm | | | template1 | omm | UTF8 | en_US.utf8 | en_US.utf8 | =c/omm +| 13 MB | pg_default | unmodifiable empty database | | | | | omm=CTc/omm | | | (3 rows) --创建数据库 不能是en_US.utf8不然报错 openGauss=# create database test with encoding 'utf8' template = template0; CREATE DATABASE --查看数据库状态 [omm@opendb01 om]$ gs_om -t status ----------------------------------------------------------------------- cluster_name : dbCluster cluster_state : Normal #“Normal”表示数据库可正常使用 redistributing : No
创建业务用户
openGauss不支持通过初始用户进行远程连接的原因如下:
- openGauss包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。postgres默认的兼容数据库类型为O(即DBCOMPATIBILITY = A ),该兼容类型下将空字符串作为NULL处理。
- CREATE DATABASE实际上通过拷贝模板数据库来创建新数据库。默认情况下,拷贝template0。请避免使用客户端或其他手段连接及操作两个模板数据库。
- 模板数据库中没有用户表,可通过系统表PG_DATABASE查看模板数据库属性。
- 模板template0不允许用户连接;模板template1只允许数据库初始用户和系统管理员连接,普通用户无法连接。
由于openGauss不支持通过初始用户进行远程连接,使用客户端工具通过omm用户访问数据库提示FATAL: Forbid remote connection with initial user,因此需创建1个业务用户用于访问数据库:
--登录数据库 su - omm gsql -d postgres -p 5432 --创建业务用户 create user dxjnew password "Topnet@123"; grant usage on schema public to dxjnew; grant all privileges to dxjnew; 或 --创建业务用户(超管角色) CREATE USER dxjnew WITH SYSADMIN password "Topnet@123";
数据库配置
配置omm用户环境变量
su - omm vi .bash_profile alias gsql='rlwrap gsql' --生效 source .bash_profile
查数据库版本
--法一 安装目录下查看 cat /topsoft/huawei/install/app/version.cfg --法二 openGauss=# select version(); version ------------------------------------------------------------------------------------------------------------------------------------------------------- (openGauss 6.0.0 build aee4abd5) compiled at 2024-09-29 18:38:08 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 10.3.0, 64-bit (1 row)
配置远程访问数据库
--更改配置文件 vi /topsoft/huawei/install/data/dn/postgresql.conf 更改前 listen_addresses = 'localhost' wal_level = hot_standby # minimal, archive, hot_standby or logical 更改后 listen_addresses = '*,192.168.40.106' wal_level = logical # minimal, archive, hot_standby or logical vi /topsoft/huawei/install/data/dn/pg_hba.conf 添加 host all all 0.0.0.0/0 md5 --重启库 gs_om -t stop gs_om -t start
密码参数
password_encryption_type
参数说明:该参数决定采用何种加密方式对用户密码进行加密存储。修改此参数的配置不会自动触发已有用户密码加密方式的修改,只会对新创建用户的密码或已有用户修改的密码采用新的加密方式进行加密。
参数类型:枚举型
参数单位:无
取值范围:0、1、2、3
0:表示采用md5方式对密码加密。
1:表示采用sha256和md5两种方式分别对密码加密。
2:表示采用sha256方式对密码加密。
3:表示采用sm3方式对密码加密。
NOTICE:MD5加密算法安全性低,存在安全风险,不建议使用。
默认值:2
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载。
设置建议:设置为默认值。不需要重启库,需要加载下库reload
--密码策略 show password_encryption_type --更改pg_hba.conf [root@topnet31 ~]# cd /opt/huawei/openGauss/install/data/dn [root@topnet31 dn]# vi postgresql.conf 更改前 #password_encryption_type = 2 #Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only 更改后 password_encryption_type = 1 #Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only
重启数据库服务
--停止 cd /opt/huawei/openGauss/install/om/script/ gs_om -t stop --启动 cd /opt/huawei/openGauss/install/om/script/ gs_om -t start
查询openGauss状态
gs_om -t status --detail --查询某主机上的实例状态,请在命令中增加“-h”项 主机名 gs_om -t status -h plat2
查看数据库兼容模式
openGauss支持A、B、C和PG四种兼容模式,分别表示兼容Oracle、MySQL、Teradata(TD)和PostgreSQL。但是C目前已经放弃支持。因此常用的取值是A、B、PG,不同兼容模式下的语法行为存在一定差异,默认为A兼容模式。
openGauss=# show sql_compatibility; sql_compatibility ------------------- A (1 row)
查看默认字符集
openGauss=# show server_encoding; server_encoding ----------------- UTF8 (1 row)