0 說明
業務科室提單需要在某臺主機上部署多個單機磐維數據庫,用于業務測試。以下內容展示如何在單節點安裝多個磐維數據庫實例。
1 部署環境準備
1.1 IP 地址及端口
inst | ip | port |
---|---|---|
實例1 | 192.168.131.17 | 17700 |
實例2 | 192.168.131.17 | 27700 |
在131.17上分別安裝兩個實例,端口號需要不一致。
1.2 文件規劃存放
inst | 安裝目錄 | 數據文件目錄 | 日志目錄 | 臨時文件目錄 | 工具目錄 | core文件目錄 |
---|---|---|---|---|---|---|
實例1 | /data/database1/panweidb/app | /data/database1/panweidb/data | /data/database1/panweidb/log | /data/database1/panweidb/tmp | /data/database1/panweidb/tool | /data/database1/panweidb/corefile |
實例2 | /data/database2/panweidb/app | /data/database2/panweidb/data | /data/database2/panweidb/log | /data/database2/panweidb/tmp | /data/database2/panweidb/tool | /data/database2/panweidb/corefile |
統一安裝在/data目錄下。
1.3 用戶和組
inst | 用戶名 | 用戶id | 組名 | 組id |
---|---|---|---|---|
實例1 | omm1 | 1101 | dbgrp | 1101 |
實例2 | omm2 | 1102 | dbgrp | 1101 |
用戶不同,同組。
2 操作系統及平臺要求
配置肯定是越大越好。
2.1 操作系統環境和平臺信息
測試環境要求cpu起碼2核。
[root@pwdb310 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)[root@pwdb310 ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 154
Model name: 12th Gen Intel(R) Core(TM) i5-12500H
Stepping: 3
CPU MHz: 3110.403
BogoMIPS: 6220.80
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 48K
L1i cache: 32K
L2 cache: 1280K
L3 cache: 18432K
NUMA node0 CPU(s): 0,1
cpu是2*2,操作系統版本centos7.6。
2.2 硬件環境要求
測試環境內存建議4G以上,磁盤空間100G,千兆網。
# 內存
[root@pwdb310 ~]# freetotal used free shared buff/cache available
Mem: 3861508 127732 3553232 11804 180544 3496832
Swap: 4194300 0 4194300# 磁盤
[root@pwdb310 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 15G 11G 4.2G 73% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 24K 3.9G 1% /dev/shm
tmpfs 3.9G 12M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 197M 124M 74M 63% /boot
tmpfs 781M 0 781M 0% /run/user/0# 網卡
[root@pwdb310 ~]# ethtool ens33 | grep SpeedSpeed: 1000Mb/s
2.2 軟件環境要求
需要注意的是要有python3,版本3.6以上,不可以編譯安裝,否則數據庫預安裝會失敗。
2.3 軟件依賴
需要安裝的依賴包:
BCLinux-for-Euler-21.10操作系統TF定制版安裝libnsl軟件會導致系統崩潰,詳見生產環境安裝磐維數據庫 panweidb 一裝就崩
2.4 文件系統環境要求
文件系統環境所要求的扇區必須為 512bytes,查看方法如下:
[root@pwdb310 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 15G 0 lvm /└─centos-swap 253:1 0 4G 0 lvm [SWAP]
sr0 11:0 1 4.3G 0 rom
[root@pwdb310 ~]#
[root@pwdb310 ~]#
[root@pwdb310 ~]# ll /dev/mapper/centos-root
lrwxrwxrwx 1 root root 7 Jul 1 10:52 /dev/mapper/centos-root -> ../dm-0
[root@pwdb310 ~]#
[root@pwdb310 ~]# fdisk -l /dev/dm-0 Disk /dev/dm-0: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
3 數據庫部署準備
3.1 環境準備
3.1.1 IP 地址及端口
inst | ip | port |
---|---|---|
實例1 | 192.168.131.17 | 17700 |
實例2 | 192.168.131.17 | 27700 |
3.1.2 文件規劃存放
inst | 安裝目錄 | 數據文件目錄 | 日志目錄 | 臨時文件目錄 | 工具目錄 | core文件目錄 |
---|---|---|---|---|---|---|
實例1 | /data/database1/panweidb/app | /data/database1/panweidb/data | /data/database1/panweidb/log | /data/database1/panweidb/tmp | /data/database1/panweidb/tool | /data/database1/panweidb/corefile |
實例2 | /data/database2/panweidb/app | /data/database2/panweidb/data | /data/database2/panweidb/log | /data/database2/panweidb/tmp | /data/database2/panweidb/tool | /data/database2/panweidb/corefile |
3.2 系統和環境配置
3.2.1 允許root 權限登錄
檢查主機的 sshd_config 文件內 PermitRootLogin 是否為 yes,如果不是,需要修改為 yes,并重啟 sshd 服務:
# cat /etc/ssh/sshd_config | grep PermitRootLogin
PermitRootLogin yes# 重啟 sshd 服務
systemctl restart sshd
3.2.2 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
3.2.3 selinux配置
setenforce 0
getenforcevi /etc/selinux/config
將 SELINUX=enforcing 修改為 SELINUX=disabled
3.2.4 時區
timedatectl
3.2.5 系統內核參數配置
內存:
[root@pwdb310 ~]# freetotal used free shared buff/cache available
Mem: 3861508 127732 3553232 11804 180544 3496832
Swap: 4194300 0 4194300[root@pwdb310 ~]# getconf PAGE_SIZE
4096
根據內存,設置以下參數:
- kernel.shmall : 3861508*0.8/4096 = 754
- kernel.shmmax : 3861508/2 = 1930754
- kernel.shmmni : 4096
- vm.dirty_background_bytes : 409600000
查看信號量:
[root@pwdb310 ~]# ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128(對應 SEMMNI )
max semaphores per array = 250(對應 SEMMSL )
max semaphores system wide = 32000(對應 SEMMNS )
max ops per semop call = 32(對應 SEMOPM )
根據信號量設置:
- kernel.sem = 250 32000 250 128
該參數包含 4 個參數,排序為 SEMMSL,SEMMNS,SEMOPM,SEMMNI
3.2.5 系統字符集
echo "export LANG=en_US.UTF-8" >> .bash_profile
. .bash_profile
3.2.6 關閉透明大頁
使用 root 用戶,通過配置如下系統服務實現永久關閉透明大頁的目的:
vi /etc/systemd/system/disable-thp.service
#添加以下配置
[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
[Install]
WantedBy=multi-user.target
修改完成后,執行如下命令加載系統服務,并設置開機自啟動:
systemctl daemon-reload
systemctl start disable-thp
systemctl enable disable-thp
查看 THP 狀態,當返回結果均為 always madvise [never]時表示成功設置透明大頁永久關閉:
[root@pwdb310 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@pwdb310 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
3.2.7 IPC 參數配置
當 RemoveIPC=yes 時,操作系統會在用戶退出時,刪除該用戶的 IPC 資源(共享內存段和信號量),從而使得 PanWeiDB 服務器使用的 IPC 資源被清理,可能引發數據庫宕機,所以需要設置 RemoveIPC 參數為 no。
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service
重新加載配置參數:
systemctl daemon-reload
systemctl restart systemd-logind
檢查修改是否生效,由于 CentOS 操作系統環境的 removeIPC 默認為關閉,則執行如下語句是無返回結果的:
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC
3.2.8 安裝數據庫依賴
檢查依賴情況:
rpm -q libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel python3 expect* bzip2 libnsl gcc gcc-c++ zlib-devel ncurses-devel expect bzip2 gcc
將缺的包安裝:
yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel python3 expect* bzip2 libnsl gcc gcc-c++ zlib-devel ncurses-devel expect bzip2 gcc
BCLinux-for-Euler-21.10操作系統TF定制版安裝libnsl軟件會導致系統崩潰,詳見生產環境安裝磐維數據庫 panweidb 一裝就崩
3.2.9 python3版本
[root@pwdb310 ~]# python3 --version
Python 3.6.8
3.2.10 配置ip主機名映射
vi /etc/hosts
192.168.131.17 pwdb310
4 實例1安裝
4.1 創建用戶與用戶組
創建dbgrp組和omm1用戶,并修改密碼:
groupadd -g 1101 dbgrp
useradd -g dbgrp -u 1101 -m omm1
passwd omm1
4.2 創建安裝目錄
創建安裝目錄,歸檔目錄和審計目錄:
mkdir -p /data/database1/panweidb
mkdir -p /data/database1/panweidb/archive
mkdir -p /data/database1/panweidb/pg_audit
4.3 上傳解壓安裝包
上傳安裝包到soft目錄下:
mkdir -p /data/database1/panweidb/soft
ls -lrt /data/database1/panweidb/soft
PanWeiDB_V2.0-S3.1.0_B01-install-centos_7-x86_64-no_mot.tar.gz
解壓數據庫安裝包:
tar -zxvf PanWeiDB_V2.0-S3.1.0_B01-install-centos_7-x86_64-no_mot.tar.gz
解壓OM(Operation Manager操作管理器 )安裝包:
tar -zxvf PanWeiDB_V2.0-S3.1.0_B01-CentOS-64bit-om.tar.gz
4.4 配置 XML 文件
根據部署需求配置 cluster_config.xml 文件,拷貝模板文件:
cp /data/database1/panweidb/soft/script/gspylib/etc/conf/cluster_config_template.xml /data/database1/panweidb/soft/cluster_config.xml
配置編輯:
vi /data/database1/panweidb/soft/cluster_config.xml
實例1配置:
<?xml version="1.0" encoding="utf-8"?>
<ROOT><CLUSTER><PARAM name="clusterName" value="pwdb310a" /><PARAM name="nodeNames" value="pwdb310"/><PARAM name="gaussdbAppPath" value="/data/database1/panweidb/app" /><PARAM name="gaussdbLogPath" value="/data/database1/panweidb/log" /><PARAM name="tmpMppdbPath" value="/data/database1/panweidb/tmp"/><PARAM name="gaussdbToolPath" value="/data/database1/panweidb/tool"/><PARAM name="corePath" value="/data/database1/panweidb/corefile"/><PARAM name="backIp1s" value="192.168.131.17"/></CLUSTER><DEVICELIST><DEVICE sn="pwdb310"><PARAM name="name" value="pwdb310"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.131.17"/><PARAM name="sshIp1" value="192.168.131.17"/><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="17700"/><PARAM name="dataNode1" value="/data/database1/panweidb/data"/></DEVICE></DEVICELIST>
</ROOT>
4.5 預安裝
root用戶執行預安裝腳本 gs_preinstall 可以協助自動完成如下的安裝環境準備工作:
- 自動設置 Linux 內核參數以達到提高服務器負載能力的目的。這些參數直
- 接影響數據庫系統的運行狀態,請僅在確認必要時調整。
- 自動將 XML 配置文件、安裝包拷貝到其他主機的相同目錄下,安裝用戶和- 用戶組不存在時,自動創建安裝用戶以及用戶組。
- 讀取 XML 配置文件中的目錄信息并創建,將目錄權限授予安裝用戶。
使用 root 用戶為安裝目錄授權:
chown -R omm1:dbgrp /data/database1/panweidb
chmod -R 755 /data/database1/panweidb
root執行 gs_preinstall 預安裝腳本:
cd /data/database1/panweidb/soft/script/
./gs_preinstall -U omm1 -G dbgrp -X ../cluster_config.xml --sep-env-file=/home/omm1/pwdb310a.env
指定用戶和組,并把環境變量輸出到pwdb310a.env。
4.5 執行安裝腳本
切換到安裝用戶 omm1,并加載環境變量:
su - omm1
cat pwdb310a.env >> .bash_profile
source .bash_profile
運行安裝腳本:
gs_install -X /data/database1/panweidb/soft/cluster_config.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--lc-collate=C" \
--gsinit-parameter="--lc-ctype=C" \
--gsinit-parameter="--dbcompatibility=B"
中途需要輸入一次集群密碼,需要符合8位3種字符規則。
安裝成功,但是實例啟動失敗:
[GAUSS-51607] : Failed to start instance. Error: Please check the gs_ctl log for failure details.
2025-06-30 03:02:56.233 68618de0.1 [unknown] 139926357943104 [unknown] 0 dn_6001 42809 0 [BACKEND] FATAL: the values of memory out of limit, the database failed to be started, max_process_memory (3072MB) must greater than 2GB + cstore_buffers(512MB) + (udf_memory_limit(200MB) - UDF_DEFAULT_MEMORY(200MB)) + shared_buffers(716MB) + preserved memory(3166MB) = 6442MB, reduce the value of shared_buffers, max_pred_locks_per_transaction, max_connection, wal_buffers..etc will help reduce the size of preserved memory
進入數據路徑下,編輯參數文件,將max_process_memory 參數改到符合上述要求:
[omm1@pwdb310 data]$ grep max_process_memory postgresql.conf
max_process_memory = 6.5GB
重新啟動實例1:
[omm1@pwdb310 data]$ gs_ctl start -D /data/database1/panweidb/data
...
.
[2025-07-01 13:45:52.728][28726][][gs_ctl]: done
[2025-07-01 13:45:52.728][28726][][gs_ctl]: server started (/data/database1/panweidb/data)
4.6 查看實例狀態
[omm1@pwdb310 data]$ gs_ctl status
[2025-07-01 13:46:33.344][28882][][gs_ctl]: gs_ctl status,datadir is /data/database1/panweidb/data
gs_ctl: server is running (PID: 28729)
/data/database1/panweidb/app/bin/panweidb "-D" "/data/database1/panweidb/data"
5 實例2安裝
安裝好實例1,后面的實例2其實就簡單了,省去了環境配置步驟,從XML文件配置開始操作。
主要與實例1的區分用戶名和安裝目錄,用omm2操作安裝數據庫,部署在database2目錄下。
5.1 創建用戶與用戶組
創建omm2用戶,并修改密碼:
useradd -g dbgrp -u 1102 -m omm2
passwd omm2
組和omm1用戶相同。
5.2 創建安裝目錄
mkdir -p /data/database2/panweidb
mkdir -p /data/database2/panweidb/archive
mkdir -p /data/database2/panweidb/pg_audit
mkdir -p /data/database2/panweidb/soft
5.3 上傳解壓安裝包
從實例1目錄下拷貝安裝包過來:
cp /data/database2/panweidb/soft/script/gspylib/etc/conf/cluster_config_template.xml /data/database2/panweidb/soft/cluster_config.xmlls -lrt /data/database2/panweidb/soft
PanWeiDB_V2.0-S3.1.0_B01-install-centos_7-x86_64-no_mot.tar.gz
解壓數據庫安裝包:
tar -zxvf PanWeiDB_V2.0-S3.1.0_B01-install-centos_7-x86_64-no_mot.tar.gz
解壓OM(Operation Manager操作管理器 )安裝包:
tar -zxvf PanWeiDB_V2.0-S3.1.0_B01-CentOS-64bit-om.tar.gz
5.4 配置 XML 文件
根據部署需求配置 cluster_config.xml 文件,拷貝模板文件:
cp /data/database2/panweidb/soft/script/gspylib/etc/conf/cluster_config_template.xml /data/database2/panweidb/soft/cluster_config.xml
配置編輯:
vi /data/database2/panweidb/soft/cluster_config.xml
實例1配置:
<?xml version="1.0" encoding="utf-8"?>
<ROOT><CLUSTER><PARAM name="clusterName" value="pwdb310b" /><PARAM name="nodeNames" value="pwdb310"/><PARAM name="gaussdbAppPath" value="/data/database2/panweidb/app" /><PARAM name="gaussdbLogPath" value="/data/database2/panweidb/log" /><PARAM name="tmpMppdbPath" value="/data/database2/panweidb/tmp"/><PARAM name="gaussdbToolPath" value="/data/database2/panweidb/tool"/><PARAM name="corePath" value="/data/database2/panweidb/corefile"/><PARAM name="backIp1s" value="192.168.131.17"/></CLUSTER><DEVICELIST><DEVICE sn="pwdb310"><PARAM name="name" value="pwdb310"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.131.17"/><PARAM name="sshIp1" value="192.168.131.17"/><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="27700"/><PARAM name="dataNode1" value="/data/database2/panweidb/data"/></DEVICE></DEVICELIST>
</ROOT>
5.5 預安裝
root用戶執行預安裝腳本 gs_preinstall 可以協助自動完成如下的安裝環境準備工作:
- 自動設置 Linux 內核參數以達到提高服務器負載能力的目的。這些參數直
- 接影響數據庫系統的運行狀態,請僅在確認必要時調整。
- 自動將 XML 配置文件、安裝包拷貝到其他主機的相同目錄下,安裝用戶和- 用戶組不存在時,自動創建安裝用戶以及用戶組。
- 讀取 XML 配置文件中的目錄信息并創建,將目錄權限授予安裝用戶。
使用 root 用戶為安裝目錄授權:
chown -R omm2:dbgrp /data/database2/panweidb
chmod -R 755 /data/database2/panweidb
root執行 gs_preinstall 預安裝腳本:
cd /data/database2/panweidb/soft/script/
./gs_preinstall -U omm2 -G dbgrp -X ../cluster_config.xml --sep-env-file=/home/omm2/pwdb310b.env
5.5 執行安裝腳本
切換到安裝用戶 omm2,并加載環境變量:
su - omm2
cat pwdb310b.env >> .bash_profile
source .bash_profile
運行安裝腳本:
gs_install -X /data/database2/panweidb/soft/cluster_config.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--lc-collate=C" \
--gsinit-parameter="--lc-ctype=C" \
--gsinit-parameter="--dbcompatibility=B"
中途需要輸入一次集群密碼,需要符合8位3種字符規則。
安裝成功,但是實例啟動失敗,處理辦法和實例1一樣:
略過。
重新啟動實例2:
[omm2@pwdb310 data]$ gs_ctl start -D /data/database2/panweidb/data
...
.
[2025-07-01 15:18:25.683][42080][][gs_ctl]: done
[2025-07-01 15:18:25.683][42080][][gs_ctl]: server started (/data/database2/panweidb/data)
5.6 查看實例狀態
[omm2@pwdb310 ~]$ gs_ctl status
[2025-07-01 15:18:48.687][42156][][gs_ctl]: gs_ctl status,datadir is /data/database2/panweidb/data
gs_ctl: server is running (PID: 42083)
/data/database2/panweidb/app/bin/panweidb "-D" "/data/database2/panweidb/data"
6 多實例區分
6.1 目錄結構
數據庫路徑分別對應database1和database2:
6.2 進程和端口
數據庫進程:
數據庫端口:
7 總結
磐維數據庫單機多實例安裝還是非常簡單的,只需要做好用戶和安裝目錄的區分即可。通過上述步驟,已在單節點主機131.17成功部署兩個磐維數據庫實例。實例 1 與實例 2 通過不同端口(17700/27700)、獨立用戶(omm1/omm2)及隔離目錄結構實現區分,確保了資源隔離與服務獨立性。