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

【磐维数据库】单节点多实例单机部署

Darcy 2024-04-28
1198

作者:lk

单节点多实例单机部署场景

近期公司考虑使用磐维数据库来替代原先的关系型数据库,领导安排测试。磐维具备多种兼容性模式(Oracle/Mysql/PG等),且同一实例下仅支持一种兼容性模式,所以在有限资源前提下,尝试单节点多实例,本文以单节点三实例为例进行示范。

一、操作系统环境配置

安装磐维数据库前需进行操作系统环境配置,主要包括:

  1. 配置/etc/hosts;
  2. 关闭透明大页;
  3. 防火墙设置;
  4. 配置/etc/hosts
  5. 关闭透明大页
  6. 防火墙设置
  7. SELINUX设置
  8. IPC参数设置
  9. 内核参数调整
  10. 时间同步配置
  11. 远程登录配置
  12. 设置网卡MTU值(可选)
  13. 创建用户与目录
    这里我们就要开始注意了
    同一节点三个实例必须区分用户和目录,所以我们创建了三个os用户和目录,以确保完全隔离。
兼容性 os用户 目录
oracle omm_oracle /database/panweidb_oracle
mysql omm_mysql /database/panweidb_mysql
pg omm_pg /database/panweidb_pg

创建目录与用户

  1. 修改资源限制
  2. IO 调度器
  3. 关闭THP
  4. 预装依赖
  5. 安装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

结尾,以确保数据库可被远程连接。

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

评论