
简介人大金仓数据库 KingbaseES V008R003C002B0100 Linux 64 位安装包面向需要部署国产关系型数据库的系统管理员、DBA 与企业 IT 团队解决 Linux 平台上的安装与初始化问题。该版本具备完整的联机事务处理与联机分析处理能力支持标准 SQL并采用多进程架构与高可用机制适用于金融、政务、能源等关键行业的核心业务场景。压缩包共 3 个文件以 sh 安装脚本、bin 程序主体及 md5 校验文件组成整体约 475MB可先校验完整性再通过图形化或命令行方式安装灵活适配不同环境。目前已有 196 人学习下载便于社区互助排查部署问题。获取该包即可获得完整数据库软件介质、校验工具与自动化安装脚本能显著降低国产数据库试用与上线门槛适合评估人大金仓在自主可控环境下的性能、安全性与兼容性表现配套文档还可辅助深入理解安装、配置与运维要点。1. 装国产数据库最怕的不是安装失败而是装完了不会用拿到“人大金仓数据库”的 Linux 安装包文件名写着KingbaseES-V008R003C002B0100-Lin64-install.tar.gz。很多人的第一反应是解压、执行安装结果要么卡在缺依赖要么初始化后不知道初始密码要么授权文件没放对位置导致建库报错。这篇笔记要把这个 tar.gz 背后的完整路径讲清楚从版本号拆解、系统准备到交互式与静默安装、手动初始化、服务注册再到五个高频坑。读完你不光能装上一套 KingbaseES V8 系列数据库还能把它当成生产库耐心运维适合刚接手信创环境、手里只有安装包和一台离线 Linux 服务器的 DBA、运维和全栈工程师。2. 拆解 KingbaseES-V008R003C002B0100-Lin64-install.tar.gz先看清版本和运行环境2.1 版本号里藏着的信息以及拿到包后的第一件事文件名里的V008R003C002B0100我按项目经验拆成三部分理解V008是主版本 8R003是发布级C002是兼容或定制特性版本B0100是构建号。简单说这套库属于金仓 V8 系列是比较新的补丁包。在线上文档里看到“V8R3C2B100”之类的缩写和这个包是同一个东西。记住这一点搜索问题时能少踩很多坑。拿到安装包之后别急着tar -zxvf。生产服务器一般是离线环境我习惯先做三件事校验文件完整性、列出包内清单、确认归档类型。尤其是安装包通过 sftp 断点续传传上来的md5 对不上后面安装到一半才报错那才叫欲哭无泪。命令很简单md5sum KingbaseES-V008R003C002B0100-Lin64-install.tar.gz tar -tzf KingbaseES-V008R003C002B0100-Lin64-install.tar.gz | head -20 file KingbaseES-V008R003C002B0100-Lin64-install.tar.gzmd5sum的输出要和你拿到包时的校验值一致不一致就重新上传不要心存侥幸。tar -tzf只列出文件名但不解压可以提前看到里面有没有 setup.sh、install 脚本和数据目录模板如果解压后内容很小或者缺少授权文件模板后面安装大概率会出幺蛾子。file命令用来确认这是 gzip 压缩的 tar 包防止有人改了后缀让你在tar: This does not look like a tar archive上浪费时间。2.2 服务器配置要求与依赖检查金仓在 Linux x64 上的最低要求是 2 核 CPU、2GB 内存但你真要拿这个配置跑生产就是给自己找麻烦。我经手的信创服务器CPU 至少 8 核内存 16GB 起步数据盘单独挂载目录和系统盘分离。下面这张表是我在做环境评估时常用的项目最低要求生产建议CPU2 核8 核及以上内存2 GB16 GB 及以上根分区5 GB 可用20 GB 可用数据盘10 GB按 3 年数据增量预估操作系统CentOS 7 / 麒麟 V10 / 统信 UOS同左x86_64系统依赖libaio、numactl、libuuid无特殊要求这里我特别提一下libaio。金仓的磁盘写入依赖异步 IO缺这个库会出现“装上能连接、一跑大事务就报io_setup() failed”的诡异问题。检查依赖用rpm -qa配合ldconfigrpm -qa | grep libaio rpm -qa | grep numactl ldconfig -p | grep -E libaio|libnuma如果结果里没有 libaio就用系统安装盘做本地软件源补齐。离线环境补 RPM 是常规操作但要看清楚包架构是x86_64装了i686的版本照样找不到。除了这两个库还需要libuuid它通常随系统自带不用额外操心。2.3 安装前必须处理的用户、目录和端口别用 root 安装金仓。金仓的初始化过程默认拒绝 root 用户执行即使勉强装上后面服务也没法用普通用户启动。生产上我会建一个专用账号useradd -m -s /bin/bash kingbase mkdir -p /opt/Kingbase/ES/V8 mkdir -p /data/kingbase_data chown -R kingbase:kingbase /opt/Kingbase /data/kingbase_data目录建好之后把安装包放到/home/kingbase或者/data下不要在路径里带空格或中文。金仓默认端口是 54321不是 5432这也是新手最容易在防火墙配置里出错的地方。检查端口占用ss -lnt | grep 54321如果有别的进程占用可以换 55432但我不建议频繁换端口因为kingbase.conf、连接串、防火墙规则全都要跟着改。时区也要顺手看一眼最好统一成Asia/Shanghai否则导入带时间戳的数据会平白多出几个小时的偏差。用timedatectl status确认不对就改。2.4 如果数据盘是独立分区先把挂载搞定很多服务器数据盘已经独立挂载但安装说明里没提。遇到这种情况我一般会在装库前确认/data的挂载状态和权限df -h /data mount | grep /data如果/data是新加的裸盘需要格式化并写入/etc/fstab。这里不展开说文件系统细节但要注意数据目录的属主一定要是 kingbase且挂载选项里不要加noexec。曾经有同事在/data上挂了noexec结果解压出来的 setup.sh 怎么执行都提示 permission denied排查到最后才发现是挂载参数的问题。3. 在 Linux x64 上完成安装交互式与静默式两种走法3.1 解压并启动控制台安装环境准备好之后终于可以解压了。解压到/data/kb_install然后看里面有哪些文件tar -zxvf KingbaseES-V008R003C002B0100-Lin64-install.tar.gz -C /data/kb_install cd /data/kb_install ls -l金仓不同小版本的安装脚本名称可能不同常见是setup.sh也有叫install.sh的。先ls确认一下然后执行控制台安装./setup.sh -i console-i console是字符界面安装。如果服务器没有图形桌面千万别直接跑./setup.sh它会因为找不到 DISPLAY 而报错或者卡在图形初始化上。console 模式把所有步骤放到终端里操作逻辑很简单一路回车接受默认碰到输入项按提示填。需要格外注意的有三个位置安装模式选“典型”还是“自定义”。如果这台机器需要装额外组件选自定义否则典型就够。安装目录默认是/opt/Kingbase/ES/V8。我建议保持默认后续所有运维文档和脚本都基于这个路径改了路径等于给自己埋雷。数据目录。安装器会要求指定数据目录并执行初始化。如果数据盘是独立分区且还没挂载先回到上一节处理不要跳过。console 模式下如果界面乱码先执行export LANGC再跑。乱码一般不阻塞安装但看着心烦。3.2 用 response 文件做静默安装给客户做批量交付时我不可能坐在终端前一台台点下一步。静默安装是唯一选择。金仓的 response 文件本质上是 keyvalue 文本常见写法如下install_typefull kb_install_dir/opt/Kingbase/ES/V8 kb_data_dir/data/kingbase_data kb_license/data/kingbase_install/license.dat kb_port54321 kb_encodingUTF8 kb_case_sensitiven kb_auth_methodmd5保存为install.properties然后执行./setup.sh -i silent -f install.properties这里几个参数我逐一说明。install_typefull会把数据库引擎和常用工具一起装上如果你只想装客户端工具可以改成client。kb_license指向授权文件这个文件决定了你能用多少并发、哪些高级特性没放授权文件安装不会失败但后续建库时会有授权提示。kb_encodingUTF8建议固定不要选 GBK否则以后导 UTF-8 数据全是乱码。kb_case_sensitiven表示大小写不敏感如果你项目是从 Oracle 迁移过来的选n更贴近 Oracle 的习惯。静默安装有一个“看着成功但实际没初始化”的情况安装器返回 0目录也有但数据目录是空的。原因通常是kb_data_dir的父目录属主不是 kingbase 用户。解决办法是安装前就chown -R kingbase:kingbase别让安装器用临时目录去写。3.3 安装后的目录与进程检查安装成功的标志不是看到 “install completed”而是ksql能输出版本号、数据目录里有kingbase.conf。检查命令ls -l /opt/Kingbase/ES/V8 ls -l /data/kingbase_data du -sh /data/kingbase_data ps -ef | grep kingbaseps里能看到kingbase -D /data/kingbase_data这样的进程说明数据库已经跑起来了。如果只看到kingbase: writer process之类的后台子进程那是正常的。kingbase.conf是后续所有运维调参的中央文件端口、内存、日志开关都在里面sys_log目录是启动日志和错误日志的位置。装完先看一眼这个文件的属主ls -lh /data/kingbase_data/kingbase.conf属主如果不是 kingbase后面连接会报“配置目录权限不安全”的警告用chown kingbase:kingbase -R /data/kingbase_data一次性修好。3.4 安装失败后如何重试安装这件事失败率高尤其在环境不干净的服务器上。我的经验是失败后不要立刻重跑 setup.sh先清理再重装。具体步骤是把安装目录和数据目录都清掉避免安装器误判“已安装”然后跳过初始化。命令如下rm -rf /opt/Kingbase/ES/V8 rm -rf /data/kingbase_data userdel -r kingbase # 如果用户也建乱了然后重新建用户、建目录、跑安装。不要怕删刚装完的库没有业务数据删了反而是最省事的后悔药。如果重装后还是失败优先看/tmp下安装器生成的日志文件名里通常带install和日期里面会明确告诉你是授权过期、依赖缺失还是路径权限问题。4. 初始化数据目录与服务管理让“装完”变成“真能用”4.1 手动初始化数据目录initdb 的参数要一次调对如果安装器没有自动初始化数据目录或者你要把数据目录迁到新挂载的大盘上就需要手动initdb。金仓的initdb和 PostgreSQL 同源但参数更贴近金仓自己的模板。我的固定用法/opt/Kingbase/ES/V8/bin/initdb -D /data/kingbase_data \ -U system \ -A md5 \ --pwprompt \ --encodingUTF8 \ --compatible-modeoracle参数解释-D数据目录必须存在且属主是 kingbase。-U system创建超级用户名金仓默认叫system不是postgres这是它和 PG 最明显的差异之一。-A md5客户端认证方式。生产环境用 md5 或 scram-sha-256测试环境也要避免 trust。--pwprompt交互式输入 system 密码。不要用空密码后面找回密码是血泪。--encodingUTF8字符集要存中文就必须写。--compatible-modeoracle打开 Oracle 兼容模式。如果项目是从 Oracle 迁过来的没有这个模式dual表、PL/SQL 可能直接失效。initdb 完成后会要求输入密码看到 “Success. You can now start the database server” 就是成功了。如果提示缺库比如libpq.so.5回看第 5 章处理。4.2 用 sys_ctl 启停数据库启停数据库不要直接调kingbase二进制用同目录下的sys_ctl。它相当于 PG 的pg_ctl负责启动、停止、状态查询和日志落盘/opt/Kingbase/ES/V8/bin/sys_ctl -D /data/kingbase_data \ -l /data/kingbase_data/sys_log/startup.log start-l指定日志文件绝对路径。日志目录如果不存在启动会直接失败所以先执行mkdir -p /data/kingbase_data/sys_log。启动后立刻看状态/opt/Kingbase/ES/V8/bin/sys_ctl -D /data/kingbase_data status看到server running就成功。停止库的命令/opt/Kingbase/ES/V8/bin/sys_ctl -D /data/kingbase_data stop -m fast-m fast相当于 Oracle 的 immediate会等待事务中止后停止避免数据丢失。除非库已经卡死否则不要用-m immediate。4.3 注册 systemd 服务开机自启数据库没有开机自启相当于给自己埋雷。我用 systemd 管理在/etc/systemd/system/kingbasees.service写入[Unit] DescriptionKingbaseES database server Afternetwork.target [Service] Userkingbase Groupkingbase Typeforking ExecStart/opt/Kingbase/ES/V8/bin/sys_ctl -D /data/kingbase_data -l /data/kingbase_data/sys_log/startup.log start ExecStop/opt/Kingbase/ES/V8/bin/sys_ctl -D /data/kingbase_data stop -m fast ExecReload/opt/Kingbase/ES/V8/bin/sys_ctl -D /data/kingbase_data reload Restarton-failure LimitNOFILE65536 LimitNPROC65536 [Install] WantedBymulti-user.targetLimitNOFILE和LimitNPROC必须写。金仓连接数一上来文件描述符不够的报错很常见默认 1024 根本不够用。写完执行sudo systemctl daemon-reload sudo systemctl enable --now kingbaseesTypeforking是因为sys_ctl start会 fork 出后台数据库进程。如果启动失败用journalctl -xeu kingbasees看日志。还有一个容易忽略的点如果数据库监听的端口、socket 目录在kingbase.conf里改过systemd 的ExecStart参数也要同步否则重启后根本找不到实例。4.4 首次连接验证ksql 跑通建库建表装完库之后连接验证至少要包含两步能不能登录、能不能建表。命令/opt/Kingbase/ES/V8/bin/ksql -U system -h 127.0.0.1 -p 54321 -d postgres-d postgres是默认维护库如果你 initdb 时没建test用postgres最稳。登录成功后执行create user app_user password App1234; create database app_db owner app_user; \q如果提示 system 密码不对看第 5 章重置密码如果提示FATAL: no pg_hba.conf entry for host那是认证文件没加对应 IP 的规则。去/data/kingbase_data/pg_hba.conf加一行host all all 0.0.0.0/0 md5改完执行sys_ctl reload生效。这一步几乎是远程连接必须做的漏掉的概率非常高我每次装完都先检查。5. 装完就“翻车”的五个常见坑现象、原因与修复顺序5.1 libpq.so.5 找不到现象执行/opt/Kingbase/ES/V8/bin/ksql报error while loading shared libraries: libpq.so.5: cannot open shared object file。原因金仓自带的lib目录没有进入LD_LIBRARY_PATH系统默认找不到数据库自带的libpq。解决先用ldd /opt/Kingbase/ES/V8/bin/ksql确认缺失再设置环境变量export LD_LIBRARY_PATH/opt/Kingbase/ES/V8/lib:$LD_LIBRARY_PATH想永久生效就写进~/.bashrcecho export LD_LIBRARY_PATH/opt/Kingbase/ES/V8/lib:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc如果是用 systemd 启动的服务还需要在[Service]段加一行EnvironmentLD_LIBRARY_PATH/opt/Kingbase/ES/V8/lib否则服务能起但命令行工具会崩。5.2 system 初始密码到底在哪现象安装时没注意初始化输出连接时一直报password authentication failed for user system。网上教程里“system/system”“system/123456”试了一圈都进不去。原因金仓初始化时不会固定一个“所有人一样”的密码。console 安装或静默安装如果没走完密码配置系统会生成一个随机 token 写进安装日志。网上很多旧版本教程写的默认密码在 V8R3C2B0100 上已经不管用了。解决如果用的静默安装先看install.properties里的kb_password字段。没填的话用单用户模式重置/opt/Kingbase/ES/V8/bin/sys_ctl -D /data/kingbase_data stop /opt/Kingbase/ES/V8/bin/kingbase -D /data/kingbase_data --single -P 54321在提示符下执行alter user system password NewStrong#2024;输入exit退出再用新密码连接。注意单用户模式要求数据目录属主是 kingbase否则会报 “could not create lock file”。5.3 授权文件 license.dat 的位置和有效期现象数据库能启动但创建数据库或查询某些视图时提示license expired或a valid license is required。原因安装器没找到有效授权文件装了默认试用授权过期后功能受限。金仓授权文件固定叫license.dat文件名不能改。解决拿到正式授权后把它放到/opt/Kingbase/ES/V8/bin/license.dat或安装时指定的kb_license路径确保属主是 kingbase然后重启数据库。确认授权是否加载/opt/Kingbase/ES/V8/bin/ksql -U system -d postgres -c select show_license();如果输出里有expiration_date和并发数说明授权已生效。如果这个函数不存在试试select * from sys_license;两个都不行就看/data/kingbase_data/sys_log/startup.log里关于 license 的日志行。5.4 数据盘被 WAL 日志撑爆现象业务突然全部连不上df -h一看数据盘 100%。数据库日志和 WAL 文件把盘填满数据库反复崩溃。原因默认配置里日志保留量和 WAL 增长没有上限高并发下几天就能把盘打满。解决先清理能清的临时文件和旧归档然后进kingbase.conf调参数log_truncate_on_rotation on log_rotation_age 1d log_rotation_size 100MB max_slot_wal_keep_size 1GB改完sys_ctl reload不用重启。同时挂一个定时任务把老日志压缩归档。生产库一定不要把 WAL 目录和数据文件放在同一个只有几十 GB 的分区这是硬教训。5.5 JDBC 驱动与连接串不匹配现象navicat 连得上Java 程序用jdbc:postgresql://host:54321/db却连不上报Connection refused或握手失败。原因金仓 JDBC 驱动是专用 jar不是 PostgreSQL JDBC。连接 URL 前缀必须是jdbc:kingbase8://端口是 54321。用 PG 驱动即使网络通也可能在握手阶段被拒。解决换成官方 kingbase8 驱动URL 写法String url jdbc:kingbase8://127.0.0.1:54321/app_db; String user system; String pass 你的密码; Class.forName(com.kingbase8.Driver);如果你不确定驱动类名把 jar 包解开看META-INF里的 Driver 类名比猜靠谱。还要注意java 项目里如果混用了 postgresql 和 kingbase8 两个驱动有时会因为 DriverManager 加载顺序出错建议只放一个金仓驱动。6. 金仓装完之后我习惯做的最后三个小动作第一件事把LD_LIBRARY_PATH写进/etc/profile.d/kingbase.sh而不是只靠用户手工 source。因为 crontab 里的环境比交互终端干净很多脚本里漏了环境变量会得到一堆找不到 lib 的报错。我的统一写法# /etc/profile.d/kingbase.sh export PATH/opt/Kingbase/ES/V8/bin:$PATH export LD_LIBRARY_PATH/opt/Kingbase/ES/V8/lib:$LD_LIBRARY_PATH第二件事用一条 SQL 快速确认实例状态和兼容模式比翻日志直观select version(); show compatible_mode; select show_license();如果compatible_mode输出为空或不含 oracle而你所在的项目又依赖 Oracle 语法就要趁数据量还小的时候考虑重新初始化或者调整连接参数而不是等项目快上线才发现dual表查询都过不了。这个“兼容模式”是金仓从 Oracle 迁移项目的关键检查点装完库第一分钟就该确认。第三件事克隆测试环境时我不会再重复跑安装程序。直接在目标机器上解压一个打包好的整目录改掉kingbase.conf里的port用同样的绝对路径启动十几分钟就能多出一套库。操作顺序是先停源库tar打包/opt/Kingbase/ES/V8和数据目录到目标机器解压到相同路径再sys_ctl start。注意源库和克隆库的 machine-id 如果一样可能造成锁文件相关异常配置不同的 socket 目录或者在 systemd 里调整启动参数就可以规避。这个习惯帮我节省了大量重复安装时间也让交付结果完全一致。希望帮到你。本文还有配套的精品资源点击获取