本文分享自华为云社区《openGauss数据库在CentOS上的安装实践》,作者:Gauss 小松鼠 。
1.安装前准备
安装数据库前先要有已安装 centOS 7.6 的服务器+数据库安装包。
首先找小伙伴申请了华为云 ECS 服务器安装好了 OS,这里使用的是 x86_64+centos。
华为云服务器现在可是很划算呢,安装也很方便。
[root@pekphisprb70593 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
复制代码
通过软件包 | openGauss 登录 openGauss 开源社区,选择 3.0.0 版本对应平台企业版安装包。我用的 centos_x86_64,安装包下载到本地。文件名:openGauss-3.0.0-CentOS-64bit-all.tar.gz。
2. python3 准备
centos 自带的 python 是 python2,不符合官方文档要求。(实际也确实不能支撑 openGauss 安装,我已经试过了)
而且官方文档只写了要求有 python3,并没有详细的说明要怎么装,所以就对一些新手不太友好。
centos 要求 python 只能是 3.6.X,而不是及以上,也就是不能用 3.7。我这里用的 3.6.15。Python3 安装还依赖 zlib。所以无论在线还是离线安装都需要先把 zlib 相关安装完成。
如果服务器可以直接连到互联网 yum 源或者自己公司的 yum 源 ,就可以参考在线版安装。否则使用离线安装。
2.1 在线版安装
这里要求服务器可以直接连到互联网用 yum 或者 wget,或者配置了代理。
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
复制代码
完成后会提示“Complete!”
wget https://www.python.org/downloads/release/python-3615/复制
复制代码
因为下载很慢,也可以先去 python 官网 https://www.python.org/downloads/release/python-3615/下载一个新版本到本地再上传到服务器。
解压然后安装 python3.6。make 编译时间比较长,耐心等待,满屏的输出陪着你。
tar -zxvf Python-3.6.15.tgz
cd Python-3.6.15/
./configure --prefix=/usr/local/python3 --enable-shared
make
make install
复制代码
最后提示 Successfully 就说明安装成功了。
但是,注意此时还需要设置下 OS 上 python 的软连接。其中,/usr/local/python3/需要替换为你自己 python 安装包的实际路径,就是上面./configure 的路径。
如果是按照我的指导做的就不用改。
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
ln -s /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib64/
export LD_LIBRARY_PATH=/usr/local/python3/lib:$LD_LIBRARY_PATH
复制代码
到这里在 centos 上安装 python3.6 就完成了。
2.2 离线版安装
由于有时需要在公司内网安装,服务器直接下载不方便,什么 yum 、wget 统统不可用。只能去官网下载软件到 windows 然后上传 linux 后安装。
[root@pekphisprb70593 software]# rpm -qa|grep zlib
zlib-1.2.7-18.el7.x86_64
复制代码
所以我机器上自带了 1.2.7 版本,需要安装 1.2.7 版本的 zlib-devel。自己去搜一个对应版本的上传到服务器上。
rpm -ivh zlib-devel-1.2.7-18.el7.x86_64.rpm
复制代码
剩下的就是按照在线版中说的,将 python 安装包下载本地后上传,执行与在线版相同的安装和配置动作即可。
3. 修改操作系统配置
目前仅支持在防火墙关闭的状态下进行安装。
修改/etc/selinux/config 文件中的“SELINUX”值为“disabled”。使用 VIM 打开 config 文件。
查看“SELINUX”的值是否为“disabled”。是的话直接下一步。不是的话修改“SELINUX”的值“disabled”,执行:wq 保存并退出修改,然后 reboot 重启。
检查防火墙是否关闭。若防火墙状态显示为 inactive (dead),直接下一步。
systemctl status firewalld
复制代码
若防火墙状态显示为 active (running),则表示防火墙未关闭,请关闭防火墙。
systemctl disable firewalld.service
systemctl stop firewalld.service
复制代码
将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile 文件中添加“export LANG=en_US.UTF-8”(也可以设置成 GBK,看你习惯用啥)。
使用 swapoff -a 命令将交换内存关闭。
修改/etc/systemd/logind.conf 的“RemoveIPC”的值“no”,前面的 #也删掉。
重新加载参数并检查。
[root@pekphisprb70594 ~]# systemctl daemon-reload
[root@pekphisprb70594 ~]# systemctl restart systemd-logind
复制代码
执行 ifconfig 命令查询服务器的网卡名称。默认一般就是对的。
如下图所示,服务器 IP 为 10.244.53.173,则该服务器的网卡名称为 eth0。对于 X86,官方文档 MTU 值推荐 1500。
设置 root 用户远程登录
vim 打开配置文件/etc/ssh/sshd_config。
查看 PermitRootLogin 配置是否为 yes,表示允许用户远程登录。
在 Banner XXX 前面加 #,注释掉欢迎语。
重启 sshd 服务。
[root@pekphisprb70596 openGauss]# systemctl restart sshd.service
复制代码
在其他服务器上执行上面的步骤。
4. 配置文件 cluster_config.xml 准备
从安装文档示例中,把主机名 pekphisprb70593 和 IP 10.x.x.x 替换成自己实际使用的值。保存到文件,文件名为 cluster_config.xml。
下面是修改后的内容。注意编码格式,我用 notepad++ 可以看到编码格式为 UTF-8。新手建议 Windows 上修改完再上传服务器。
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<PARAM name="clusterName" value="opengSingle" />
<PARAM name="nodeNames" value="pekphisprb70593" />
<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="10.x.x.x"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- node1上的节点部署信息 -->
<DEVICE sn="pekphisprb70593">
<PARAM name="name" value="pekphisprb70593"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="10.x.x.x"/>
<PARAM name="sshIp1" value="10.x.x.x"/>
<!--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>
复制代码
5. 安装及验证
这一步基本上就是按照产品文档进行安装的了,没啥好说的。
以 root 用户登录待安装 openGauss 的任意主机,并按规划创建存放安装包的目录。
mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
复制代码
将安装包“openGauss-3.0.0-CentOS-64bit-all.tar.gz”和配置文件“cluster_config.xml”都放到上一步所创建的/opt/software/openGauss 目录中。
解压安装包。
cd /opt/software/openGauss
tar -zxvf openGauss-3.0.0-CentOS-64bit-all.tar.gz
tar -zxvf openGauss-3.0.0-CentOS-64bit-om.tar.gz
复制代码
进入 script 执行预安装命令。我采用的是交互式,所以需要在中间提示的时候输入密码。安装时长大概一两分钟。
[root@opengauss1 openGauss]# cd script/
[root@opengauss1 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/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.
Are you sure you want to create trust for root (yes/no)?yes
Please enter password for root
Password:
Successfully created SSH trust for the root permission user.
Setting host ip env
...
...
Fixing server package owner.
Setting finish flag.
Successfully set finish flag.
Preinstallation succeeded.
复制代码
切换到 omm 用户,使用 gs_install 安装 openGauss。中间根据提示输入要设置的数据库密码,大概两三分钟的样子。
[root@pekphisprb70593 script]# su - omm
Last login: Wed Jul 6 09:17:01 CST 2022
[omm@pekphisprb70593 ~]$ gs_install -X /opt/software/openGauss/cluster_config.xml
Parsing the configuration file.
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.
...
Please enter password for database:
Please repeat for database:
...
Configuration is completed.
Successfully started cluster.
Successfully installed application.
end deploy..
复制代码
检查下数据库状态,state 都是 Normal 就可以。
[omm@opengauss1 dn]$ gs_om -t status --detail
复制代码
现在试一下连接。
[omm@opengauss1 om]$ gsql -d postgres -p 15400
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=# CREATE DATABASE mydb WITH ENCODING 'GBK' template = template0;
CREATE DATABASE
openGauss=#
openGauss=# \q
复制代码
安装到此结束。
6. 可能遇到的问题
Python 安装 make install 提示 zipimport.ZipImportError:can't decompress data;zlib not available。
tar -zxvf Python-3.6.15.tgz
cd Python-3.6.15/
./configure prefix=/usr/local/python3
make
make install
复制代码
然后这里报错了,提示 zlib 没有,解压不了数据。
这种一般是没有装 zlib-devel。可以用 yum 的话执行 yum -y install zlib-devel 装一下。
只能离线装的话就按照本文离线版安装章节解决下。
PS:这里我搜了很多资料,因为没有配置 yum,只能离线方式安装。开始按照 zlib-xxx.tar.gz 安装然后编译,结果安装 python 一直提示上面的错,还以为是 zlib 配置的不对,后来尝试了 zlib-devel 的其他版本也不可。遇到相同问题的人避开这个坑。
openGauss 执行./preinstall 时报错提示“Unable to import module: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory.”是 python 配置没弄好。
解决办法:
找到这个文件,写到 python 配置文件里。
[root@pekphisprb70593 script]# find / -name libpython3.6m.so.1.0
/usr/local/python3/lib/libpython3.6m.so.1.0
/opt/Python-3.6.15/libpython3.6m.so.1.0
[root@pekphisprb70593 script]# cd /etc/ld.so.conf.d/
复制代码
在这个路径下新建 python3.conf,里面写入 libpython3.6m.so.1.0 的上一层目录,我这里找到两条,写一条就好了,比如/usr/local/python3/lib,然后保存退出。
执行下面这个重新加载下。
[root@pekphisprb70593 ld.so.conf.d]# ldconfig
复制代码
再重新执行步骤 4 ./gs_preinstall 那条命令就可以了。
点击关注,第一时间了解华为云新鲜技术~
评论