GaussDB手动部署实战:从包提取到集群配置的完整指南

📅 发布时间:2026/7/6 23:36:57 👁️ 浏览次数:
GaussDB手动部署实战:从包提取到集群配置的完整指南
1. 开篇为什么需要手动部署GaussDB如果你是一名DBA或者运维工程师肯定遇到过这样的场景生产环境没有图形化界面或者需要在特定的、隔离的网络环境中部署数据库。这时候那些依赖图形化安装工具的“一键部署”方案就完全失灵了。GaussDB作为一款企业级数据库官方虽然提供了便捷的安装工具但在很多实际的生产或测试环境中手动部署才是真正的“硬通货”。它能让你对数据库的每一个组件、每一步配置都了如指掌出了问题也能快速定位。今天我就来和你分享一份从零开始、手把手操作的GaussDB手动部署实战指南。这份指南会非常详细从如何像“剥洋葱”一样从官方庞大的安装包里找到我们真正需要的核心组件Om、Server、Adaptor到操作系统环境的每一个细节配置再到关键配置文件的定制化修改最后执行安装并验证集群状态。整个过程我会把我踩过的坑、验证过的技巧都告诉你目标就是让你看完之后能独立在任何一个符合要求的Linux服务器上成功部署起一个可用的GaussDB集群。我们这就开始。2. 庖丁解牛从官方大包里提取核心组件手动部署的第一步也是最容易让人懵圈的一步就是找到真正的安装包。官方提供的下载包往往是一个巨大的、嵌套了很多层的压缩文件Om和Server包就像被藏在了迷宫最深处。2.1 定位并解压Kernel包获取Om和Server通常你下载到的文件名字类似DBS-GaussDB-xxx-Kernel_xxx.tar.gz。这个“Kernel”包就是核心所在。你需要像下面这样一层层解压路径可能会因版本略有不同但逻辑是一致的# 第一步解压最外层的Kernel包 tar -zxvf DBS-GaussDB-Kylin-Kernel_24.7.32.0.924990758866176.tar.gz # 进入解压后的目录你会发现里面结构复杂 cd DBS-GaussDB-Kylin-Kernel_24.7.32.0.924990758866176/packages/接下来你会看到一个或多个以DBS-GaussDB-kernel开头的目录继续深入。关键的步骤来了你会遇到.rpm文件。在Linux上我们不能直接用tar解压rpm包需要用rpm2cpio这个工具。我当初就在这里卡了半天。命令是这样的# 假设你找到了一个名为 DBS-GaussDB-kernel-src-8.210.0...noarch.rpm 的文件 rpm2cpio DBS-GaussDB-kernel-src-8.210.0.20241227152828.kylin.99257962-1.noarch.rpm | cpio -idmv执行这个命令后它会把rpm包的内容解压到当前目录。然后请你耐心地在解压出的目录结构里寻找路径大概会像opt/cloud/GaussDB-kernel/v8.201.0xxx/。在这里曙光就出现了你会看到几个名字里带v8.xx的.tar.gz文件。这几个包就是按架构x86/ARM和部署模式分布式/集中式分类的最终安装包。对于大多数高可用部署我们需要的是集中式HA的包。比如如果你的服务器是ARM架构就找名字里包含ha-aarch64的包。把它解压tar -zxvf v8.210.0-GaussDBV5-install-kylin-ha-aarch64_xxxxxxxx.tar.gz解压后你梦寐以求的两个核心包就出现了GaussDB-Kernel_xxx_Om_ARM_Centralized.tar.gz管理包和GaussDB-Kernel_xxx_Server_ARM_Centralized.tar.gz数据库服务包。把它们妥善保存到你的工作目录比如/opt/GaussDBInstaller/pkgDir/。2.2 寻找并重命名Adaptor包Om和Server是主体但还有一个关键的“粘合剂”——Adaptor包。它通常不在Kernel包里而是在另一个名为DBS-GaussDB-Server_xxx.tar.gz的独立压缩包中。提取过程同样需要耐心# 解压Server包注意这个不是上一步的Server核心包是另一个更大的分发包 tar -zxvf DBS-GaussDB-Server_xxx.tar.gz # 进入目录同样需要经过 packages/ 和 rpm 解压的流程 cd DBS-GaussDB-Server_xxx/packages/DBS-GaussDB-agent_xxx_all/.../ # 使用同样的rpm2cpio命令解压遇到的rpm包 rpm2cpio xxxx.rpm | cpio -idmv最终你会在类似opt/cloud/GaussDB-agent/gaussdbv5_agent_xxx/agent/的路径下找到ADAPTOR.tar.gz。这里有一个巨坑直接解压出来的这个名字安装脚本可能认不出来我实测过必须把它重命名为符合GaussDBInstaller识别规范的名称通常是DBS-GaussDB-Adaptor_xxx.tar.gz这种格式具体命名请参考你解压目录里的其他文件模式。不改名的话走到安装那一步很可能报错找不到Adaptor包让你前功尽弃。# 找到ADAPTOR.tar.gz后重命名并移动到你的包目录 mv ADAPTOR.tar.gz DBS-GaussDB-Adaptor_8.210.0.xxx.tar.gz cp DBS-GaussDB-Adaptor_8.210.0.xxx.tar.gz /opt/GaussDBInstaller/pkgDir/至此三剑客Om, Server, Adaptor全部集齐。这个过程虽然繁琐但就像拼图找齐了所有碎片为后面的搭建打下了坚实的基础。3. 筑牢地基操作系统环境预配置详解数据库是上层建筑操作系统环境就是地基。地基打不牢数据库跑起来也会摇摇晃晃。这一部分内容很多但每一步都至关重要直接关系到安装的成功率和后续运行的稳定性。3.1 系统安全与基础服务配置首先我们需要处理防火墙和SELinux它们常常是网络通信和权限访问的“拦路虎”。关闭防火墙在集群内部节点间需要大量的端口通信为了简化初期部署通常先关闭防火墙。当然生产环境后期可以根据安全策略再精确开放端口。# 查看防火墙状态Firewalld或iptables看你系统用哪个 systemctl status firewalld # 如果active则关闭并禁用 systemctl stop firewalld systemctl disable firewalld # 或者对于iptables systemctl stop iptables systemctl disable iptables禁用SELinuxSELinux的安全策略非常严格在数据库部署阶段容易引发各种权限问题。我们将其设置为宽松模式。# 编辑SELinux配置文件 vi /etc/selinux/config # 找到 SELINUX 这一行将其值修改为 permissive SELINUXpermissive # 保存退出后必须重启系统才能生效 reboot配置字符集避免后续出现乱码问题统一设置为en_US.UTF-8。vi /etc/profile # 在文件末尾添加 export LANGen_US.UTF-8 # 使配置立即生效 source /etc/profile # 验证配置 echo $LANG3.2 时间同步与系统参数优化集群对时间同步的要求极高时间差过大会导致节点间状态判断错误引发脑裂等问题。配置Chrony/NTP我推荐使用chrony它比传统的ntp更快更准。首先安装yum install chrony -y # CentOS/RHEL # 或 zypper install chrony # openSUSE编辑配置文件/etc/chrony.conf关键修改如下添加allow all以允许所有节点同步测试环境可用生产环境建议指定网段。取消local stratum 10的注释允许本机在无外网源时作为时间源。注释掉原有的pool服务器行添加你的内部时间服务器地址。例如你可以指定第一个节点为时间源server 192.168.0.71 iburst # allow all重启服务并验证systemctl restart chronyd systemctl enable chronyd chronyc sources -v # 查看同步状态关闭Swap交换分区数据库是内存消耗大户使用Swap会导致性能急剧下降。我们需要永久关闭它。vi /etc/fstab # 找到包含 ‘swap’ 字样的那一行在行首加上 ‘#’ 注释掉它。 # 例如 #/dev/mapper/centos-swap swap swap defaults 0 0 # 保存退出重启生效 reboot优化系统资源限制数据库进程需要打开大量的文件和网络连接必须调整系统限制。vi /etc/security/limits.conf # 在文件末尾添加以下内容 * soft nofile 1000000 * hard nofile 1000000 * soft nproc unlimited * hard nproc unlimited另外还需要单独修改进程数限制vi /etc/security/limits.d/20-nproc.conf # 注意文件名可能不同如90-nproc.conf # 修改或添加 * soft nproc 60000这些参数调整后需要重新登录当前会话才能生效最稳妥的方法是断开SSH重新连接一次。4. 绘制蓝图定制安装配置文件环境准备好安装包也齐了接下来就要告诉安装程序“你想装一个什么样的集群”。这通过两个核心配置文件完成install_cluster.conf和install_cluster.json。它们一个负责通用参数一个负责集群拓扑。4.1 详解install_cluster.conf通用参数设置这个文件定义了安装过程中的通用变量比如用什么用户、密码、安装路径等。通常你可以在安装包解压后的目录里找到一个模板比如simple.conf复制一份进行修改。[COMMON] os_user gaussdb # 运行数据库的操作系统用户安装脚本会自动创建 os_user_group gaussdb # 用户所属组 os_user_passwd YourPassword123! # 上述用户的密码 root_passwd YourRootPassword456! # 系统root密码用于脚本执行特权操作 db_free_login false # 是否配置SSH免密登录false表示由安装脚本配置 ssh_port 22 # SSH端口号 node_ip_list 192.168.0.71,192.168.0.79,192.168.0.139 # 集群所有节点的IP用逗号分隔 [OMAGENT] om_agent_port 20050 # OM管理监控代理端口 mgr_net # 管理网络如果和管理网络一致可留空 data_net # 数据网络如果和数据网络一致可留空 virtual_net # 虚拟IP网络如果和业务网络一致可留空 gauss_home /opt/huawei/install/app # GaussDB的安装根目录非常重要 log_dir ${gauss_home}/var/lib/log data_dir ${gauss_home}/var/lib/engine/data1/data # 数据文件目录 etcd_dir ${gauss_home}/usr/local/etcd # etcd数据目录重点提示os_user_passwd和root_passwd要记牢后续登录和运维要用。gauss_home路径要有足够的磁盘空间且该路径的父目录如/opt/huawei/install需要对root用户可写因为安装脚本会在此创建app目录并更改属主。node_ip_list里的IP必须能通过SSH互相访问并且主机名解析正确建议在/etc/hosts文件中做好映射。4.2 详解install_cluster.json集群拓扑定义这个文件定义了集群的物理和逻辑结构哪些节点是数据节点CN/DN哪些是集群管理节点CM以及它们的角色、可用区AZ和IP地址。同样可以从simple.json复制修改。{ cn: [ { rack: rack1, az: AZ1, ip: 192.168.0.71, dataIp: 192.168.0.71, virtualIp: 192.168.0.71 }, { rack: rack1, az: AZ1, ip: 192.168.0.79, dataIp: 192.168.0.79, virtualIp: 192.168.0.79 }, { rack: rack1, az: AZ1, ip: 192.168.0.139, dataIp: 192.168.0.139, virtualIp: 192.168.0.139 } ], cm: [ { rack: rack1, az: AZ1, ip: 192.168.0.71, dataIp: 192.168.0.71, virtualIp: 192.168.0.71 }, { rack: rack1, az: AZ1, ip: 192.168.0.79, dataIp: 192.168.0.79, virtualIp: 192.168.0.79 }, { rack: rack1, az: AZ1, ip: 192.168.0.139, dataIp: 192.168.0.139, virtualIp: 192.168.0.139 } ] }配置解析与避坑指南cn与cm在集中式部署中cn代表数据节点Coordinator Node/Datanodecm代表集群管理节点Cluster Manager。通常我们让每个物理节点同时承担这两种角色即“混部”所以两个数组里的IP列表是一样的。rack与azrack代表机架az代表可用区。这是为了容灾设计可以将节点分布在不同机架或机房。在测试或单机房环境中可以都设为相同值。三种IPip节点的物理IP用于SSH管理和基础通信。dataIp数据流传输IP。在拥有独立存储网络的场景下这里填写存储网IP。如果没分就和ip一致。virtualIp虚拟IP用于客户端连接的高可用漂移IP。这是实现高可用的关键。你需要为每个节点规划一个同网段的、未被占用的VIP。在安装前这些VIP不需要手动配置安装程序会帮你配置好。我这里为了演示简化暂时填成了和物理IP一样在实际生产环境中这是绝对不允许的务必区分开。节点数量集中式集群至少需要3个节点奇数个来保证CM组件的高可用和选举。修改完这两个配置文件后务必要仔细检查三遍IP地址有没有写错、逗号括号是否配对、路径和密码是否正确。一个字符的错误都可能导致安装失败。5. 临门一脚执行安装与集群验证万事俱备只欠东风。现在所有组件和配置都已就位可以开始安装了。5.1 安装依赖与执行安装命令首先安装GaussDB运行所必需的系统依赖包。这些包提供了数据库编译和运行的基础库。yum -y install bzip2 libaio-devel flex bison ncurses-devel glibc-devel patch expect然后进入你的安装程序目录比如/opt/GaussDBInstaller确保pkgDir目录下已经放好了我们之前提取的三个核心包并且install_cluster.conf和install_cluster.json也在该目录或指定路径下。执行安装命令。这是一个比较漫长的过程可能会持续几十分钟取决于你的服务器性能和网络状况。建议使用nohup放到后台运行并重定向输出到日志文件方便后续排查。cd /opt/GaussDBInstaller # 前台运行可以实时看到日志适合首次安装观察 python3 gaussdb_install.py --action main # 或者后台运行并记录日志 nohup python3 gaussdb_install.py --action main install.log 21 # 查看实时日志 tail -f install.log安装脚本会依次执行以下工作检查环境、创建用户、分发安装包、配置SSH互信、初始化集群、启动服务等。你会在日志中看到详细的步骤输出。5.2 安装后验证与基本操作安装脚本运行完毕后不要急着庆祝必须进行全面的验证。第一步切换用户并检查集群状态# 切换到安装时创建的数据库运行用户如gaussdb su - gaussdb # 加载数据库环境变量 source ~/gauss_env_file # 使用cm_ctl工具查询集群整体状态 cm_ctl query -Cv这是最关键的一步。你会看到一个详细的表格输出需要关注以下几点CMServer State集群管理节点状态。应该有一个Primary主和至少一个Standby备状态都是Normal。ETCD State分布式键值存储状态。应该有一个StateLeader领导者和多个StateFollower跟随者。Cluster State集群状态。cluster_state必须是Normal。redistributing应为Nobalanced应为Yes。Datanode State数据节点状态。应该有一个P Primary Normal主节点和多个S Standby Normal备节点。如果以上所有状态都正常恭喜你集群已经成功启动。第二步连接数据库并简单测试# 使用gsql客户端连接数据库-p 参数是端口号默认是8000 gsql -d postgres -p 8000 -U root -W # 输入安装时设置的数据库管理员密码连接成功后你会看到postgres#的提示符。可以执行一些简单命令验证-- 查看数据库版本 SELECT version(); -- 查看所有数据库 \l -- 创建一个测试库 CREATE DATABASE testdb; -- 切换到测试库 \c testdb -- 创建一张测试表 CREATE TABLE test_table (id INT, name TEXT); -- 插入一点数据 INSERT INTO test_table VALUES (1, GaussDB); -- 查询数据 SELECT * FROM test_table;如果这些操作都能顺利完成那么从部署到数据库服务的完整链路就彻底打通了。5.3 常见问题与重装指南手动部署很难一次成功遇到问题很正常。这里分享几个我踩过的坑安装中途失败首先仔细查看install.log或屏幕输出的最后几十行错误信息。常见原因有配置文件语法错误JSON格式不对、IP地址无法连通、磁盘空间不足、依赖包没装全、SELinux没关等。根据错误提示逐一排查。集群状态异常如果cm_ctl query显示状态不是Normal比如有节点Unknown或Down。可以先尝试在问题节点上用gaussdb用户执行cm_ctl start尝试启动。如果不行去$GAUSSLOG目录通常是/opt/huawei/install/app/var/lib/log的子目录查看对应组件的日志cm、dn、etcd开头的日志文件。需要彻底重装如果问题无法解决或者你想从头再来需要执行清理操作。注意这会删除所有数据和配置文件# 在安装目录下执行卸载清理 cd /opt/GaussDBInstaller python3 gaussdb_install.py --action uninstall_cleanup # 强制结束所有属于数据库用户的进程 pkill -9 -u gaussdb # 删除数据库用户和家目录 userdel -rf gaussdb # 删除数据目录根据你install_cluster.conf里配置的data_dir路径 rm -rf /opt/huawei/install/app/var/lib/engine/data1/data/* # 或者更暴力的删除整个安装目录 rm -rf /opt/huawei/install/app清理完成后再从头检查环境、配置文件重新执行安装步骤。记住耐心和仔细查看日志是解决部署问题的最强法宝。手动部署一次GaussDB你对它的理解会比用工具安装深入好几个层次。