ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

磐维数据库 Docker 容器化部署

磐维数据库 Docker 容器化部署 文章目录一、容器准备二、安装磐维数据库单节点1、安装前准备2、正式安装3、连接和使用1gsql2DBeaver一、容器准备使用的 Docker 容器信息操作系统openEuler 24.03 (LTS-SP3)CPU 架构x86_64AMD6464 位CPU 型号AMD Ryzen 9 7945HX with Radeon GraphicsCPU 配额4 个 CPU内存8 GiBopeneuler-systemd24.03-lts-sp3镜像下载链接https://caiyun.139.com/w/i/2xTrGM6xURgdr提取码lw3x。启动容器dockerrun-d--privileged--cpus4--memory8g--hostnamepanweidb01 --add-hostpanweidb01:127.0.0.1-p17700:17700-p17701:17701-p5432:5432-p2222:22--namePanWeiDB_V3.0_S3.5.0_B02 openeuler-systemd:24.03-lts-sp3 /usr/sbin/init这里数据没有挂载到本地。进入容器dockerexec-itPanWeiDB_V3.0_S3.5.0_B02 /bin/bash容器其他操作命令# 启动已存在的容器dockerstart PanWeiDB_V3.0_S3.5.0_B02# 停止容器dockerstop PanWeiDB_V3.0_S3.5.0_B02# 重启容器stopstart合并dockerrestart PanWeiDB_V3.0_S3.5.0_B02二、安装磐维数据库单节点1、安装前准备本节操作均为 root 用户执行。第三方依赖包安装dnfinstall-yzlib-devel libaio libuuid readline-devel krb5-libs libicu libxslt tcl perl openldap pam openssl-devel libxml2bzip2iputilspasswdshadow-utils coreutilshostnameopenssh-server openssh-clients cronie initscriptsethtoolnet-tools iproute iptables util-linux procps binutils chrony防火墙配置[rootpanweidb01 /]# firewall-cmd --statebash: firewall-cmd:commandnot found容器内部没有防火墙无需执行关闭防火墙操作。关闭透明大页[rootpanweidb01 /]# cat /sys/kernel/mm/transparent_hugepage/enabledalways madvise[never][rootpanweidb01 /]# cat /sys/kernel/mm/transparent_hugepage/defragalways defer defermadvise madvise[never]两项配置都是never透明大页已默认永久关闭满足预安装脚本校验标准无需修改。时区配置[rootpanweidb01 /]# timedatectlLocal time: Tue2026-09-2213:31:23 UTC Universal time: Tue2026-09-2213:31:23 UTC RTC time: n/a Time zone: UTC(UTC, 0000)System clock synchronized:yesNTP service: inactive RTCinlocalTZ: no需要进行以下调整# 创建软链接把系统内置上海东八区时区数据库文件挂载到 /etc/localtime# 系统读取时区时会自动读取这个链接指向的上海时区配置完成全局时区切换为 CST 东八区rm-f/etc/localtime# 删除原有时区软链接防止旧时区冲突ln-s/usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 设置系统时区为上海CST 东八区timedatectl# 查看时间、时区状态仅查看不修改# 启用 NTP 同步服务systemctl start chronyd# 启动服务并开机自启systemctlenablechronyd# 开启自动 NTP 同步timedatectl set-ntptrue# 修复时钟同步手动强制同步时间# 查看当前时钟同步状态查看命令无修改chronyc tracking# 查看 NTP 时间源查看命令无修改chronyc sources# 强制立刻跳变同步时间如果容器时间和 NTP 差距很大一次性校正时间chronyc makestep验证[rootpanweidb01 /]# timedatectlLocal time: Tue2026-09-2221:33:58 CST Universal time: Tue2026-09-2213:33:58 UTC RTC time: n/a Time zone: Asia/Shanghai(CST, 0800)System clock synchronized:yesNTP service: active RTCinlocalTZ: no逐项核对要求时区本地时间后缀 CST符合要求Time zone: Asia/Shanghai (CST, 0800)NTP 服务active时间同步服务正常运行符合要求NTP service: active系统时钟同步yes系统时间已和 NTP 服务器同步符合要求System clock synchronized: yesRTC time: n/aDocker 容器无硬件时钟该输出属于正常现象无需关注IPC 参数配置进入 /etc/systemd/logind.conf 文件将RemoveIPCno取消注释若没有则新增# 验证cat/etc/systemd/logind.conf|grepRemoveIPC进入 /usr/lib/systemd/system/systemd-logind.service 文件新增配置RemoveIPCno# 验证cat/usr/lib/systemd/system/systemd-logind.service|grepRemoveIPC重新加载配置参数systemctl daemon-reload systemctl restart systemd-logind验证配置是否生效两条命令都返回RemoveIPCno代表配置成功# 查看运行会话配置loginctl show-session|grepRemoveIPC# 查看systemd-logind服务参数systemctl show systemd-logind|grepRemoveIPC内核参数配置根据容器配置--memory8g总内存 8GB下面所有参数基于 8G 内存计算可以把手册和环境信息发给豆包生成适合的配置编辑配置文件vi/etc/sysctl.conf把下面全部内容追加到文件末尾适配 8Gfs.aio-max-nr1048576fs.file-max76724600fs.nr_open20480000kernel.sem4096320004096128kernel.shmall1677722net.core.somaxconn4096net.ipv4.tcp_fin_timeout5net.ipv4.ip_local_port_range4000065535vm.dirty_background_bytes409600000vm.dirty_expire_centisecs3000vm.dirty_ratio80vm.dirty_writeback_centisecs50vm.overcommit_memory0vm.swappiness0保存退出:wq重载生效确认执行无报错即全部加载成功sysctl-p校验关键参数是否生效sysctlkernel.shmall kernel.shmmax kernel.shmmni kernel.sem vm.overcommit_memory vm.swappiness# 预期输出kernel.shmall1677722kernel.shmmax4294967296kernel.shmmni4096kernel.sem4096320004096128vm.overcommit_memory0vm.swappiness0配套 limits 配置内核参数配置完成后配置 omm 用户资源限制否则数据库启动报打开文件数、进程数不足vi/etc/security/limits.conf末尾添加omm soft nofile1048576omm hard nofile1048576omm soft nproc unlimited omm hard nproc unlimited omm soft stack unlimited omm hard stack unlimited确保登录加载 pam limitsechosession required pam_limits.so/etc/pam.d/login验证 limits 生效退出当前容器会话重新进入exitdockerexec-itPanWeiDB_V3.0_S3.5.0 /bin/bash切换 omm 用户校验后面再验证这里还没有创建 omm 用户su - omm ulimit -n ulimit -u预期输出ulimit -n1048576ulimit -uunlimitedSELinux 配置检查当前 SELinux 状态getenforce返回 Disabled 代表 SELinux 完全关闭符合安装规范不会拦截文件、共享内存、端口权限[rootpanweidb01 /]# getenforceDisabled启动 sshd 并设置开机自启systemctl start sshd systemctlenablesshd验证输出active (running)即正常systemctl status sshd[rootpanweidb01 /]# systemctl status sshd● sshd.service - OpenSSH server daemon Loaded: loaded(/usr/lib/systemd/system/sshd.service;enabled;preset: enabled)Active: active(running)since Tue2026-09-2221:46:36 CST;12s ago Docs: man:sshd(8)man:sshd_config(5)Main PID:761(sshd)Tasks:1(limit:49708)Memory:1.4M(peak:1.4M)CPU: 6ms CGroup: /system.slice/sshd.service └─761sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startupsSep2221:46:36 panweidb01(sshd)[761]: sshd.service: Referenced butunsetenvironment variable evaluates to an empty string: OPTIONS Sep2221:46:36 panweidb01 systemd[1]: Starting OpenSSH server daemon... Sep2221:46:36 panweidb01 sshd[761]: Server listening on0.0.0.0 port22. Sep2221:46:36 panweidb01 sshd[761]: Server listening on :: port22. Sep2221:46:36 panweidb01 systemd[1]: Started OpenSSH server daemon.[rootpanweidb01 script]#设置主机名在创建并启动容器的时候已经配置了主机名和 hosts 映射测试解析是否正常能正常 ping 通代表配置生效满足磐维数据库校验要求pingpanweidb01-c22、正式安装root 用户执行创建用户和用户组修改 omm 用户密码groupadd-g1101dbgrpuseradd-gdbgrp-u1101-mommpasswdommroot 用户执行创建数据库目录mkdir-p/database/panweidbmkdir-p/database/panweidb/archivemkdir-p/database/panweidb/pg_auditmkdir-p/database/panweidb/soft新开一个 PowerShell 窗口上传安装包将本地的安装包拷贝到容器的 /database/panweidb/soft/ 路径下dockercpPanWeiDB_V3.0-S3.5.0_B02-install-Linux-x86_64.tar.gz PanWeiDB_V3.0_S3.5.0_B02:/database/panweidb/soft/在容器内验证文件是否存在ls/database/panweidb/soft校验安装包是否完整# 容器内[rootpanweidb01 soft]# md5sum PanWeiDB_V3.0-S3.5.0_B02-install-Linux-x86_64.tar.gz0324aaa7a47c57221f885afa861f0385 PanWeiDB_V3.0-S3.5.0_B02-install-Linux-x86_64.tar.gz# 本地PS X:\磐维数据库容器化部署Get-FileHash .\PanWeiDB_V3.0-S3.5.0_B02-install-Linux-x86_64.tar.gz-AlgorithmMD5 Algorithm Hash Path --------- ---- ---- MD5 0324AAA7A47C57221F885AFA861F0385 X:\磐维数据库容器化部署\PanWe...root 用户执行容器内解压安装包解压后得到的主要文件包括数据库安装包、OM 工具安装包、CM 安装包tar-zxvfPanWeiDB_V3.0-S3.5.0_B02-install-Linux-x86_64.tar.gzroot 用户执行解压 OM 安装包会在当前目录下生成 script 子目录tar-zxvfPanWeiDB_V3.0-S3.5.0_B02-Linux-64bit-om.tar.gzroot 用户执行在 /database/panweidb/soft/ 路径下创建 XML 文件vicluster_config.xml注意主机名要对应 xml 配置文件中的 nodeNames 以及 name 参数。?xml version1.0 encodingutf-8?ROOTCLUSTERPARAMnameclusterNamevaluepanweidb/PARAMnamenodeNamesvaluepanweidb01/PARAMnamegaussdbAppPathvalue/database/panweidb/app/PARAMnamegaussdbLogPathvalue/database/panweidb/log/PARAMnametmpMppdbPathvalue/database/panweidb/tmp/PARAMnamegaussdbToolPathvalue/database/panweidb/tool/PARAMnamecorePathvalue/database/panweidb/corefile/PARAMnamebackIp1svalue127.0.0.1//CLUSTERDEVICELISTDEVICEsn1PARAMnamenamevaluepanweidb01/PARAMnameazNamevalueAZ1/PARAMnameazPriorityvalue1/PARAMnamebackIp1value127.0.0.1/PARAMnamesshIp1value127.0.0.1/PARAMnamedataNumvalue1/PARAMnamedataPortBasevalue17700/PARAMnamedataNode1value/database/panweidb/data//DEVICE/DEVICELIST/ROOTroot 用户执行为安装目录赋权chown-Romm:dbgrp /databasechmod-R755/database注意赋权命令要到 /database。进入 /database/panweidb/soft/script 路径cd/database/panweidb/soft/scriptroot 用户执行预安装命令./gs_preinstall-Uomm-Gdbgrp-X../cluster_config.xml在预安装的时候需要根据提示选择是否为 omm 用户创建互信单机部署可以选 no跳过 ssh。Are you sure you want to create the user[omm](yes/no)? no预安装成功提示信息如下Preinstallation succeeded.omm 用户执行安装命令不限制在哪个路径下执行su- omm gs_install-X/database/panweidb/soft/cluster_config.xml --dn-gucmax_process_memory8GB--gsinit-parameter--encodingUTF8--gsinit-parameter--lc-collateC--gsinit-parameter--lc-ctypeC--gsinit-parameter--dbcompatibilityB启动 Docker 容器时给容器分配总内存是 8G这里安装时将数据库设置为max_process_memory8GB必须要大于数据库的最低要求内存 7.2GB同时还不能设置为小数只能是整数所以设置为了 8GB刚好匹配容器总内存因为容器的系统后台进程占用极少不会 OOM可以根据需要选择兼容模式这里为 B 兼容模式即 MySQL 兼容模式字符集参数UTF8、C统一字符排序规避中文排序、大小写匹配异常。安装成功提示信息如下Configuring pg_hba on all nodes. Configuration is completed. The cluster status is Normal. Successfully started cluster. Successfully installed application. end deploy..完成安装流程后数据库节点会自动生成为期 90 天的临时 Licenseomm 用户执行以下命令可查看临时 License 的详细信息pw_licensetool --view-temporary[ommpanweidb01 ~]$ pw_licensetool --view-temporary license info: Customer:temporary license, Begins On:2026-09-22 22:10:23, Expires On:2026-12-21 22:10:23, MAC:, Model:PanWeiDBomm 用户执行数据库管理的一些命令如下# 查看数据库状态pw_ctl status# 启动数据库pw_ctl start# 停止数据库pw_ctl stop# 重启数据库pw_ctl restart查看集群状态这里是单节点gs_om-tstatus--detail[ommpanweidb01 ~]$ gs_om-tstatus--detail[Cluster State]cluster_state:Normal redistributing:No current_az:AZ_ALL[Datanode State]nodenode_ip port instance state ---------------------------------------------------------------------------------------------1panweidb01127.0.0.1177006001/database/panweidb/data P Primary Normal3、连接和使用1gsqlgsql-rgsql-dpostgres-p17700查看数据库版本postgres# select pw_version();pw_version-------------------------------------------------------------------------------------(PanWeiDB_V3.0-S3.5.0_B02Release)compiled at2026-08-1812:34:17commit1608d91product name:PanWeiDBversion:V3.0-S3.5.0_B02Releasecommit:1608d91openGauss version:6.0.0host:x86_64-pc-linux-gnusupport module:BASIC(1row)如果要让所有节点都能远程访问连接到磐维数据库需要修改两个关键配置文件postgresql.conf监听地址和pg_hba.conf客户端认证## postgresql.conf监听地址vi/database/panweidb/data/postgresql.conf# 找到或添加以下参数* 表示监听所有网络接口所有IP地址如果只想监听特定IP可写为 192.168.1.7,10.11.12.13多个IP用逗号分隔listen_addresses*## pg_hba.conf客户端认证vi/database/panweidb/data/pg_hba.conf# 在文件末尾添加以下内容允许所有IP通过所有数据库、所有用户连接认证方式为sha256hostall all0.0.0.0/0 sha256修改完配置文件后需要重新加载或重启数据库pw_ctl reload# 或pw_ctl restart可以在另一台机器上用gsql命令测试远程连接gsql-h数据库服务器IP-p17700-dpostgres-Uomm gsql-h127.0.0.1-p17700-dpostgres-Uomm2DBeaver在数据库创建 test_user 新用户test_db 数据库以及 test_schema SchemaCREATEUSERtest_user WITH PASSWORDtest_user123;CREATE DATABASE test_db OWNER test_user;\c test_db CREATE SCHEMA test_schema AUTHORIZATION test_user;后续在 DBeaver 中用 test_user 用户建立连接后验证SELECT current_user, current_database(), current_schema();SELECT pw_version();操作
返回列表