一、声明
声明:本人在墨天轮“磐维数据库”板块发表的所有文章,均是基于个人测试用途的虚拟机环境,不涉及任何生产环境的主机信息。
二、写此篇文字的起因
对于磐维数据库的部署,一般均是在默认的标准SSH端口(22端口)环境。但为了提高系统的安全性,有时需要将SSH修改为非标准端口。
本篇文字记录了在非标准SSH端口环境中,磐维数据库集群的部署和使用过程。
对于在标准SSH端口环境中部署磐维数据库的过程,可参看下面的两篇文字:
三、磐维数据库及测试环境和安装工具简介
1、磐维数据库简介
中国移动磐维数据库(ChinaMobileDB),简称“磐维数据库”(PanWeiDB)。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。其产品内核能力基于华为 OpenGauss 开源软件,并进一步提升了系统稳定性。
磐维2.0数据库基于 华为openGauss 5.0 研发,内核能力在兼容性、高可用、分布式、安全性等方面均有质的提升,完全达到了通信行业各业务域对数据库的高标准要求。
2、openEuler简介
openEuler 是一个开源操作系统,由中国开源软件基金会主导,华为深度参与,面向服务器、桌面和嵌入式等领域,为用户提供安全、稳定、易用的操作系统平台。具有系统高性能、高可靠、高安全等特性。
在 openEuler 操作系统上,运行基于华为 OpenGauss 打造的磐维数据库,国产操作系统+国产数据库,这一对组合绝对是珠联璧合。
3、PTK工具简介
PTK(Provisioning Toolkit)是一款可用于磐维数据库安装和运维的工具,通过它可以更加便捷地安装部署磐维数据库。
四、准备用于部署磐维数据库的主机
1、创建三台VMware虚拟机
运行 VMware Workstation 新建虚拟机
每台虚机资源配置:2CPU + 4GB内存 + 30GB磁盘
2、下载openEuler安装包
下载地址:https://www.openeuler.org/zh/download/
3、将ISO镜像文件挂载到虚拟机上
4 、启动虚拟机,最小化安装openEuler
在安装完成后,点击“Reboot System”重启操作系统。
5、登录主机并修改SSH端口
通过SSH终端工具(比如MobaXterm)登录虚拟机,修改SSH的配置文件/etc/ssh/sshd_config
vi /etc/ssh/sshd_config
复制
找到“Port 22”的行(22是SSH的默认端口),将其更改为新端口号,例如“Port 2222”
保存并关闭此配置文件。
重启SSH服务,完成SSH端口的更改:
systemctl restart sshd
复制
五、部署磐维数据库集群
1、数据库主机IP和端口规划
主机名 | IP | 数据库角色 | 数据库端口 | CMSever端口 |
hostname1 | 192.168.20.51 | Primary | 17700 | 18800 |
hostname2 | 192.168.20.52 | Standby | 17700 | 18800 |
hostname3 | 192.168.20.53 | Standby | 17700 | 18800 |
2、数据库目录规划
目录 | 用途 |
/database/panweidb/data | 存放数据文件 |
/database/panweidb/data/pg_xlog | 存放WAL文件 |
/database/panweidb/log | 存放数据库日志 |
/database/panweidb/pg_audit | 存放审计日志 |
/database/panweidb/app | 数据库安装目录 |
/database/panweidb/cm | cm目录 |
/database/panweidb/soft | 软件介质目录 |
/backup | 备份目录 |
/archive | 存放归档日志 |
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 |
redhat-lsb-core | 建议版本:4.1 |
readline-devel | 7.0-13 |
libnsl(openEuler+x86 环境中) | 建议版本:2.28-36 |
bzip2 | 建议版本:1.0.6 以上 |
expect | 建议版本:5.45-14 以上 |
4、关闭SELinux和防火墙
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 systemctl stop firewalld systemctl disable firewalld
复制
5、设置系统内核参数
6、配置资源限制
vi /etc/security/limits.conf
复制
添加以下内容:
panweidb soft nproc unlimited
panweidb hard nproc unlimited
panweidb soft stack unlimited
panweidb hard stack unlimited
panweidb soft core unlimited
panweidb hard core unlimited
panweidb soft memlock unlimited
panweidb hard memlock unlimited
panweidb soft nofile 10240000
panweidb hard nofile 10240000
7、设置主机名解析
vi /etc/hosts
复制
添加以下内容:
192.168.20.51 euler-01
192.168.20.52 euler-02
192.168.20.53 euler-03
8、创建数据库安装用户
groupadd dbgrp useradd -g dbgrp panweidb passwd panweidb
复制
要记住“panweidb”用户的密码,在稍后的安装过程中,会用到。
9、添加定时任务权限
echo "panweidb" >> /etc/cron.allow
复制
10、创建安装目录
mkdir -p /database/panweidb/{soft,ptk} chown -R panweidb:dbgrp /database/panweidb
复制
11、创建节点间的互信
su - panweidb ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub panweidb@192.168.20.52 ssh-copy-id -i ~/.ssh/id_rsa.pub panweidb@192.168.20.53
复制
12、上传磐维数据库安装包和PTK工具安装包(在第一个节点)
将以下安装包,上传到第一台虚机的“/database/panweidb/soft”目录中
- PanWeiDB_V2.0-S2.0.2_B01-install-openeuler_22.03-x86_64-no_mot.tar.gz
- ptk_linux_x86_64.tar.gz
13、解压PTK安装包
cd /database/panweidb/soft tar -xf ptk_linux_x86_64.tar.gz -C /database/panweidb/ptk/
复制
注意:
(1)PTK版本要使用1.1.5或以上版本,查看PTK版本的方法如下:
(2)PTK安装包解压后,通过scp传送到其他各节点,以便下一步进行环境检查。
14、以root在各个节点上进行安装前的检查
cd /database/panweidb/ptk/ ./ptk checkos
复制
检查结果截图如下:
可以看到,A14项不满足安装的要求,对于此情况的详细说明,可执行如下命令:
./ptk checkos -i A14 --detail
复制
结果截图如下:
对于此情况的临时解决方法如下:
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
复制
此情况的彻底解决方法:可以在通过PTK部署完成磐维数据库后,在各个节点上,以root用户执行如下命令:
/database/panweidb/tool/script/gs_checkos -i B6
复制
经过以上处理后,再次在各个节点上进行检查,确保没有“Abnormal”项,才能进行安装。
以下是检查通过的结果截图:
15、在第一个节点上配置数据库集群拓扑描述文件
(1)进入安装用户环境
su - panweidb
复制
(2)生成安装用户密码的加密串
cd /database/panweidb/ptk/ ./ptk encrypt 'panweidb用户密码'
复制
以下命令执行结果截图:
(3)编写数据库集群配置文件
PTK工具将按此文件的拓扑描述,进行磐维数据库集群的安装部署。在其中指定了SSH端口号,如下所示:
16、通过PTK工具部署磐维数据库集群
./ptk install --file=/database/panweidb/ptk/config.yaml \ --skip-check-os --skip-check-distro --skip-create-user \ --install-cm \ --skip-launch-db \ --pkg=/database/panweidb/soft/'PanWeiDB_V2.0-S2.0.2_B01-install-openeuler_22.03-x86_64-no_mot.tar.gz'
复制
以上命令的参数说明:
- --file 有于指定集群配置文件的路径和文件名
- --skip-check-os 跳过系统环境检查,直接安装
- --skip-check-distro 跳过系统发行版检查,直接安装
- --skip-create-user 跳过创建系统用户
- --install-cm 安装 CM 组件(集群管理组件)
- --skip-launch-db 在初始化之后,不启动数据库
- --pkg 用于指定数据库安装包的路径和文件名
以下是执行结果开始部分的截图:
执行过程的中间输出内容略过,以下是执行输出结尾部分的截图:
至此,磐维数据库集群已经成功完成安装。
【补充说明】如果需要卸载重新安装,卸载命令如下:
./ptk uninstall --name=panweidb
复制
17、在所有节点上执行om动态库拷贝
su - panweidb cd /database/panweidb/tool/script/ python3 -c "from gspylib.common.copy_python_lib import copy_lib;copy_lib()"
复制
六、磐维数据库集群状态检查
1、通过PTK工具查看磐维数据库集群的状态
2、通过gs_om命令查看磐维数据库集群的状态
以上报错的解决方法如下:
cat /database/panweidb/app/version.cfg > /database/panweidb/tool/version.cfg
复制
经过以上处理后,再次通过gs_om可正常查看集群的状态,如下所示:
可以看到,磐维数据库集群,目前处于停止状态。
七、启停磐维数据库集群
1、启动磐维数据库集群
启动后,可以通过gs_om命令来检查集群的状态,如下:
也可以通过PTK工具来查看集群的状态,如下:
可以看到一主两备的三节点磐维数据库集群,已经正常运行了。
2、停止磐维数据库集群
八、访问磐维数据库
1、通过gsql访问磐维数据库
可以通过系统自带的gsql工具去访问磐维数据库,示例如下:
2、通过DBeaver图形化客户端工具访问磐维数据库
(1)先添加访问白名单
命令如下:
gs_guc reload -I all -N all -h "host all all 192.168.20.0/24 sha256"
复制
(2)启动DBeaver图形化客户端工具
(3)新建数据库连接
设置JDBC的驱动,如下:
(4)JDBC连接串格式说明
可以参看“通过JDBC访问磐维数据库集群”这篇文字,此处给出JDBC连接串的格式参考:
推荐使用panweidb驱动:
jdbc:panweidb://host1:port1,host2:port2,host3:port3/database_name?targetServerType=master¤tSchema=schema_name&useUnicode=true&characterEncoding=utf-8
也可以使用postgresql驱动:
jdbc:postgresql://host1:port1,host2:port2,host3:port3/database_name?targetServerType=master¤tSchema=schema_name&useUnicode=true&characterEncoding=utf-8
说明:
- host1:port1,host2:port2,host3:port3分别是数据库集群三节点主机的IP和数据库服务端口号;
- targetServerType=master 用于指定连接主库
(5)填写“JDBC URL”
在JDBC URL栏中,填写:jdbc:panweidb://192.168.20.51:17700,192.168.20.52:17700,192.168.20.53:17700/db01?targetServerType=master¤tSchema=u01&useUnicode=true&characterEncoding=utf-8
并填写数据库用户名和用户密码(已经提前创建了db01数据库、并创建了用户u01和同名的schema)
如上所示,在点击“测试连接”后,显示“已连接”的信息,表示成功连接到数据库。
点击打开这个新建的磐维数据库连接,就可以通过DBeaver访问磐维数据库了,例如查询一个表的内容,如下所示:
以上,记录了在非标准SSH端口环境中,部署磐维2.0数据库集群,并连接访问的过程。
将此分享给感兴趣的小伙伴,希望共同为国产数据库的发展加油喝彩!