作者:lk
单节点多实例单机部署场景
近期公司考虑使用磐维数据库来替代原先的关系型数据库,领导安排测试。磐维具备多种兼容性模式(Oracle/Mysql/PG等),且同一实例下仅支持一种兼容性模式,所以在有限资源前提下,尝试单节点多实例,本文以单节点三实例为例进行示范。
一、操作系统环境配置
安装磐维数据库前需进行操作系统环境配置,主要包括:
- 配置/etc/hosts;
- 关闭透明大页;
- 防火墙设置;
- 配置/etc/hosts
- 关闭透明大页
- 防火墙设置
- SELINUX设置
- IPC参数设置
- 内核参数调整
- 时间同步配置
- 远程登录配置
- 设置网卡MTU值(可选)
- 创建用户与目录
这里我们就要开始注意了
同一节点三个实例必须区分用户和目录,所以我们创建了三个os用户和目录,以确保完全隔离。
| 兼容性 | os用户 | 目录 |
|---|---|---|
| oracle | omm_oracle | /database/panweidb_oracle |
| mysql | omm_mysql | /database/panweidb_mysql |
| pg | omm_pg | /database/panweidb_pg |

- 修改资源限制
- IO 调度器
- 关闭THP
- 预装依赖
- 安装python
以上详细步骤见安装手册,这里就不过多赘述。
二、数据库安装
1.上传安装介质,解压安装。
cd /database/panweidb/soft mkdir Panweidb tar zxvf xxx.tar.gz -C Panweidb cd Panweidb tar -jxvf PanWeiDBxxx.tar.bz2 tar zxvf PanWeiDB-xxx-om.tar.gz
2.编写XML文件
正常步骤:新建XML配置文件:
vi /database/panweidb/soft/pw_config.xml
这里我们又要开始注意了
同一节点三个实例必须区分端口和目录,所以安装配置文件要分开编写,即三份XML文件。 下面我们分开创建三个配置文件:
(1)oracle兼容性实例
vi /database/panweidb_oracle/soft/pw_config.xml
写入如下内容:
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="panweidb_oracle" />
<PARAM name="nodeNames" value="pw202"/>
<PARAM name="gaussdbAppPath" value="/database/panweidb_oracle/app" />
<PARAM name="gaussdbLogPath" value="/database/panweidb_oracle/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb_oracle/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb_oracle/tool" />
<PARAM name="corePath" value="/database/panweidb_oracle/corefile"/>
<PARAM name="backIp1s" value="172.16.53.48"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="pw202">
<PARAM name="name" value="pw202"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="172.16.53.48"/>
<PARAM name="sshIp1" value="172.16.53.48"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/database/panweidb_oracle/data"/>
</DEVICE>
</DEVICELIST>
</ROOT>
(2) mysql兼容性实例
vi /database/panweidb_mysql/soft/pw_config.xml
写入如下内容:
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="panweidb_mysql" />
<PARAM name="nodeNames" value="pw202"/>
<PARAM name="gaussdbAppPath" value="/database/panweidb_mysql/app" />
<PARAM name="gaussdbLogPath" value="/database/panweidb_mysql/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb_mysql/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb_mysql/tool" />
<PARAM name="corePath" value="/database/panweidb_mysql/corefile"/>
<PARAM name="backIp1s" value="172.16.53.48"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="pw202">
<PARAM name="name" value="pw202"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="172.16.53.48"/>
<PARAM name="sshIp1" value="172.16.53.48"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15500"/>
<PARAM name="dataNode1" value="/database/panweidb_mysql/data"/>
</DEVICE>
</DEVICELIST>
</ROOT>
(3) pg兼容性实例
vi /database/panweidb_pg/soft/pw_config.xml
写入如下内容:
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="panweidb_pg" />
<PARAM name="nodeNames" value="pw202"/>
<PARAM name="gaussdbAppPath" value="/database/panweidb_pg/app" />
<PARAM name="gaussdbLogPath" value="/database/panweidb_pg/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb_pg/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb_pg/tool" />
<PARAM name="corePath" value="/database/panweidb_pg/corefile"/>
<PARAM name="backIp1s" value="172.16.53.48"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="pw202">
<PARAM name="name" value="pw202"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="172.16.53.48"/>
<PARAM name="sshIp1" value="172.16.53.48"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15600"/>
<PARAM name="dataNode1" value="/database/panweidb_pg/data"/>
</DEVICE>
</DEVICELIST>
</ROOT>
从三份文件中可以看出,主要的差别在集群名称(clusterName)、目录及端口。
3.安装
安装过程实际分为两部分,一是使用root用户进行预安装,第二是使用数据库用户安装。
(1)oracle兼容性实例
(a)预安装
进入安装目录,使用root用户执行预检查
cd /database/panweidb_oracle/soft/PanWeiDB/script ./gs_preinstall -U omm_oracle -G dbgrp -X /database/panweidb_oracle/soft/pw_config.xml
(b)数据库用户安装
su - omm_oracle
gs_install -X /database/panweidb_oracle/soft/pw_config.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--locale=en_US.UTF8" \
--gsinit-parameter="--lc-collate=en_US.UTF8" \
--gsinit-parameter="--lc-ctype=en_US.UTF8" \
--gsinit-parameter="--lc-messages=en_US.UTF8" \
--gsinit-parameter="--dbcompatibility=A" \
--dn-guc="max_process_memory=12GB"
–gsinit-parameter="–dbcompatibility=A" 通过这个参数设置oracle数据库兼容性模式。
–dn-guc=“max_process_memory=12GB” 最大可用内存一般设定为物理内存的60%-80%,但是若机器配置较低的情况下,且为虚拟机的情况下不建议设置低于8GB。
(2)mysql兼容性实例
(a)预安装
进入安装目录,使用root用户执行预检查
cd /database/panweidb_mysql/soft/PanWeiDB/script ./gs_preinstall -U omm_mysql -G dbgrp -X /database/panweidb_mysql/soft/pw_config.xml
(b)数据库用户安装
su - omm_mysql
gs_install -X /database/panweidb_mysql/soft/pw_config.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--locale=en_US.UTF8" \
--gsinit-parameter="--lc-collate=en_US.UTF8" \
--gsinit-parameter="--lc-ctype=en_US.UTF8" \
--gsinit-parameter="--lc-messages=en_US.UTF8" \
--gsinit-parameter="--dbcompatibility=B" \
--dn-guc="max_process_memory=12GB"
–gsinit-parameter="–dbcompatibility=B" 通过这个参数设置mysql数据库兼容性模式。
–dn-guc=“max_process_memory=12GB” 最大可用内存一般设定为物理内存的60%-80%,但是若机器配置较低的情况下,且为虚拟机的情况下不建议设置低于8GB。
(3)pg兼容性实例
(a)预安装
进入安装目录,使用root用户执行预检查
cd /database/panweidb_pg/soft/PanWeiDB/script ./gs_preinstall -U omm_pg -G dbgrp -X /database/panweidb_pg/soft/pw_config.xml
(b)数据库用户安装
su - omm_mysql
gs_install -X /database/panweidb_pg/soft/pw_config.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--locale=en_US.UTF8" \
--gsinit-parameter="--lc-collate=en_US.UTF8" \
--gsinit-parameter="--lc-ctype=en_US.UTF8" \
--gsinit-parameter="--lc-messages=en_US.UTF8" \
--gsinit-parameter="--dbcompatibility=PG" \
--dn-guc="max_process_memory=12GB"
–gsinit-parameter="–dbcompatibility=PG" 通过这个参数设置mysql数据库兼容性模式。
–dn-guc=“max_process_memory=12GB” 最大可用内存一般设定为物理内存的60%-80%,但是若机器配置较低的情况下,且为虚拟机的情况下不建议设置低于8GB。
4.查看节点状态
普通单节点单实例:
su - omm_oracle #以oracle兼容性实例为例 gs_om -t status --detail
这时出现问题了,我依次安装后只有mysql兼容性实例可以正常使用数据库管理工具(pw_ctl、pw_dump、psql)管理数据库,其他实例均管理工具均报错,报错内容大多为端口异常,且引用的工具路径也不正确。
其他两个实例均引用了mysql实例的配置,而MySQL兼容性实例是最后安装的,此时我意识到应该是环境变量的问题,而且还是系统级别的环境变量。
[root@pw202 ~]# cat /etc/profile
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`/usr/bin/id -u`
UID=`/usr/bin/id -ru`
fi
USER="`/usr/bin/id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
fi
HOSTNAME=`/usr/bin/hostnamectl --transient 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
if [ -n "${BASH_VERSION-}" ] ; then
if [ -f /etc/bashrc ] ; then
# Bash login shells run only /etc/profile
# Bash non-login shells run only /etc/bashrc
# Check for double sourcing is done in /etc/bashrc.
. /etc/bashrc
fi
fi
export PATH=$PATH:/root/gauss_om/omm_oracle/script
export PATH=$PATH:/root/gauss_om/omm_pg/script
export GPHOME=/database/panweidb_mysql/tool
export UNPACKPATH=/database/panweidb_mysql/soft/Panweidb
export PGDATA=/database/panweidb_mysql/data
export PGDATABASE=postgres
export PGPORT=15500
export PATH=$PATH:$GPHOME/script/gspylib/pssh/bin:$GPHOME/script
export LD_LIBRARY_PATH=$GPHOME/script/gspylib/clib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$GPHOME/lib
export PATH=$PATH:/root/gauss_om/omm_mysql/script
在数据库安装时,会把数据库用到的一些环境变量写入到系统的 /etc/profile文件中,而用户级别的环境变量会首先引用该文件,之后再加载用户级别的环境变量文件。
所以想要每个实例都正常使用,需要注释掉 /etc/profile 中的数据库环境变量,并把这些新增的数据库环境变量配置到对应的用户环境变量文件中:用户对应家目录的 .bash_profile文件。
vim /etc/profile
注释以下内容
#export PATH=$PATH:/root/gauss_om/omm_oracle/script
#export PATH=$PATH:/root/gauss_om/omm_pg/script
#export GPHOME=/database/panweidb_mysql/tool
#export UNPACKPATH=/database/panweidb_mysql/soft/Panweidb
#export PGDATA=/database/panweidb_mysql/data
#export PGDATABASE=postgres
#export PGPORT=15500
#export PATH=$PATH:$GPHOME/script/gspylib/pssh/bin:$GPHOME/script
#export LD_LIBRARY_PATH=$GPHOME/script/gspylib/clib:$LD_LIBRARY_PATH
#export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
#export PYTHONPATH=$GPHOME/lib
#export PATH=$PATH:/root/gauss_om/omm_mysql/script
(1)oracle兼容性实例
vim /home/omm_oracle/.bash_profile
写入以下内容
export GPHOME=/database/panweidb_oracle/tool
export UNPACKPATH=/database/panweidb_oracle/soft/Panweidb
export PGDATA=/database/panweidb_oracle/data
export PGDATABASE=postgres
export PGPORT=15400
export PATH=$PATH:$GPHOME/script/gspylib/pssh/bin:$GPHOME/script
export LD_LIBRARY_PATH=$GPHOME/script/gspylib/clib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$GPHOME/lib
export PATH=$PATH:/root/gauss_om/omm_oracle/script
(2)mysql兼容性实例
vim /home/omm_mysql/.bash_profile
写入以下内容
export GPHOME=/database/panweidb_mysql/tool
export UNPACKPATH=/database/panweidb_mysql/soft/Panweidb
export PGDATA=/database/panweidb_mysql/data
export PGDATABASE=postgres
export PGPORT=15500
export PATH=$PATH:$GPHOME/script/gspylib/pssh/bin:$GPHOME/script
export LD_LIBRARY_PATH=$GPHOME/script/gspylib/clib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$GPHOME/lib
export PATH=$PATH:/root/gauss_om/omm_mysql/script
(3)pg兼容性实例
vim /home/omm_pg/.bash_profile
写入以下内容
export GPHOME=/database/panweidb_pg/tool
export UNPACKPATH=/database/panweidb_pg/soft/Panweidb
export PGDATA=/database/panweidb_pg/data
export PGDATABASE=postgres
export PGPORT=15600
export PATH=$PATH:$GPHOME/script/gspylib/pssh/bin:$GPHOME/script
export LD_LIBRARY_PATH=$GPHOME/script/gspylib/clib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$GPHOME/lib
export PATH=$PATH:/root/gauss_om/omm_pg/script
三、多实例可用性验证
1、oracle兼容性实例
[omm_oracle@pw202 ~]$ pw_ctl query
[2024-04-26 19:44:45.915][2222790][][pw_ctl]: pw_ctl query ,datadir is /database/panweidb_oracle/data
HA state:
local_role : Normal
static_connections : 0
db_state : Normal
detail_information : Normal
Senders info:
No information
Receiver info:
No information
[omm_oracle@pw202 ~]$ psql -r
psql ((PanWeiDB_V2.0-S2.0.2_B01) compiled at 2024-03-29 20:29:01 commit 2b900fc )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=#
正常
2、mysql兼容性实例
[root@pw202 ~]# su - omm_mysql
Last login: Fri Apr 26 15:52:47 CST 2024 on pts/0
[omm_mysql@pw202 ~]$ pw_ctl query
[2024-04-26 19:51:11.251][2223671][][pw_ctl]: pw_ctl query ,datadir is /database/panweidb_mysql/data
HA state:
local_role : Normal
static_connections : 0
db_state : Normal
detail_information : Normal
Senders info:
No information
Receiver info:
No information
[omm_mysql@pw202 ~]$ psql -r
psql ((PanWeiDB_V2.0-S2.0.2_B01) compiled at 2024-03-29 20:29:01 commit 2b900fc )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=#
正常
3、oracle兼容性实例
[root@pw202 ~]# su - omm_pg
Last login: Tue Apr 23 15:54:01 CST 2024 on pts/2
[omm_pg@pw202 ~]$ pw_ctl query
[2024-04-26 19:52:59.305][2223934][][pw_ctl]: pw_ctl query ,datadir is /database/panweidb_pg/data
HA state:
local_role : Normal
static_connections : 0
db_state : Normal
detail_information : Normal
Senders info:
No information
Receiver info:
No information
[omm_pg@pw202 ~]$ psql -r
psql ((PanWeiDB_V2.0-S2.0.2_B01) compiled at 2024-03-29 20:29:01 commit 2b900fc )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=#
正常
最后还需注意,修改每个实例数据目录下的pg_hba.conf文件,是否以
host all all 0.0.0.0/0 md5
结尾,以确保数据库可被远程连接。




