暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

如何在一台虚拟机上部署磐维分布式数据库

原创 飞天 2024-12-29
806

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工具)

数据库连接配置:
image.png
测试连接:
image.png
查询数据:
image.png

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
如有任何疑问,欢迎大家留言,共同进步~~~

最后修改时间:2024-12-30 10:09:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论