1 关于MogDB
MogDB是EnMotech openGauss DataBase Enterprise Edition的缩写,是云和恩墨基于openGauss开源数据库进行定制、推出的企业发行版。它将围绕高可用、安全、自动化运维、数据库一体机和SQL审核优化等企业需求,解决企业用户落地。其核心价值是易用性、高性能、高可用等和全天候的企业支持。
官网文档:https://docs.mogdb.io/zh/mogdb/v3.1/installation-overview
MogDB的安装方式有:容器化安装、PTK安装、OM安装和手动安装,后两种都是离线安装,这里记录OM安装的过程。
2 装备工作
2.1 准备系统环境
目前MogDB仅支持在Linux系统中运行,所以我使用CentOS 7来进行安装。
2.2 关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
setenforce=0
sed -i '/^SELINUX=/c'SELINUX=disabled /etc/selinux/config
2.3 检查CPU是否支持指令集
检查CPU是否支持指令集rdtscp和bmi2
执行命令:
lscpu | grep rdtscp
lscpu | grep bmi2
会显示支持的指令集:
虚拟机缺少指令集得解决方法:
2.4 安装依赖
yum install -y bzip2 libaio-devel flex bison ncurses-devel glibc-devel libxml2-devel patch redhat-lsb-core unzip gcc gcc-c++ perl openssl-devel libffi-devel libtool zlib-devel
2.5 安装Python3.6
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
mkdir -p /usr/local/python3
tar -zxvf Python-3.6.5.tgz
cd Python-3.6.5
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC && make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
3 开始OM安装
3.1 安装包准备
创建目录存放目录:
mkdir -p /opt/software
chmod 755 -R /opt/software
安装包下载:https://www.mogdb.io/downloads/allDownload。
下载安装包:
上传到服务器的/opt/software目录中。
3.2 解压安装包
在/opt/software中进行解压
tar -xvf MogDB-3.1.0-CentOS-x86_64.tar.gz
cp -r MogDB-3.1.0-CentOS-x86_64/* /opt/software/
rm -rf MogDB-3.1.0-CentOS-x86_64
tar -xvf MogDB-3.1.0-CentOS-64bit-om.tar.gz
3.3 准备安装配置文件
创建配置文件:
vi /opt/software/MogDB-3.1.0-CentOS-64bit-om/clusterconfig.xml
内容:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- MogDB整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAM name="clusterName" value="dbCluster" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="node1_hostname" />
<!-- 数据库安装目录-->
<PARAM name="gaussdbAppPath" value="/opt/mogdb/install/app" />
<!-- 日志目录-->
<PARAM name="gaussdbLogPath" value="/var/log/omm" />
<!-- 临时文件目录-->
<PARAM name="tmpMppdbPath" value="/opt/mogdb/tmp" />
<!-- 数据库工具目录-->
<PARAM name="gaussdbToolPath" value="/opt/mogdb/install/om" />
<!-- 数据库core文件目录-->
<PARAM name="corePath" value="/opt/mogdb/corefile" />
<!-- 节点IP,与数据库节点名称列表一一对应 -->
<PARAM name="backIp1s" value="172.18.59.243"/>
</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="172.18.59.243"/>
<PARAM name="sshIp1" value="172.18.59.243"/>
<!--dbnode-->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/opt/mogdb/install/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
</DEVICELIST>
</ROOT>
3.4 修改hostname
保证系统host name和配置文件中的“name”节点的值一致
<PARAM name="name" value="node1_hostname"/>
修改host name
vi /etc/hostname
将里面的内容改为“node1_hostname”,然后重启系统
3.5 确保openssl版本正确
为确保openssl版本正确,执行预安装前请加载安装包中lib库。执行命令如下,其中{packagePath}为用户安装包放置的路径,本示例中为/opt/software/MogDB-3.1.0-CentOS-64bit-om
export LD_LIBRARY_PATH={packagePath}/script/gspylib/clib:$LD_LIBRARY_PATH
3.6 初始化脚本
/opt/software/MogDB-3.1.0-CentOS-64bit-om/script/gs_preinstall -U omm -G dbgrp -X /opt/software/MogDB-3.1.0-CentOS-64bit-om/clusterconfig.xml
出现报错:
python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
需要复制py安装路径下的libpython3.6m.so.1.0到系统lib中:
cp /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib64/
然后重新初始化脚本。
最后显示如下,则成功:
Successfully set finish flag.
Preinstallation succeeded.
运行过程中会创建omm用户,输入yes,然后输入相关密码,需保证复杂度要求,密码应包括大小写、字符、数字,例如Enmo@123。
3.7 执行安装
修改安装目录下lib及script文件夹的用户以及用户组:
chown -R omm:dbgrp /opt/software/MogDB-3.1.0-CentOS-64bit-om/lib
chown -R omm:dbgrp /opt/software/MogDB-3.1.0-CentOS-64bit-om/script
su - omm
gs_install -X /opt/software/MogDB-3.1.0-CentOS-64bit-om/clusterconfig.xml --gsinit-parameter="--locale=en_US.UTF-8" --gsinit-parameter="--encoding=UTF-8"
在执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码。
出现如下提示则安装成功:
Check consistence of memCheck and coresCheck on database nodes.
Configuring pg_hba on all nodes.
Configuration is completed.
Successfully started cluster.
Successfully installed application.
end deploy…
3.8 查看数据库状态并登录
查看状态:
gs_om -t status
[omm@node1_hostname ~]$ gs_om -t status
-----------------------------------------------------------------------
cluster_name : dbCluster
cluster_state : Normal
redistributing : No
-----------------------------------------------------------------------
"cluster_state "显示"Normal"表示数据库可正常使用。
登录数据库:
gsql -d postgres -p 15400 -r
[omm@node1_hostname ~]$ gsql -d postgres -p 15400 -r
gsql ((MogDB 3.1.0 build 3ddb00f7) compiled at 2022-12-28 22:27:13 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
MogDB=#
完成安装。
4 使用Navicat进行远程连接数据库
4.1 新建远程连接用户
以操作系统用户omm登录数据库主节点
查看数据库详细信息
登录数据库,并在数据库中使用如下语句建立"dbTest"用户(注意用户名大小写无效,全部小写):
postgres=# CREATE USER dbtest PASSWORD 'Test@123';
CREATE ROLE
postgres=# \q
然后允许dbtest进行远程连接(允许IP地址为172.16.0.245的客户端访问本机):
gs_guc set -N all -I all -h "host all dbTest 172.16.0.245/24 sha256"
- -N all表示MogDB的所有主机。
- -I all表示主机的所有实例。
- -h 表示指定需要在"pg_hba.conf"增加的语句。
- all 表示允许客户端连接到任意的数据库。
- dbtest 表示连接数据库的用户。
- 172.16.0.245/24表示只允许IP地址为172.16.0.245的主机连接。此处的IP地址不能为MogDB内的IP,在使用过程中,请根据用户的网络进行配置修改。24表示子网掩码为1的位数,即255.255.255.0。
- sha256表示连接时jack用户的密码使用sha256算法加密。
- 这条命令在数据库主节点实例对应的"pg_hba.conf"文件中添加了一条规则,用于对连接数据库主节点的客户端进行鉴定。
4.2 进行连接
直接使用Navicat进行连接:
测试连接,报错:
因为Navicat不支持sha256加密方式,只有使用md5。
4.3 修改加密方式为md5
先修改连接策略文件
vi /opt/mogdb/install/data/dn/pg_hba.conf
找到如下内容:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
host all omm 172.18.59.243/32 trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 172.18.59.243/24 sha256
host all dbtest 172.18.59.198/24 sha256
将其中的sha256都改为md5。
然后修改密码加密类型:
[omm@node1_hostname ~]$ gs_guc reload -N all -I all -c 'password_encryption_type=0'
#检查配置是否生效
[omm@node1_hostname ~]$ grep encry /opt/mogdb/install/data/dn/postgresql.conf
password_encryption_type = 0 #Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only
#最保险的方法还是登录数据库show一下参数值:
MogDB=# show password_encryption_type;
password_encryption_type
--------------------------
0
(1 row)
4.4 修改用户dbtest的密码
MogDB=# alter user dbtest password 'Test@666';
NOTICE: The encrypted password contains MD5 ciphertext, which is not secure.
ALTER ROLE
MogDB=# select rolpassword from pg_authid where rolname='dbtest';
rolpassword
-------------------------------------
md545ef1188d000415856e28906ed530cf3
(1 row)
MogDB=#
在本地测试连接:
[omm@node1_hostname ~]$ gsql -U dbtest -W Test@666 -h 172.18.59.243 -p 15400 -d postgres
gsql ((MogDB 3.1.0 build 3ddb00f7) compiled at 2022-12-28 22:27:13 commit 0 last mr )
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.
MogDB=>
然后再使用Navicat连接,成功。