1、简要说明
磐维数据库包括集中式和分布式,本文主要介绍如何在一台虚拟机上安装部署磐维分布式数据库V2.0_dist_S3.0.2_B02,仅供个人测试学习使用,勿用于其它目的!
如果需要在三台虚拟机上部署磐维分布式数据库,请参考文章:三台虚拟机上部署磐维分布式数据库
2、部署规划
说明:出于安全需要,本文中的ip地址都用*.*代替,大家在实际部署过程中要换成真实的ip地址。
本文中使用了一台虚拟机,配置如下:
| 主机名 | ip地址 | OS版本 | 内存、CPU |
|---|---|---|---|
| node1 | 192.*.*.60 | Centos7.9 | 12G 、 1个双核 |
部署规划如下:
| 节点类型 | 节点名称 | 节点 IP | 端口 | 代理端口 | 角色 | 工作路径 work_dir |
|---|---|---|---|---|---|---|
| gha_server | gha_server1 | 192.*.*.60 | 20001 | - | - | - |
| dcs | - | 192.*.*.60 | 2379 | - | - | - |
| gtm | gtm1 | 192.*.*.60 | 6666 | 8001 | 主 | /data/panweidb/data/gtm/gtm1 |
| coordinator | cn1 | 192.*.*.60 | 5432 | 8004 | 主 | /data/panweidb/data/coord/cn1 |
| datanode | dn1_1 | 192.*.*.60 | 20010 | 8020 | 主 | /data/panweidb/data/dn1/dn1_1 |
| datanode | dn2_1 | 192.*.*.60 | 20020 | 8030 | 主 | /data/panweidb/data/dn1/dn2_1 |
| datanode | dn3_1 | 192.*.*.60 | 20030 | 8040 | 主 | /data/panweidb/data/dn1/dn3_1 |
3、安装准备
3.1 检查系统依赖包
rpm -q bison flex patch bzip2
如果缺少依赖包,配置好yum源进行安装:
yum install -y bison flex patch bzip2
3.2 检查是否支持 rdtscp 指令集
cat /proc/cpuinfo | grep rdtscp
3.3 创建用户和组、配置sudoer
创建用户和组:
groupadd dbgrp
useradd -m -d /home/omm omm -g dbgrp
passwd omm
返回并设置密码
配置sudoer:
# visudo
进入编辑模式,添加 omm 用户及权限:
omm ALL=(ALL) NOPASSWD:ALL
保存并退出。
3.4 关闭防火墙
systemctl status firewalld.service
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
3.5 关闭 SELINUX
检查selinux是否已关闭:
sestatus
如果系统提示以下信息,说明 selinux 已被禁用:
SELinux status: disabled
否则,执行下面命令关闭selinux:
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
重启服务器生效。
临时生效方法:
setenforce 0
3.6 配置系统内核参数
cat >> /etc/sysctl.conf << EOF
kernel.sem = 40960 2048000 40960 20480
EOF
sysctl -p
3.7 关闭THP
#检查THP开启情况
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
##关闭THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled
## 设置重启后自动关闭
chmod +x /etc/rc.d/rc.local
systemctl enable rc-local.service
cat >> /etc/rc.d/rc.local <<EOF
swapoff -a
if test -f /sys/kernel/mm/transparent_hugepage/enabled;
then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag;
then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
3.8 关闭RemoveIPC
1、 修改/etc/systemd/logind.conf文件中的“RemoveIPC”值为“no”
vim /etc/systemd/logind.conf
RemoveIPC=no
2、修改/usr/lib/systemd/system/systemd-logind.service文件中的“RemoveIPC”值为“no”
vim /usr/lib/systemd/system/systemd-logind.service
RemoveIPC=no #没有参数,添加到末尾
3、 重启服务
systemctl daemon-reload
systemctl restart systemd-logind.service
4、 结果验证确认
#由于 CentOS 操作系统环境的 removeIPC 默认为关闭,则执行如下语句是无返回结果的。
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC
3.9 配置ssh
# 切换到omm用户
su - omm
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa
4、安装部署
安装部署流程为:创建目录、准备安装包、编辑 yml 文件、预检查、安装。
4.1 创建安装目录
在第一台主机上创建 PanWeiDB 分布式数据库的安装目录。配置文件中 pkg_path 参数值需与安装目录保持一致。
mkdir -p /data/panweidb/omm_package
4.2 准备安装包
将数据库安装文件上传到安装目录/data/panweidb/omm_package/,并解压:
[root@node1 ~]$ cd /data/panweidb/omm_package/
[root@node1 omm_package]# ll
total 247228
-rw-r--r-- 1 root root 253160217 Dec 29 11:04 PanWeiDB_V2.0_dist_S3.0.2_B02_x86_64.tar.gz
[root@node1 omm_package]# tar -xvf PanWeiDB_V2.0_dist_S3.0.2_B02_x86_64.tar.gz
[root@node1 omm_package]# tar -xvf PanWeiDB_V2.0_dist_S3.0.2_B02_x86_64_om.tar.gz
[root@node1 omm_package]# chown -R omm:dbgrp /data/panweidb/
4.3 编辑 yml 文件
编辑集群配置文件。 模板配置文件默认在安装目录中(例如 /data/panweidb/omm_package/)。
[root@node1 ~]# su - omm
[omm@node1 ~]$ cd /data/panweidb/omm_package/
[omm@node1 omm_package]$ ls -l panwei.yml
-rw------- 1 omm dbgrp 2565 Oct 30 16:01 panwei.yml
编辑 panwei.yml 配置文件,修改后的结果如下:
[omm@node1 omm_package]$ cat panwei.yml
ha_server:
- ha_server1:
host: 192.*.*.60
port: 20001
dcs:
- host: 192.*.*.60
port: 2379
gtm:
- gtm1:
host: 192.*.*.60
agent_host: 192.*.*.60
role: primary
port: 6666
agent_port: 8001
work_dir: /data/panweidb/data/gtm/gtm1
coordinator:
- cn1:
host: 192.*.*.60
agent_host: 192.*.*.60
role: primary
port: 5432
agent_port: 8004
work_dir: /data/panweidb/data/coord/cn1
datanode:
- dn1:
- dn1_1:
host: 192.*.*.60
agent_host: 192.*.*.60
role: primary
port: 20010
agent_port: 8020
work_dir: /data/panweidb/data/dn1/dn1_1
- dn2:
- dn2_1:
host: 192.*.*.60
agent_host: 192.*.*.60
role: primary
port: 20020
agent_port: 8030
work_dir: /data/panweidb/data/dn2/dn2_1
- dn3:
- dn3_1:
host: 192.*.*.60
agent_host: 192.*.*.60
role: primary
port: 20030
agent_port: 8040
work_dir: /data/panweidb/data/dn3/dn3_1
env:
# cluster_type allowed values: multiple-nodes, single-inst, default is multiple-nodes
cluster_type: multiple-nodes
pkg_path: /data/panweidb/omm_package
prefix: /data/panweidb/data
version: V2.0_dist_S3.0.2_B02
user: omm
port: 22
third_ssh: false
4.4 预检查
完成两层安装包解压后,会在安装目录下生成 script 子目录。执行 ha_preinstall 命令进行环境配置,包括建立用户互信、安装前环境检查和环境修复功能。
安装前环境检查
[omm@node1 ~]$ cd /data/panweidb/omm_package/script/
[omm@node1 script]$ ./ha_preinstall -i A -h 192.*.*.60 -u omm -p 22
Checking items:
A1. [ OS version status ] : Normal
A2. [ Kernel version status ] : Normal
A3. [ Unicode status ] : Normal
A4. [ Time zone status ] : Normal
A5. [ Swap memory status ] : Normal
A6. [ Bash type ] : Normal
A7. [ System limits ] : Normal
A8. [ Disk configuration status ] : Normal
A9. [ Pre-read block size status ] : Normal
A10.[ IO scheduler status ] : Normal
A11.[ Network card configuration status ] : Normal
A12.[ Time consistency status ] : Normal
A13.[ Firewall/Ufw service status ] : Normal
A14.[ THP service status ] : Normal
A15.[ SELinux status ] : Normal
A16.[ Dependency version ] : Normal
A17.[ Sudo privilege ] : Normal
A18.[ Command permission ] : Normal
Total numbers:18. Abnormal numbers:0. Warning numbers:0.
4.5 安装数据库
完成两层安装包解压后,会在安装目录下生成 script 子目录。执行 ha_ctl 命令安装PanWeiDB 分布式数据库。语法格式为:
ha_ctl install <-c cluster> <-p confpath>
其中参数说明:
- -c 参数:指定数据库集群名称,为可选字段。缺省默认值 panwei。
- -p 参数:指定配置文件保存路径,为可选字段。
注意:
- 集群名需与配置文件名保持一致。
- 安装完成后,不要删除 ha_ctl 命令文件所在的 script 目录,否则将导致运维命令丢失。
- 安装数据库时环境变量尚未配置,需进入 script 目录执行 ha_ctl 命令。安装成功后,可在任意目录下以 omm 用户执行 ha_ctl 命令。
./ha_ctl install -c panwei -p /data/panweidb/omm_package
安装命令执行结果如下:
[omm@node1 script]$ ./ha_ctl install -c panwei -p /data/panweidb/omm_package
{
"ret":0,
"msg":"Success"
}
5、集群管理
5.1 数据库状态监控
登录任一节点都可以执行。
语法:
ha_ctl monitor all/server/gtm/coordinator/datanode/dcs <-c cluster> <-H> -l dcslist
其中参数说明:
- -c 参数:表示数据库名称,为可选字段。缺省默认值 panwei。
- dcslist 为 DCS 地址,一般情况下可以只列出一个节点地址,其他节点会自动同步消息。为了保证高可用,也可以列出所有节点地址。
- -H 参数:如指定该参数,则集群状态结果以表格形式展示。
running:节点处于正常运行状态
stopped:节点处于正常停止状态
unstable:节点处于不稳定的中间状态。检查故障处理。
命令执行结果如下:
[omm@node1 script]$ ha_ctl monitor all -l http://192.*.*.60:2379 -H
+----+------------+----------------+-------+---------+--------+
| No | name | host | port | state | leader |
+----+------------+----------------+-------+---------+--------+
| 0 | ha_server1 | 192.*.*.60 | 20001 | running | True |
+----+------------+----------------+-------+---------+--------+
+----+------+----------------+------+------------------------------+---------+---------+
| No | name | host | port | work_dir | state | role |
+----+------+----------------+------+------------------------------+---------+---------+
| 0 | gtm1 | 192.*.*.60 | 6666 | /data/panweidb/data/gtm/gtm1 | running | primary |
+----+------+----------------+------+------------------------------+---------+---------+
+----+------+----------------+------+-------------------------------+---------+---------+
| No | name | host | port | work_dir | state | role |
+----+------+----------------+------+-------------------------------+---------+---------+
| 0 | cn1 | 192.*.*.60 | 5432 | /data/panweidb/data/coord/cn1 | running | primary |
+----+------+----------------+------+-------------------------------+---------+---------+
+----+-------+-------+----------------+-------+-------------------------------+---------+---------+
| No | group | name | host | port | work_dir | state | role |
+----+-------+-------+----------------+-------+-------------------------------+---------+---------+
| 0 | dn1 | dn1_1 | 192.*.*.60 | 20010 | /data/panweidb/data/dn1/dn1_1 | running | primary |
| 1 | dn2 | dn2_1 | 192.*.*.60 | 20020 | /data/panweidb/data/dn2/dn2_1 | running | primary |
| 2 | dn3 | dn3_1 | 192.*.*.60 | 20030 | /data/panweidb/data/dn3/dn3_1 | running | primary |
+----+-------+-------+----------------+-------+-------------------------------+---------+---------+
+----+----------------------------+--------+---------+----------+
| No | url | name | state | isLeader |
+----+----------------------------+--------+---------+----------+
| 0 | http://192.*.*.60:2379 | node_0 | healthy | True |
+----+----------------------------+--------+---------+----------+
5.2 启动数据库
语法:
ha_ctl start all -l dcslist <-c cluster>
命令执行结果如下:
[omm@node1 ~]$ ha_ctl start all -l http://192.*.*.60:2379
{
"ret":0,
"msg":"Success"
}
[omm@node1 ~]$
5.3 停止数据库
语法:
ha_ctl stop all -l dcslist <-c cluster>
命令执行结果如下:
[omm@node1 ~]$ ha_ctl stop all -l http://192.*.*.60:2379
{
"ret":0,
"msg":"Success"
}
[omm@node1 ~]$
5.4 数据库卸载
1、集群卸载语法格式:
ha_ctl uninstall <-f> <-c cluster> -l dcslist
参数说明:
-f 参数:表示清理安装目录,为可选字段。缺省保留目录文件夹。
2、卸载完成后删除 DCS 工具:
在集群卸载后环境变量自动清除,因此再次执行 ha_ctl 命令需要进入 script 目录。
cd /data/panweidb/omm_package/script
ha_ctl destroy dcs -l dcslist
6、连接与使用
6.1 本地连接(gsql访问)
1、以 omm 用户登录数据库读写 CN 节点。
2、连接数据库。
gsql -d dbname -p port <-U user_name> <-h hostip>
示例:以最简便的方式,通过 CN 节点连接到 postgres 数据库
gsql -d postgres -p 5432
命令执行结果如下:
[omm@node1 omm_package]$ gsql -d postgres -p 5432
gsql ((PanWeiDB_V2.0(openGauss)-distributed version-3.0.2_B02 build a91968ef) compiled at 2024-10-30 15:34:45 commit 0 last mr 2820 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=# create database testdb;
CREATE DATABASE
postgres=# \c testdb
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "testdb" as user "omm".
testdb=# create user testusr with password '******';
CREATE ROLE
testdb=# \c - testusr
Password for user testusr:
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "testdb" as user "testusr".
testdb=> create table testtab(id int);
CREATE TABLE
testdb=> insert into testtab values(generate_series(1,100));
INSERT 0 100
testdb=>
postgres=#
6.2 远程访问(gsql访问)
设置白名单
gs_guc reload -Z coordinator -N all -I all -h "host all all 192.0.0.0/8 sha256"
执行结果如下:
[omm@node1 ~]$ gs_guc reload -Z coordinator -N all -I all -h "host all all 192.0.0.0/8 sha256"
The gs_guc run with the following arguments: [gs_guc -Z coordinator -N all -I all -h host all all 192.0.0.0/8 sha256 reload ].
Begin to perform the total nodes: 3.
Popen count is 2, Popen success count is 2, Popen failure count is 0.
Begin to perform gs_guc for coordinators.
Command count is 2, Command success count is 2, Command failure count is 0.
Total instances: 2.
ALL: Success to perform gs_guc!
测试:
[omm@node1 ~]$ gsql -h 192.*.*.60 -d postgres -U test
Password for user test:
gsql ((PanWeiDB_V2.0(openGauss)-distributed version-3.0.1_B01 build d2edb141) compiled at 2024-09-25 16:30:33 commit 0 last mr 2715 )
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.
postgres=> \du
List of roles
Role name | Attributes | Member of
-----------+------------+-----------
test | | {}
postgres=>
6.3 远程访问(dbeaver工具)
数据库连接配置:

测试连接:

查询数据:

7、碰到的问题
1、ha_ctl install -c panwei -p /data/panweidb/omm_package执行异常:
[omm@node1 script]$ ./ha_ctl install -c panwei -p /data/panweidb/omm_package
{
"ret":80000201,
"msg":" check or config ssh trust:
[ 192.*.*.60 ]:
Error code: 80000201
Error Message: Run cmd failed:cmd[if [ ! -f '~/.ssh/config' ]; then echo *** > ~/.ssh/config && chmod 644 ~/.ssh/config; fi], msg[/bin/sh: /home/omm/.ssh/config: No such file or directory]
"
}
解决办法:1个节点也必须配置ssh
su - omm $ mkdir ~/.ssh $ chmod 700 ~/.ssh $ ssh-keygen -t rsa
8、总结
本文仅供个人测试学习参考使用,切勿用于其他目的~~~
关于作者:
专注于Oracle、MySQL、PG、OpenGauss和国产数据库的研究,热爱生活,热衷于分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同进步~~~




