前言
本来上次装了 OpenEuler 22.03 LTS 之后就直接装 OpenGauss 的,毕竟都自带了。但回过头来想想,那个是个单机部署的轻量版,如果后期我想折腾一下主备部署,估计不是特别容易,总还是要了解一下正常的部署流程。然后,我就兴致勃勃地下载了 OpenGauss 3.0.0..... 结果,安装报错,重装系统再安装,还报错,调整环境,修改配置,各种安装依赖,依然报错,实在是折腾不下去了,只能按 OpenGauss 官网的要求,重装装了一个 OpenEuler 20.03,结果就顺利安装成功了 ..... 装成功了 ...... 成功了 ...... 功了 ...... 了 ......
果然,对于新版系统来说,虽然提倡勇于尝试,但自己还没有那个能力驾驭的时候,还是不要轻易尝试的好 ...... 以下是结合 OpenGauss 官网和各种搜罗验证过的安装过程整理而来的笔记,以避免自己未来再次踩坑。
部署环境
物理机
| 信息 | 说明 |
|---|---|
| 操作系统 | Microsoft Windows 10 专业工作站 10.0.19042 64位 |
| CPU | Inter(R) Core(TM) i5-10210U |
| 内存 | 16 GB |
| 虚拟机 | Oracle VM VirtualBox 6.1.34 |
| 远程 SSH 工具 | FinalShell 3.9.5.7 |
虚拟机
| 信息 | 说明 |
|---|---|
| 操作系统 | OpenEuler 20.03 LTS SP3 x86_x64 |
| CPU | 1 核 |
| 内存 | 2 GB |
| 硬盘 | 20 GB |
| Python 2 版本 | 2.7.18 |
| Python 3 版本 | 3.7.9 |
安装过程
Step 1 安装必要依赖
| 所需软件 | 建议版本 | 备注 |
|---|---|---|
| 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 | 官方要求 |
| redhat-lsb-core | 建议版本:4.1 | 官方要求,但 OpenEuler 20.03 x86_x64 里 yum 装不了,需要另外下载 |
| readline-devel | 建议版本:7.0-13 | 官方要求 |
| libnsl(openEuler+x86环境中) | 建议版本 :2.28-36 | 官方要求 |
| expect | - | 官方没要求,但没有就装不下去 |
redhat-lsb-core 安装包传送门:RPM resource redhat-lsb-core(x86-64)
redhat-lsb-submod-security(redhat-lsb-core 的依赖) 安装包传送门:RPM resource redhat-lsb-submod-security(x86-64)
官方要求是检查一遍,然后再安装,但我个人感觉可以不管三七二十一,就直接安装,反正如果系统里有的又不会重新安装了,创建一个 sh 文件,直接批处理这些命令。
yum install -y libaio-devel
yum install -y flex
yum install -y bison
yum install -y ncurses-devel
yum install -y glibc-devel
yum install -y patch
yum install -y readline-devel
yum install -y libnsl
yum install -y expect
# 安装 redhat-lsb-core-4.1-57.fc37.x86_64
yum install -y mailx
yum install -y lp
yum install -y lpr
yum install -y sendmail
wget https://rpmfind.net/linux/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/r/redhat-lsb-submod-security-4.1-57.fc37.x86_64.rpm
rpm -ivh redhat-lsb-submod-security-4.1-57.fc37.x86_64.rpm
rm -f redhat-lsb-submod-security-4.1-57.fc37.x86_64.rpm
yum install -y spax
wget http://rpmfind.net/linux/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/r/redhat-lsb-core-4.1-57.fc37.x86_64.rpm
rpm -ivh redhat-lsb-core-4.1-57.fc37.x86_64.rpm
rm -f redhat-lsb-core-4.1-57.fc37.x86_64.rpm
Step 2 修改系统配置
# 修改防火墙设置
# 这一步 20.03 LTS SP3 默认为 disabled, 可以不用执行
# sed -i "s/#SELINUX=disabled/SELINUX=disabled/g" /etc/selinux/config
# 关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
# 设置字符集
echo "" >> /etc/profile
echo "export LANG=en_US.UTF-8" >> /etc/profile
source /etc/profile
# 修改时区
# 一般在安装系统时就已经设置好了
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 关闭 RemoveIPC, 20.03 LTS SP3 默认是关闭了的
sed -i "s/#RemoveIPC=no/RemoveIPC=no/g" /etc/systemd/logind.conf
systemctl daemon-reload
systemctl restart systemd-logind
# 设置 root 账户远程登录, 一般也是设置好的
sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" /etc/ssh/sshd_config
systemctl restart sshd.service
# 修改 performance
sed -i "s/sysctl -w vm.min_free_kbytes=112640/#sysctl -w vm.min_free_kbytes=112640/g" /etc/profile.d/performance.sh
# 将 libreadline.so.7 移动至 /usr/lib64
# 20.03 LTS SP3 里有这个毛病
ln -s /usr/lib64/libreadline.so.8 /usr/lib64/libreadline.so.7
# 重启系统
reboot
Step 3 设置配置文件
目前暂时还用不到主备部署,因此在虚拟机里先实现单机部署的需求,后期有需求了再做主备部署。 根据官方的部署说明,Yogurt 这里的单机部署配置如下,供大家参考:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAM name="clusterName" value="openGauss" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="输入服务器 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="输入当前服务器 IP 地址"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- 节点1上的部署信息 -->
<DEVICE sn="输入服务器 HostName">
<!-- 节点1的主机名称 -->
<PARAM name="name" value="输入服务器 HostName"/>
<!-- 节点1所在的AZ及AZ优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="输入当前服务器 IP 地址"/>
<PARAM name="sshIp1" value="输入当前服务器 IP 地址"/>
<!--dbnode-->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
</DEVICELIST>
</ROOT>
将改好的配置文件连同 OpenGauss 的安装包 openGauss-3.0.0-openEuler-64bit-all.tar.gz 一同传入虚拟机中,Yogurt 先暂存在了 /root 路径下。
Step 4 执行预安装
mkdir -p /opt/software/openGauss
mv /root/openGauss-3.0.0-openEuler-64bit-all.tar.gz /opt/software/openGauss
mv /root/cluster_config.xml /opt/software/openGauss
cd /opt/software/openGauss
tar -zxvf openGauss-3.0.0-openEuler-64bit-all.tar.gz
tar -zxvf openGauss-3.0.0-openEuler-64bit-om.tar.gz
chmod 755 -R /opt/software
cd /opt/software/openGauss/script
./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
中途会提示设置数据库密码,按提示输入,然后等待执行完成即可
Step 5 执行安装
切换账号至 omm,安装的步骤 root 账号不允许执行,只能由 omm 账号来执行
su omm
执行安装操作,中途会提示设置数据库密码,按提示输入,然后等待执行完成即可
gs_install -X /opt/software/openGauss/cluster_config.xml
Step 6 检查数据库状态
gs_om -t status --detail
只要返回的 cluster_state 为 Normal 都是正常的
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip port instance state
------------------------------------------------------------------------------------------------
1 Yogurtcry 10.0.2.20 15400 6001 /opt/huawei/install/data/dn P Primary Normal
执行登录数据库检验安装情况
gsql -d postgres -p 15400
如能正确连接,并显示下列信息,则说明 OpenGauss 数据库已经顺利安装并启动成功了
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:19 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=#
后记
说实话,这个操作就个人而言还是蛮麻烦的,前后操作了不下 20 次,失败了十数次。讲真,咱就说官方后面能不能出个一键安装的企业版,节约点时间 ......
以上的安装过程专门开了台刚部署好 OpenEuler 20.03 LTS SP3 的虚拟机从头到尾写成 sh 文件试了一下,是可以完完整整的自动部署完的,原本需要接近 40 分钟的部署操作,现在可以让其自动跑个 10 来分钟就可以了,打个王者就部署完了,呼呼呼,总算是不负辛劳。
PS:当前脚本仅在
OpenEuler 20.03 LTS SP3中完成自动部署测试,其他环境下的部署请具体情况具体分析,切勿盲从。如有幸能得小伙伴们得指点,将不甚荣幸。
部署的操作就到这里,后面就要开始学习 OpenGauss 数据库的操作了