
简介华为云GaussDB 100 1.0.1数据库安装部署资源包聚焦EulerOS 20 SP8 64位环境面向需要搭建分布式数据库的DBA、运维人员和开发者。GaussDB是华为自研的企业级分布式数据库具备分布式扩展、高可用与强一致事务等能力该版本适合在云环境下快速完成基础部署与功能验证。资源共6个文件以4个Python自动化脚本为主另含GaussDB RUN安装包与SHA256校验文件整体大小7.39MB脚本覆盖自动化安装、平滑升级、公共函数封装和SSH免密配置配合校验文件可确保包体完整省去手动下载与依赖配置的繁琐步骤。利用这套工具用户可从环境准备、部署安装到后续升级形成完整闭环显著降低GaussDB 100的上手与运维成本适合在测试环境先行验证再切换生产。已有1310人学习下载对于希望低成本搭建实验环境、学习华为分布式数据库落地流程的开发者来说是一份轻量实用的离线部署参考尤其适合内网或网络受限场景。1. GaussDB 100 安装包实战在欧拉 20 SP8 上拆包、建库、搭主备如果你手里正好有一台欧拉 20 SP8 的 64 位服务器又需要一个能扛住在线交易类业务的数据库这个 GaussDB 100 1.0.1 安装包就是为这类场景准备的。它解决的是在自主可控环境下数据落盘、容灾和并发控制的问题单机部署轻、主备同步有现成通道、语法和运维习惯贴近 Oracle 那套老 DBA 迁移成本低。适合正在评估国产数据库的团队、需要内网离线部署的项目以及想完整跑一遍“安装—建库—备份—主备切换”流程的开发者。下面按实际部署顺序展开先装通单机再搭主备最后把日常巡检和踩过的坑一起讲掉。2. GaussDB 100 单机部署解包、环境检查与 zsql 建库2.1 解包前的三个确认架构、目录规划、运行用户动手之前先看包名GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz。命名拆开是版本 1.0.1、目标系统欧拉 20 SP8、64 位架构。第一件事就是确认你的系统跟这个包匹配uname -m出 x86_64 只是第一步还要看发行版版本。目录规划我会按一套约定来写后端维护会省心很多mkdir -p /data/gaussdb groupadd dba useradd -g dba -d /home/gaussdb -s /bin/bash gaussdb tar -zxvf GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz -C /data/gaussdb chown -R gaussdb:dba /data/gaussdb逻辑说明软件目录和数据目录分开是最常见的做法/data/gaussdb只是安装根目录实际数据文件在它的子目录下。专用运行用户是为了隔离权限数据库进程绝不能拿 root 跑这是所有现场部署的底线。参数说明-C指定解压目标groupadd dba这一步不是必须叫 dba但 GaussDB 100 的很多初始化脚本默认找 dba 用户组保持一致最省事。如果你服务器上已经有 dba 组跳过 groupadd 直接建用户即可。解压后再看一层包内通常有 install 相关脚本和配套文档目录。我的习惯是先把包内自带的安装说明打开扫一遍因为这个版本的脚本入口在不同小版本里有差异可能是 Python 也可能是 Perl以包内实际脚本为准。这不算偷懒是避免把 1.0.1 的脚本路径记错然后做无用功。2.2 环境准备与初始化别急着敲安装命令环境检查比安装本身更容易翻车。常见问题集中在三块SELinux、防火墙、内核参数。setenforce 0 sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config sysctl -w vm.swappiness10 sysctl -w vm.overcommit_memory0 sysctl -w fs.file-max6815744 firewall-cmd --permanent --add-port1888/tcp firewall-cmd --reload逻辑说明SELinux 不关的话数据库进程访问数据文件经常被拦日志里报权限 denied排查起来非常耗时不如部署期直接关掉。vm.swappiness调到 10 是避免系统过早把数据库内存页换到磁盘fs.file-max则跟连接数上限相关。参数说明1888 是 GaussDB 100 默认监听端口如果你打算用其他端口比如 3888那后续所有连接串和配置都得跟着改建议一开始就定死。防火墙没有图形界面时用ss -lntp验证端口是否真正监听比对着配置猜靠谱得多。环境就绪后执行初始化。常见做法是切换到 gaussdb 用户用包内安装脚本指定单机模式su - gaussdb cd /data/gaussdb python install.py --modesingle \ --data_dir/data/gaussdb/data \ --log_dir/data/gaussdb/log \ --charsetUTF8 \ --listen_ip0.0.0.0逻辑说明--modesingle明确当前是单机部署后续要转主备再改配置。--data_dir是数据文件根目录--log_dir是运行日志目录两个目录必须分开否则日志写满会把数据盘搞爆。参数说明--charsetUTF8在中文环境下建议直接写死否则默认字符集可能在导入含中文的数据时出现乱码。--listen_ip0.0.0.0表示监听所有网卡如果只允许本机访问改成 127.0.0.1后面搭主备时备机要通过网络连主机这里必须监听业务网卡地址。初始化过程中会要求设置 SYS 用户密码。这条密码别随便给它相当于数据库的 root。密码复杂度策略在 GaussDB 100 里默认要求大小写加数字长度不低于 8 位现场如果装到一半被密码策略卡住按提示加上特殊字符即可。2.3 启动、连接、建库验证安装结果的三个动作安装脚本跑完不代表能用要看到 zsql 能敲出 SQL 才算数。cd /data/gaussdb/bin zctl.py -t start zsql sys/密码127.0.0.1:1888逻辑说明zctl.py -t start是启动数据库实例的控制命令-t指定操作类型。zsql 是 GaussDB 100 自带的命令行客户端语法风格跟 Oracle 的 sqlplus 很像连上以后看到 SQL 提示符即安装成功。参数说明连接串格式是用户名/密码IP:端口。第一次登录 SYS 用户建议顺手验证一下当前版本信息用SELECT VERSION FROM V$INSTANCE;这种动态视图查询确认跑起来的是 1.0.1防止现场有多套环境连错实例。接下来按业务规划建表空间和用户。GaussDB 100 默认提供 SYSTEM、USER、TEMP、UNDO 等表空间但业务数据不要直接塞 USER单独建一个业务表空间更清晰。CREATE TABLESPACE TBS_APP DATAFILE /data/gaussdb/data/app01.dbf SIZE 8G AUTOEXTEND ON NEXT 256M MAXSIZE 32G; CREATE USER app_user IDENTIFIED BY App12345 DEFAULT TABLESPACE TBS_APP; GRANT CONNECT, RESOURCE TO app_user;逻辑说明CREATE TABLESPACE时指定数据文件路径、初始大小、自动扩展步长和上限。把数据文件放到独立表空间后续做表空间级备份、迁移都能单独操作不会牵一发动全身。参数说明AUTOEXTEND ON NEXT 256M表示每次自动扩 256M扩展太频繁会有 IO 抖动一次性给足 8G 初始空间更适合业务稳定的系统。MAXSIZE 32G是上限防止某个表空间无限膨胀把磁盘写满。这里的数据文件路径要和--data_dir保持一致不然目录权限会出问题。3. 主备容灾ZSYN 日志同步、参数设计与切换决策3.1 为什么选主备而不是共享存储单机部署只解决“能用”的问题现场环境一旦要求高可用第一反应往往是共享存储。但 GaussDB 100 在中小规模场景下主备架构更务实不需要额外采购存储设备备机就是一台普通服务器通过 ZSYN 进程把主机的 redo 日志拉到备机并应用备机始终维护一份跟主机差距很小的数据映像。这个方案的取舍点在于RPO 取决于同步策略同步模式下主机提交事务前要等备机确认数据零丢失异步模式下主机不用等性能好但可能丢最后一批日志。如果你的业务是订单、支付这类不能丢数据的选同步如果是日志、报表类异步更合适。我一般把主备部署拆成两台机器角色写死在配置文件里避免脑裂时两边都以为自己是主机。备机同时可以承担只读查询把一部分报表查询放到备机跑能明显减轻主机压力但要注意别跑太重的分析任务否则日志应用会滞后。3.2 主备配置文件与 ZSYN 相关参数先看主机的配置文件/data/gaussdb/cfg/gaussdb.conf里几个关键项ROLEPRIMARY PORT1888 REPL_PORT1889 LOG_ARCHIVEON ARCHIVE_DEST_1LOCATION/data/archive逻辑说明ROLE决定实例是主还是备两台机器的配置差别主要就在这里。REPL_PORT是主备之间同步日志专用的端口不能跟PORT重复。LOG_ARCHIVEON打开归档模式主备同步依赖归档日志不开归档备机是追不上主机的。参数说明ARCHIVE_DEST_1指定归档目录建议归档目录和数据目录分盘。现场见过把归档放同盘把数据盘塞满的案例归档日志增长速度往往比预想快尤其是有大批量更新任务时。备机的配置基本复制主机只需要改两处ROLESTANDBY PORT1888 REPL_PORT1889逻辑说明备机端口建议跟主机保持一致这样应用切换时连接串不用改。真正搭建时先跑一遍全量备份然后把备份恢复到备机再启动备机进入恢复模式ZSYN 进程会自动从主机拉取归档日志并保持同步。搭建步骤我习惯写成下面这样避免遗漏# 在主机执行全量备份 zsql sys/密码127.0.0.1:1888 EOF BACKUP DATABASE TO /backup/full_20250101.dmp; EOF # 把备份文件传到备机 scp /backup/full_20250101.dmp gaussdb备机IP:/backup/ # 在备机执行恢复 zsql sys/密码127.0.0.1:1888 EOF RESTORE DATABASE FROM /backup/full_20250101.dmp; RECOVER DATABASE; EOF逻辑说明BACKUP DATABASE TO生成物理备份包含数据文件和日志信息。RESTORE把备份文件还原到备机数据目录RECOVER让备机进入可接收归档日志的状态。整个过程需要在备机实例启动前完成顺序反了会报数据文件不一致。参数说明备份文件路径要选在容量充足的位置全量备份文件大小通常接近实际数据量。如果数据量上百 G建议直接走存储层面的拷贝或者分段备份不要用单一大文件传输容易中断且不好续传。主备启动后用动态视图确认同步状态SELECT NAME, OPEN_MODE, ROLE FROM V$DATABASE;逻辑说明OPEN_MODE显示主备机各自的状态主机应该是 PRIMARY备机是 STANDBY。如果备机一直处于 MOUNT 或 RECOVER 状态说明日志应用没跟上需要检查 ZSYN 进程是否存活。3.3 主备切换什么时候该人工干预主备切换有两条路径一是主机故障触发自动切换二是计划内维护手动切换。自动切换依赖集群管理组件的探活机制但现场很多部署只用双机配置没有额外集群软件这时人工切换就是唯一手段。人工切换的操作顺序是固定的# 备机执行把备机提升为主 zsql sys/密码127.0.0.1:1888 EOF ALTER DATABASE ACTIVATE STANDBY; EOF # 原主机恢复后降级为新备机 zsql sys/密码127.0.0.1:1888 EOF ALTER DATABASE CONVERT TO STANDBY; EOF逻辑说明ACTIVATE STANDBY让备机接管成为新主机这一步执行前必须确认原主机已经无法提供服务否则两台机器同时写数据必然出现数据分叉。CONVERT TO STANDBY是把恢复后的原主机变成新备机重新接回同步链路。参数说明做切换决策前先看备机日志应用延迟。延迟几分钟以内可以切延迟超过半小时就要评估丢失的数据量是否可接受。生产环境我会设定一个硬阈值同步模式下延迟超过 30 秒就不允许切换直接走数据找回流程。4. 备份恢复与日常巡检不能只靠 tar 包4.1 备份策略全量、增量和归档的配合很多新手拿到安装包以为数据文件在就行这是最危险的想法。数据库的物理文件处于运行状态时不能直接拷贝必须通过备份接口生成一致性的备份集。GaussDB 100 的常规备份思路是每周全量、每天增量、实时归档。-- 全量备份 BACKUP DATABASE TO /backup/full_20250108.dmp; -- 增量备份 BACKUP DATABASE INCREMENTAL TO /backup/incr_20250109.dmp; -- 查询备份集 LIST BACKUPS;逻辑说明全量备份是恢复的基础增量备份只记录变化的数据块恢复时按“全量 最近增量 归档日志”的顺序回放可以把数据库恢复到任意时间点。LIST BACKUPS查看现有备份集清单定期清理过期备份避免备份目录被撑爆。参数说明备份语句里没有指定压缩参数时备份文件是不压缩的几百 G 的业务库备份出来就是几百 G。磁盘预算按数据量的 2 到 3 倍规划比较稳。增量备份的频率取决于业务变更量日增量超过全量的 20% 时增量意义就不大了直接考虑加大全量频率。恢复流程跟备份对应按顺序执行RESTORE DATABASE FROM /backup/full_20250108.dmp; RECOVER DATABASE;逻辑说明先恢复全量备份再用归档日志把数据推进到故障前的最新状态。如果恢复了增量备份RECOVER 时数据库会自动读取归档目录里的日志并应用。恢复完成后手动执行一次SELECT COUNT(*) FROM 核心表;做抽查确认数据量正确再开放业务。4.2 巡检 SQL十项检查覆盖日常健康日常巡检不用搞得多复杂固定跑下面几条 SQL能在三分钟内把数据库基本状态摸清楚。-- 1. 实例状态 SELECT NAME, OPEN_MODE, ROLE FROM V$DATABASE; -- 2. 当前活跃会话 SELECT SID, STATUS, USERNAME, SQL_ID FROM V$SESSION WHERE STATUS ACTIVE; -- 3. 核心参数当前值 SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME IN (MAX_CONNECTIONS, DATA_BUFFER_SIZE); -- 4. 表空间使用率 SELECT TABLESPACE_NAME, FILE_SIZE, FILE_SIZE - FREE_SIZE AS USED FROM DBA_DATA_FILES;逻辑说明前两条负责“数据库活着没有”第三条确认连接数和内存配置是否被意外改动第四条看磁盘空间水位。表空间使用率超过 85% 就要预警特别是 UNDO 和 TEMP 表空间涨起来很突然。参数说明MAX_CONNECTIONS的值是否够用不能只看数字要结合活跃会话数量判断。DATA_BUFFER_SIZE是内存缓存大小设太小会频繁读写磁盘现场如果业务响应慢优先看这个参数而不是先去调 SQL。巡检不只看 SQL 结果还要看系统层的磁盘空间df -h /data/gaussdb逻辑说明数据库盘写满的前兆往往是归档目录先爆然后实例直接 hang 住。每天定时跑一遍df -h比任何监控系统都直接。4.3 日志文件从启动日志和告警日志判断状态GaussDB 100 运行日志在/data/gaussdb/log下常见的文件是运行日志和告警日志。实例起不来、连接异常、备份失败第一反应都应该是看日志而不是改参数。tail -n 100 /data/gaussdb/log/alert.log逻辑说明告警日志记录实例启动、关闭、错误、主备切换等关键事件格式是时间戳加描述。排查问题时按时间点先定位告警日志再翻运行日志里对应的报错堆栈比漫无目的翻整个目录高效很多。参数说明日志文件会持续增长日志轮转按大小或日期配置。默认如果没有开启轮转策略建议定期清理超过 30 天的日志否则日志目录会悄悄涨到几十 G到时候再清就晚了。5. 避坑记录安装与主备现场的五个常见问题现象 → 原因 → 解决5.1 安装脚本报 /dev/shm 空间不足现象执行初始化时提示 shared memory 不足实例启动后自动退出。原因GaussDB 100 的内存相关参数会占用共享内存而/dev/shm默认只有物理内存的一半数据库初始化时创建的共享内存段超出了限制。解决调大/dev/shm在/etc/fstab里修改挂载参数然后重新挂载。mount -o remount,size16G /dev/shm参数说明按物理内存的 1/4 到 1/2 设置16G 是常见起步值。改完务必执行df -h /dev/shm确认生效再重新跑初始化脚本。5.2 zsql 连接一直超时1888 端口不通现象zsql sys/pwdIP:1888卡住很久然后报网络超时。原因最常见是数据库监听只绑定了 127.0.0.1或者防火墙没放行 1888 端口。还有一次现场是服务器上有多个网卡应用走业务网卡数据库却监听在管理网卡上。解决先用ss -lntp | grep 1888看监听地址再用curl或telnet从应用端测端口连通性。确认是监听问题就改配置# 修改监听 IP ALTER SYSTEM SET LISTEN_IP 0.0.0.0 SCOPE BOTH;逻辑说明SCOPE BOTH表示参数同时写入内存和配置文件重启实例也生效。如果不加 SCOPE修改只对当前会话有效重启后打回原形。5.3 主备同步延迟持续上涨备机永远追不上现象备机V$DATABASE里的日志应用位点跟主机差距越来越大数据落地到备机延迟几十分钟甚至几小时。原因备机上跑了重量级报表查询日志应用进程分不到足够的 IO 和 CPU或者主机归档目录所在的磁盘空间不足归档日志被删了备机断链后只能重新全量同步。解决把备机的报表业务限流或迁移走确保日志应用进程优先同时给归档目录扩容并配置归档删除策略至少保留 24 小时的归档日志作为缓冲。5.4 主备恢复时报数据文件路径不一致现象在备机执行RESTORE DATABASE时报数据文件目录跟备份记录不匹配。原因备机的数据目录路径跟主机不一致。备份文件里记录的是主机上绝对路径备机环境如果目录布局不同恢复时校验就失败。解决保持两台机器数据目录完全一致我在搭建文档里会固定写成/data/gaussdb/data不允许定制路径。已经出问题的话把备机数据目录调整为主机同样的路径重新执行恢复不要用软链接糊弄恢复过程不认这个。5.5 实例启动后文件权限报错现象启动日志里出现大量 permission denied实例一直无法进入 OPEN 状态。原因初始化时用 root 执行了解压或建目录导致数据文件属主不是 gaussdb 用户或者 SELinux 没有真正关闭。解决递归改属主确认 SELinux 状态后重新启动。chown -R gaussdb:dba /data/gaussdb getenforce注意setenforce 0只是临时关闭重启后会恢复 enforcing。必须改/etc/selinux/config里的配置否则下次重启同样的问题再冒出来。6. 加一个自动化巡检脚本跑一遍再下结论手动巡检每次要敲好几条命令我的习惯是把它们封成一个脚本固定在每天的业务低峰期执行一次异常直接写进告警文件。#!/bin/bash # 简易巡检脚本适用于 GaussDB 100 单机和主备场景 DB_USERsys DB_PWDYourPassword DB_HOST127.0.0.1:1888 ALERT_LOG/data/gaussdb/log/alert.log RESULT_LOG/data/check_result.log # 实例状态检查 INST_STATUS$(zsql $DB_USER/$DB_PWD$DB_HOST -c \ SELECT STATUS FROM V$INSTANCE; | grep -i open) if [ -z $INST_STATUS ]; then echo $(date) [ERROR] instance is not open $RESULT_LOG exit 1 fi # 磁盘空间检查 DISK_USAGE$(df -h /data/gaussdb | awk NR2 {print $5} | sed s/%//) if [ $DISK_USAGE -gt 85 ]; then echo $(date) [WARN] disk usage ${DISK_USAGE}% $RESULT_LOG fi # 告警日志检查最近N条 RECENT_ERR$(grep -i error\|failed $ALERT_LOG | tail -n 20) if [ -n $RECENT_ERR ]; then echo $(date) [WARN] recent error in alert log $RESULT_LOG fi echo $(date) [INFO] health check done $RESULT_LOG逻辑说明脚本第一部分检查实例状态第二部分检查磁盘水位第三部分扫告警日志里的错误关键字。三个检查覆盖了数据库最核心的存活、空间、异常三个维度足够日常值班使用。脚本放到 crontab 里定时跑0 8 * * * /home/gaussdb/check_gaussdb.sh每次看check_result.log里有没有新增的[ERROR]或[WARN]行就行。这个脚本的定位是兜底不替代真正的监控系统但胜在轻量、不依赖外部组件任何一台部署了 GaussDB 100 的机器都能直接用。把数据库密码写进脚本有风险现场如果对安全要求高建议改成从环境变量读取或使用加密的连接配置。相信我比起事到临头到处翻日志每天扫一眼这个几行输出心里会踏实得多。从那以后我每次部署 GaussDB 100装完第一件事就是把这个脚本配上再手动跑一遍SELECT NAME, OPEN_MODE, ROLE FROM V$DATABASE;确认主备角色正确然后才敢说环境交付了。希望这些步骤和踩坑记录能帮到你。本文还有配套的精品资源点击获取