磐维数据库,简称"PanWeiDB"。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。其产品内核能力基于华为openGauss开源软件,并进一步提升了系统稳定性。
磐维数据库2.0也同时支持python脚本的om组件安装方式以及go语言的ptk组件安装方式,本文将介绍这两种安装方式。
一、om方式安装
1.上传安装包
# mkdir -p /database/panweidb/soft
将安装包存上传至/database/panweidb/soft 目录下
2.主节点解压安装包
例如BC Linux for euler 21.10,执行以下操作:
# tar -xf 'PanWeiDB-2.0.0_Build0(03b85d1)-bclinux_euler21.10-x86_64-no_mot.tar'
# tar -xf 'PanWeiDB-2.0.0_Build0(03b85d1)-bclinux-64bit-om.tar.gz'
需要解压两次
3.准备xml文件
单节点的配置文件参考如下:
# vi /database/panweidb/soft/panweidb1m.xml
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="panweidb" />
<PARAM name="nodeNames" value="hostname1"/>
<PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
<PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
<PARAM name="corePath" value="/database/panweidb/corefile"/>
<PARAM name="backIp1s" value="10.x.x.1"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="hostname1">
<PARAM name="name" value="hostname1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="10.x.x.1"/>
<PARAM name="sshIp1" value="10.x.x.1"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="17700"/>
<PARAM name="dataNode1" value="/database/panweidb/data"/>
</DEVICE>
</DEVICELIST>
</ROOT>
一主一备两节点的配置文件参考如下:
# vi /database/panweidb/soft/panweidb1m1s.xml
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="panweidb" />
<PARAM name="nodeNames" value="hostname1,hostname2,hostname3"/>
<PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
<PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
<PARAM name="corePath" value="/database/panweidb/corefile"/>
<PARAM name="backIp1s" value="10.x.x.1,10.x.x.2"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="hostname1">
<PARAM name="name" value="hostname1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="10.x.x.1"/>
<PARAM name="sshIp1" value="10.x.x.1"/>
<PARAM name="cmsNum" value="1"/>
<PARAM name="cmServerPortBase" value="18800"/>
<PARAM name="cmServerListenIp1" value="10.x.x.1,10.x.x.2"/>
<PARAM name="cmServerHaIp1" value="10.x.x.1,10.x.x.2"/>
<PARAM name="cmServerlevel" value="1"/>
<PARAM name="cmServerRelation" value="hostname1,hostname2"/>
<PARAM name="cmDir" value="/database/panweidb/cm"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="17700"/>
<PARAM name="dataNode1" value="/database/panweidb/data,hostname2,/database/panweidb/data"/>
<PARAM name="dataNode1_syncNum" value="1"/>
</DEVICE>
<DEVICE sn="hostname2">
<PARAM name="name" value="hostname2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="10.x.x.2"/>
<PARAM name="sshIp1" value="10.x.x.2"/>
<PARAM name="cmServerPortStandby" value="18800"/>
<PARAM name="cmDir" value="/database/panweidb/cm"/>
</DEVICE>
</DEVICELIST>
</ROOT>
一主两备三节点的配置文件参考如下:
# vi /database/panweidb/soft/panweidb1m2s.xml
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="panweidb" />
<PARAM name="nodeNames" value="hostname1,hostname2,hostname3"/>
<PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
<PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
<PARAM name="corePath" value="/database/panweidb/corefile"/>
<PARAM name="backIp1s" value="10.x.x.1,10.x.x.2,10.x.x.3"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="hostname1">
<PARAM name="name" value="hostname1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="10.x.x.1"/>
<PARAM name="sshIp1" value="10.x.x.1"/>
<PARAM name="cmsNum" value="1"/>
<PARAM name="cmServerPortBase" value="18800"/>
<PARAM name="cmServerListenIp1" value="10.x.x.1,10.x.x.2,10.x.x.3"/>
<PARAM name="cmServerHaIp1" value="10.x.x.1,10.x.x.2,10.x.x.3"/>
<PARAM name="cmServerlevel" value="1"/>
<PARAM name="cmServerRelation" value="hostname1,hostname2,hostname3"/>
<PARAM name="cmDir" value="/database/panweidb/cm"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="17700"/>
<PARAM name="dataNode1" value="/database/panweidb/data,hostname2,/database/panweidb/data,hostname3,/database/panweidb/data"/>
<PARAM name="dataNode1_syncNum" value="1"/>
</DEVICE>
<DEVICE sn="hostname2">
<PARAM name="name" value="hostname2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="10.x.x.2"/>
<PARAM name="sshIp1" value="10.x.x.2"/>
<PARAM name="cmServerPortStandby" value="18800"/>
<PARAM name="cmDir" value="/database/panweidb/cm"/>
</DEVICE>
<DEVICE sn="hostname3">
<PARAM name="name" value="hostname3"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="10.x.x.3"/>
<PARAM name="sshIp1" value="10.x.x.3"/>
<PARAM name="cmServerPortStandby" value="18800"/>
<PARAM name="cmDir" value="/database/panweidb/cm"/>
</DEVICE>
</DEVICELIST>
</ROOT>
4.目录授权(第一次)
# chown -R omm:dbgrp /database/panweidb
# chmod -R 755 /database/panweidb
5.预安装
# cd /database/panweidb/soft/script
单节点部署执行:
# ./gs_preinstall -U omm -G dbgrp -X /database/panweidb/soft/panweidb1m.xml
两节点部署执行:
# ./gs_preinstall -U omm -G dbgrp -X /database/panweidb/soft/panweidb1m1s.xml
三节点部署执行:
# ./gs_preinstall -U omm -G dbgrp -X /database/panweidb/soft/panweidb1m2s.xml
6.目录授权(第二次)
# chown -R omm:dbgrp /database/panweidb
# chmod -R 755 /database/panweidb
7.使用omm用户安装
# su - omm
单节点部署执行:
$ gs_install -X /database/panweidb/soft/panweidb1m.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--lc-collate=C" \
--gsinit-parameter="--lc-ctype=C" \
--gsinit-parameter="--dbcompatibility=PG"
两节点部署执行:
$ gs_install -X /database/panweidb/soft/panweidb1m1s.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--lc-collate=C" \
--gsinit-parameter="--lc-ctype=C" \
--gsinit-parameter="--dbcompatibility=PG"
三节点部署执行:
$ gs_install -X /database/panweidb/soft/panweidb1m2s.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--lc-collate=C" \
--gsinit-parameter="--lc-ctype=C" \
--gsinit-parameter="--dbcompatibility=PG"
注意:数据库兼容性只能全局设置,后续不可更改,create database时也不允许设置dbcompatibility,需要提前确认好数据库兼容性。
8.查看集群状态
$ gs_om -t status –detail
9.设置数据库参数
根据业务合理设置数据库参数
二、ptk方式安装
1.上传ptk及数据库安装包
# mkdir -p /database/panweidb/{soft,ptk}
将ptk及数据库安装包上传到/database/panweidb/soft下
注意:ptk版本请使用1.1.5或以上版本
2.解压ptk安装包
# cd /database/panweidb/soft
# tar -xf ptk_linux_x86_64.tar.gz -C /database/panweidb/ptk/
ptk解压后,scp传输到各节点,以便下一步进行环境检查。
3.检查环境
# cd /database/panweidb/ptk/
# ./ptk checkos
检查是否有abnormal项,如果有不满足要求,当前目录会生成root_fix_os.xxx.sh,可以查看该文件后执行脚本进行修复。
注意:其他节点也需要参考该脚本文件进行检查修复。
4.准备ptk配置文件
单节点的配置文件参考如下:
# vi /database/panweidb/ptk/config.yaml
global:
cluster_name: "panweidb"
user: "omm"
group: "dbgrp"
db_password: "xxx"
db_port: 17700
base_dir: "/database/panweidb"
log_dir: "/database/panweidb/log/omm"
gs_initdb_opts:
- "--encoding=UTF-8"
- "--lc-collate=C"
- "--lc-ctype=C"
- "--dbcompatibility=PG"
ssh_option:
port: 22
user: omm
password: "xxx"
db_servers:
- host: 10.x.x.1
role: primary
az_name: "AZ1"
az_priority: 1
注意需要替换实际的ip地址,配置文件中的密码可以通过以下方式进行加密:
# ptk encrypt 'xxx'
三节点(一主两备)配置文件参考如下
# vi /database/panweidb/ptk/config.yaml
global:
cluster_name: "panweidb"
user: "omm"
group: "dbgrp"
db_password: "xxx"
db_port: 17700
base_dir: "/database/panweidb"
log_dir: "/database/panweidb/log/omm"
cm_option:
dir: "/database/panweidb/cm"
cm_server_port: 18800
cm_server_conf:
enable_ssl: off
cm_agent_conf:
enable_ssl: off
gs_initdb_opts:
- "--encoding=UTF-8"
- "--lc-collate=C"
- "--lc-ctype=C"
- "--dbcompatibility=PG"
ssh_option:
port: 22
user: omm
password: "xxx"
db_servers:
- host: 10.x.x.1
role: primary
az_name: "AZ1"
az_priority: 1
db_conf:
synchronous_standby_names: 'dn_6002'
- host: 10.x.x.2
role: standby
az_name: "AZ1"
az_priority: 1
db_conf:
synchronous_standby_names: 'dn_6001'
- host: 10.x.x.3
role: standby
az_name: "AZ1"
az_priority: 1
db_conf:
synchronous_standby_names: 'ANY 2(dn_6001,dn_6002)'
cm_servers:
- host: 10.x.x.1
port: 18800
role: ""
- host: 10.x.x.2
port: 18800
role: ""
- host: 10.x.x.3
port: 18800
role: ""
注意需要替换实际的ip地址,数据库兼容性只能一次设置后续不可更改,create database时也不允许设置dbcompatibility,需要提前确认好数据库兼容性。
5.授权
在所有节点执行如下操作:
# chown -R omm: /database/
# chmod 755 /database/
6.主节点使用omm用户安装数据库
$ cd /database/panweidb/ptk/
$ ./ptk install --file=/database/panweidb/ptk/config.yaml \
--skip-check-os --skip-check-distro --skip-create-user \
--pkg=/database/panweidb/soft/'PanWeiDB-2.0.0_Build0(03b85d1)-bclinux_euler21.10-x86_64-no_mot.tar'
如果需要卸载重装,卸载命令如下:
$ /database/panweidb/ptk/ptk uninstall --name=panweidb
7.动态库拷贝
在所有节点omm用户执行如下操作:
$ cd /database/panweidb/tool/script/
$ python3 -c "from gspylib.common.copy_python_lib import copy_lib;copy_lib()"
8.查看集群状态
$ gs_om -t status –detail
9.设置数据库参数
根据业务合理设置数据库参数
三、配置VIP
2.0支持通过回调脚本方式在主备切换场景下自动切换VIP。cm_agent在本地数据库角色发生切换为主库时,通过回调脚本或配置参数的形式,绑定VIP地址;当本节点数据库角色切换为备机时,主动解除VIP地址绑定。
1.配置omm用户的sudo权限
# visudo
尾部增加如下一行
omm ALL=(ALL:ALL) NOPASSWD:/sbin/ip,/usr/sbin/arping
注意:ip和arping命令需要结合实际操作系统路径进行修改
2.omm用户测试sudo权限
sudo ip addr add 10.x.x.x/24 brd 10.x.x.255 dev bond1 label bond1:1 sudo arping -q -A -c 1 -I bond1 10.x.x.x sudo ip addr del 10.x.x.x/24 dev bond1 label bond1:1
3.omm用户修改回调脚本
$ vi /database/panweidb/cm/cm_agent/cm_callback.sh
修改如下几处
VIP=10.x.x.x # vip 地址 VIPBRD=10.x.x.255 # 广播地址 VIPNETMASKBIT=24 # 掩码 VIPDEV=bond1 # 网络接口名称
设置权限
$ chmod u+x /database/panweidb/cm/cm_agent/cm_callback.sh
4.修改cm_agent.conf脚本
$ vi /database/panweidb/cm/cm_agent/cm_agent.conf
修改callback_bin_path变量:
callback_bin_path = /database/panweidb/cm/cm_agent/cm_callback.sh
5.重启集群进行验证
$ cm_ctl stop && cm_ctl start




