首页 > 数据库 > 国内数据库 > openGauss开发快速入门(上)

表1 安装流程图说明
|
流程 |
说明 |
|
安装前准备 |
openGauss安装前需要准备相应的软硬件环境以及相关操作系统配置。“2.1.2准备软硬件安装环境”章节提供了openGauss安装所需的最低要求,实际安装中,请用户根据实际情况进行规划 |
|
获取安装包 |
安装包需要在openGauss开源社区下载并且对安装包内容进行检查 |
|
配置XML文件 |
安装openGauss前需要创建XML文件。XML文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss如何部署。用户需根据不同场配置对应的XML文件 |
|
初始化安装环境 |
安装环境的初始化包含上传安装包和XML文件、解压安装包、使用gs_preinstall准备好安装环境 |
|
执行安装 |
使用gs_install安装openGauss |
(二) 准备软硬件安装环境
表2列出了openGauss服务器应具备的最低硬件要求。在实际产品中,硬件配置的规划需要考虑数据规模及所期望的数据库响应速度。请根据实际情况进行规划。
表2 硬件环境要求
|
项目 |
配置描述 |
|
内存 |
功能调试建议32GB以上 性能测试和商业部署时,单实例部署建议128GB以上 复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发 |
|
CPU |
功能调试最小需要1×8 核2.0GHz 性能测试和商业部署时,单实例部署建议1×16核 2.0GHz CPU(central processing pnit,中央处理单元)超线程和非超线程两种模式都支持。但openGauss各节点的设置需保持一致 注意:目前,openGauss仅支持鲲鹏服务器和基于x86_64通用PC服务器的CPU |
|
硬盘 |
用于安装openGauss的硬盘需最少满足如下要求。 Ÿ 至少1GB用于安装openGauss的应用程序包 Ÿ 每个主机需大约300MB用于数据存储 Ÿ 预留70%以上的磁盘剩余空间用于数据存储 Ÿ 建议系统盘配置为RAID1,数据盘配置为RAID5,且规划4组RAID5数据盘用于安装openGauss。有关RAID(redundant array of independent disks,独立磁盘冗余数组。一种把多块独立的硬盘按不同方式组合起来形成一个硬盘组,从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。组成磁盘阵列的不同方式成为RAID级别(RAID levels)。经过不断的发展,现在已拥有了从 RAID 0 到 6 七种基本的RAID级别)的配置方法请参考硬件厂家的手册或互联网上的方法进行配置,其中“Disk Cache Policy”项需要设置为“Disabled”,否则机器异常掉电后有数据丢失的风险 openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS(serial attached SCSI,串行连接的SCSI。一种SCSI 接口标准)接口和NVMe(non-volatile memory express,非易失性高速传输总线。一种主机控制器接口协议。)协议的SSD盘,以RAID的方式部署使用 |
|
网络要求 |
300兆以上以太网 建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法请参考硬件厂商的手册或互联网上的方法进行配置 openGauss网络如果配置bond,请保证bond模式一致,不一致的bond配置可能导致openGauss工作异常 |
软件环境要求如表3所示。
|
软件类型 |
配置描述 |
|
Linux操作系统 |
Ÿ ARM: openEuler 20.3LTS(推荐采用此操作系统) 麒麟V10 Ÿ x86: openEuler 20.3LTS CentOS 7.6 注意:建议使用英文操作系统,当前安装包只能在英文操作系统上安装使用 |
|
Linux文件系统 |
剩余inode个数 > 15亿(推荐) |
|
工具 |
bzip2 |
|
python |
Ÿ openEuler:支持python 3.7.X Ÿ CentOS:支持python 3.6.X Ÿ 麒麟:支持python 3.7.X 注意:python需要通过--enable-shared方式编译 |
3. 软件依赖要求
|
所需软件 |
建议版本 |
|
libaio-devel |
建议版本:0.3.109-13 |
|
flex |
要求版本:2.5.31 以上 |
|
bison |
建议版本:2.7-4 |
|
ncurses-devel |
建议版本:5.9-13.20130511 |
|
glibc-devel |
建议版本:2.17-111 |
|
patch |
建议版本:2.7.1-10 |
|
lsb_release |
建议版本:4.1 |
|
readline-devel |
建议版本:7.0-13 |
|
libnsl(openeuler+x86环境中) |
建议版本 :2.28-36 |
(三) 修改操作系统配置
openGauss目前仅支持在防火墙关闭的状态下进行安装。下面以openEuler操作系统为例执行关闭操作系统防火墙操作:
① 使用vim命令打开config文件。
vim etc/selinux/config
② 修改“SELINUX”字段的值为“disabled”。
SELINUX=disabled
(2) 重新启动操作系统。
reboot
(3) 检查防火墙是否关闭。
systemctl status firewalld
若防火墙未关闭,请执行步骤(4); 若防火墙已关闭,则无须再关闭防火墙。
systemctl disable firewalld .service
systemctl stop firewalld .service
将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加"export"(XXX为Unicode编码)。
vim etc/profile
在各数据库节点上,确保时区和时间一致。
ll etc/localtime ##查看时区
date ##查看时间
(2) 使用如下命令将各数据库节点“/usr/share/zoneinfo/”目录下的时区文件拷贝为“/etc/localtime”文件。
cp usr/share/zoneinfo/$地区/$时区 etc/localtime
“ $地区/$时区”为需要设置时区的信息,例如: Asia/Shanghai。
date -s Mon May 11 16 :42 :11 CST 2020
在各数据库节点上,使用“swapoff -a”命令将交换内存关闭。
swapoff -a
5. 关闭RemoveIPC
在各数据库节点上,关闭RemoveIPC。CentOS操作系统无该参数,可以跳过该步骤。
① 使用vim打开logind.conf文件。
vim etc/systemd/logind.conf
② 修改“RemoveIPC”字段的值为“no”。
RemoveIPC= no
(2)修改“/usr/lib/systemd/system/systemd-logind.service”文件中的“RemoveIPC” 字段的值为“no”。
① 使用vim命令打开systemd-logind.service文件。
vim usr/lib/systemd/system/systemd-logind.service
② 修改“RemoveIPC”字段的值为“no”。
RemoveIPC= no
systemctl daemon-reload
systemctl restart systemd-logind
(4) 检查修改是否生效。
loginctl show- session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC
将各数据库节点的网卡MTU值设置为相同大小。
ifconfig

ifconfig 网卡编号 mtu 值
(四) 设置root用户远程登录
① 打开sshd_config文件。
vim etc/ssh/sshd_config
#PermitRootLogin no
或者将“PermitRootLogin”字段的值改为“yes”。
PermitRootLogin yes
③ 执行:wq保存并退出编辑页面。
① 编辑sshd_config文件。
vim etc/ssh/sshd_config
② 修改Banner配置,注释掉“Banner”所在的行。
#Banner XXXX
systemctl restart sshd .service
( 4) 以root用户身份重新登录。
ssh xxx .xxx .xxx .xxx
xxx.xxx.xxx.xxx为安装openGauss环境的IP。
openGauss开源社区上提供了安装包的获取方式。

|图3 开源网站openGauss Server页面|
tar -zxvf openGauss-x .x .x-openEuler-64bit .tar -all .gz
(4) 检查安装包。 检查安装目录及文件是否齐全。 在安装包所在目录执行以下命令:
ls - 1
ls命令显示类似如下信息。
total 50 M
-rw------- 1 root root 65 Dec 25 15 :34 openGauss-x .x .x-openEuler-64bit-om .sha256
-rw------- 1 root root 12910775 Dec 25 15 :34 openGauss-x .x .x-openEuler-64bit-om .tar .gz
-rw------- 1 root root 65 Dec 25 15 :34 openGauss-x .x .x-openEuler-64bit .sha256
-rw------- 1 root root 73334256 Dec 25 15 :34 openGauss-x .x .x-openEuler-64bit .tar .bz2
-rw------- 1 root root 65 Dec 25 15 :34 upgrade_sql .sha256-rw------- 1 root root 134747 Dec 25 15 :34 upgrade_sql .tar .gz
下面以一主一备的方案为例,说明如何创建XML配置文件。
“script/gspylib/etc/conf/cluster_config_template.xml”获取模板。数据库名称和各项目录的配置项如下,加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。
<?xml version="1.0" encoding="UTF-8"?>
< ROOT> <!-- 整体信息 -->
< CLUSTER>
<!-- 数据库名称 -->
< PARAM name= "clusterName" value= "Cluster_template" >
<!-- 数据库节点名称(hostname) -->
< PARAM name= "nodeNames" value= "node1_hostname,node2_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,与nodeNames一一对应 -->
< PARAM name= "backIp1s" value= "192.168.0.1,192.168.0.2"/>
</ CLUSTER>
表5 参数说明
|
实例类型 |
参数 |
说明 |
|
整体信息 |
clusterName |
openGauss名称 |
|
nodeNames |
openGauss中主机名称 通过hostname命令可以获取数据库节点的主机名称 |
|
|
backIp1s |
主机在后端存储网络中的IP地址(内网IP)。所有openGauss主机使用后端存储网络通信 |
|
|
gaussdbAppPath |
openGauss程序安装目录。此目录应满足如下要求。 Ÿ 磁盘空间>1GB Ÿ 与数据库所需其他路径相互独立,没有包含关系 |
|
|
gaussdbLogPath |
openGauss运行日志和操作日志存储目录。此目录应满足如下要求。 Ÿ 磁盘空间建议根据主机上的数据库节点数规划。数据库节点预留1GB空间的基础上,再适当预留冗余空间 Ÿ 与openGauss所需其他路径相互独立,没有包含关系 Ÿ 此路径可选。不指定的情况下,openGauss安装时会默认指定“$GAUSSLOG/安装用户名”作为日志目录 |
|
|
tmpMppdbPath |
数据库临时文件存放目录 若不配置tmpMppdbPath,默认存放在/opt/huawei/wisequery/安装用户名_mppdb目录下,其中"opt/huawei/wisequery"是默认指定的数据库系统工具目录 |
|
|
gaussdbToolPath |
openGauss系统工具目录,主要用于存放互信工具等。此目录应满足如下要求。 Ÿ 磁盘空间>100MB Ÿ 固定目录,与数据库所需其他目录相互独立,没有包含关系 Ÿ 此目录可选。不指定的情况下,openGauss安装时会默认指定“/opt/huawei/wisequery”作为数据库系统工具目录 |
|
|
corePath |
openGauss core文件的指定目录 |
|
配置数据库名称及各项目录时请注意如下事项。
每台Host服务器都必须有如下基本信息,加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。
<!-- 每台服务器上的节点部署信息 -->
< DEVICELIST>
<!-- node1上的节点部署信息 -->
< DEVICE sn= "node1_hostname">
<!-- node1的hostname -->
< PARAM name= "name" value= "node1_hostname"/>
<!-- node1所在的AZ(availability zone,可用区)及AZ优先级 -->
< PARAM name= "azName" value= "AZ1"/>
< PARAM name= "azPriority" value= "1"/>
<!-- node1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
< PARAM name= "backIp1" value= "192.168.0.1"/>
< PARAM name= "sshIp1" value= "192.168.0.1"/>
配置文件中的参数说明请参见表6。
|
实例类型 |
参数 |
说明 |
|
整体信息 |
name |
主机名称 |
|
azName |
指定azName(available zone name),字符串(不能含有特殊字符),例如AZ1、AZ2、AZ3 |
|
|
azPriority |
指定azPriority的优先级。优先级与azName无关 |
|
|
backIp1 |
主机在后端存储网络中的IP地址(内网IP)。所有openGauss主机使用后端存储网络通信 |
|
|
sshIp1 |
设置SSH可信通道IP地址(外网IP)。若无外网,则可以不设置该选项或者同backIp1设置相同IP |
|
<PARAM name= "backIp1" value= "192.168.0.1"/>
<PARAM name= "backIp2" value= "192.168.0.2"/>
数据库主节点需要配置以下信息,加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。
<!--DBnode-->
< PARAM name= "dataNum" value= "1"/>
<!--DBnode端口号-->
< PARAM name= "dataPortBase" value= "15400"/>
<!--DBnode主节点上数据目录,及备机数据目录-->
< PARAM name= "dataNode1" value= "/opt/huawei/install/data/dn,node2_hostname,/opt/huawei/install/data/dn"/>
<!--DBnode节点上设定同步模式的节点数-->
< PARAM name= "dataNode1_syncNum" value= "0"/>
代码中的参数说明请参见表7。
表7 参数说明
|
实例类型 |
参数 |
说明 |
|
DBnode |
dataNum |
当前主机上需要部署的数据库节点个数 |
|
dataPortBase |
数据库节点的基础端口号,默认值40000 |
|
|
dataNode1 |
用于指定当前主机上的数据库节点的数据存储目录。此目录为数据库的数据存储目录,应规划到数据盘上 |
|
|
dataNode1_syncNum |
可选参数,用于指定当前集群中同步模式的节点数目。取值范围为0~数据库备机节点数 |
|
完整的一主一备XML配置文件请参见如下示例,可以直接拷贝使用,加粗字体内容为示例,可自行替换。
<?xml version="1.0" encoding="UTF-8"?>
< ROOT>
<!-- openGauss整体信息 -->
< CLUSTER>
< PARAM name= "clusterName" value= "Cluster_template" >
< PARAM name= "nodeNames" value= "node1_hostname,node2_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" />
< PARAM name= "corePath" value= "/opt/huawei/corefile"/>
< PARAM name= "backIp1s" value= "192.168.0.1,192.168.0.2"/>
</ CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
< DEVICELIST>
<!-- node1上的节点部署信息 -->
< DEVICE sn= "node1_hostname">
< PARAM name= "name" value= "node1_hostname"/>
< PARAM name= "azName" value= "AZ1"/>
< PARAM name= "azPriority" value= "1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
< PARAM name= "backIp1" value= "192.168.0.1"/>
< PARAM name= "sshIp1" value= "192.168.0.1"/>
<!--dn-->
< PARAM name= "dataNum" value= "1"/>
< PARAM name= "dataPortBase" value= "15400"/>
< PARAM name= "dataNode1" value= "/opt/huawei/install/data/dn,node2_hostname,/opt/huawei/install/data/dn"/>
< PARAM name= "dataNode1_syncNum" value= "0"/>
</ DEVICE>
<!-- node2上的节点部署信息,其中“name”的值配置为主机名称 -->
< DEVICE sn= "node2_hostname">
< PARAM name= "name" value= "node2_hostname"/>
< PARAM name= "azName" value= "AZ1"/>
< PARAM name= "azPriority" value= "1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
< PARAM name= "backIp1" value= "192.168.0.2"/>
< PARAM name= "sshIp1" value= "192.168.0.2"/>
</ DEVICE>
</ DEVICELIST>
</ ROOT>
(七) 初始化安装环境
在执行openGauss安装前,为了后续能以最小权限进行安装以及openGauss管理操作,保证系统安全性,需要执行安装前置脚本gs_preinstall准备安装用户及环境。
安装前置脚本gs_preinstall可以协助用户自动完成如下的安装环境准备工作。
mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
cd /opt/software/openGauss
tar -zxvf openGauss-x.x.x-openEuler-64bit.tar-all.gz
(4) 进入工具脚本存放目录下。
cd /opt/software/openGauss/script
vi /etc/profile.d/performance.sh
用#注释如下命令,然后键入“ESC”键进入指令模式,执行:wq保存并退出修改。
sysctl -w vm.min_free_kbytes= 112640 &> /dev/ null
(6)为确保成功安装,执行如下命令检查hostname文件内容与/etc/hostname文件中的主机名是否一致。
hostname
cat /etc/hostname
vi /etc/hostname
然后键入“ESC”键进入指令模式,执行:wq保存并退出修改。
./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
openGauss在安装过程中,需要在openGauss中的主机间执行命令,传送文件等操作。因此,在普通用户安装前需要确保互信是连通的。前置脚本中会先建立root用户间的互信,然后创建普通用户,并建立普通用户间的互信。
准备好openGauss安装环境之后,执行安装部署openGauss。
su - omm
gs_install -X /opt/software/openGauss/cluster_config.xml
其中“/opt/software/openGauss/cluster_config.xml”为openGauss配置文件的路径。
在执行过程中用户需要根据提示输入数据库的密码,密码具有一定的复杂度。
为保证用户正常使用该数据库,请记住输入的数据库密码。
数据库的密码需要符合这些要求:最少包含8个字符;不能和用户名和当前密码(ALTER)相同,或和当前密码反序;至少包含大写字母(A-Z),小写字母(a-z),数字,非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。
安装过程中会生成ssl证书,证书存放路径为“{gaussdbAppPath}/share/sslcert/om”,其中“{gaussdbAppPath}”为集群openGauss配置文件中指定的程序安装目录。
日志文件路径(安装openGauss时在XML文件中指定)下会生成两个日志文件:“gs_install-YYYY-MM-DD_HHMMSS.log”和“gs_local-YYYY-MM-DD_HHMMSS.log”。
openGauss支持字符集的多种写法:gbk/GBK、UTF-8/UTF8/uft8/utf-8和Latine1/latine1。安装时如果不指定字符集,默认字符集为SQL_ASCII,为简化和统一区域locale默认设置为C。如果想指定其他字符集和区域,请在安装时使用参数--gsinit-parameter="--locale=LOCALE"来指定,LOCALE为新数据库设置缺省的区域。例如用户要将数据库编码格式初始化为UTF-8,可以采用如下步骤。
omm@linux :~> locale -a |grep utf8
显示类似如下信息,其中en_US.utf8表示区域en_US支持UTF-8编码。
......
en_SG .utf8
en_US .utf8
......
(
2)根据需要选择区域,如“en_US.utf8”,在初始化数据库时加入“--locale=en_US.utf8”选项进行安装。
示例如下。
gs_install -X /opt/software/openGauss/cluster_config.xml --gsinit-parameter= "--locale=en_US.utf8"
通过openGauss提供的gs_om工具可以完成数据库状态检查。
openGauss数据库已安装。
gs_om -t status
数据库安装完成后,默认生成名称为postgres的数据库。
第一次连接数据库时可以连接到此数据库。
其中postgres为需要连接的数据库名称,26000为数据库主节点的端口号,即XML配置文件中的dataPortBase的值。请根据实际情况替换。
gsql -d postgres -p 26000
连接成功后,系统显示类似如下信息表示数据库连接成功。
gsql ((openGauss x.x.x build 290d125f) compiled at 2021-03-08 02:59:43 commit 2143 last mr 131
Non-SSL connection (SSL connection is recommended when requiring high- security)
Type "help" for help.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70023856/viewspace-2946849/ ,如需转载,请注明出处,否则将追究法律责任。