人大金仓 KingbaseES 学习 02:V9 单机安装与服务验证
目标
上一篇完成了麒麟 Linux 虚拟机的部署前检查。这一篇继续记录 KingbaseES V9 单机安装,以及安装后最小可用性验证。
这里我只保留已经完成并验证过的步骤。安装密码、license 内容等敏感信息不记录。
本次安装结果
| 项目 | 当前值 |
|---|---|
| 安装介质 | KingbaseES_V009R001C002B0014_Lin64_install.iso |
| 数据库版本 | V009R001C002B0014 |
| 操作系统 | Kylin Linux Advanced Server V10 |
| 安装用户 | kingbase |
| 安装目录 | /opt/Kingbase/ES/V9 |
| 数据目录 | /data/kingbase/data |
| 监听端口 | 54321 |
| 数据库用户 | system |
| 验证数据库 | test |
| 字符编码 | UTF8 |
| Locale | zh_CN.UTF-8 |
| 兼容模式 | Oracle |
| 大小写敏感 | 是 |
| 认证方式 | scram-sha-256 |
| 服务脚本 | kingbased.service |
上传并校验安装介质
安装介质上传到虚拟机后,先在服务器端再次校验。目的不是和官方值比对,而是确认本地文件和上传后的文件一致。
# 进入安装介质目录
cd /home/kingbase/install
# 查看 ISO 文件大小和属主
ls -lh KingbaseES_V009R001C002B0014_Lin64_install.iso
# 校验 ISO 的 MD5
md5sum KingbaseES_V009R001C002B0014_Lin64_install.iso
# 校验 ISO 的 SHA1
sha1sum KingbaseES_V009R001C002B0014_Lin64_install.iso
# 把 ISO 文件属主交给安装用户
chown kingbase:kingbase KingbaseES_V009R001C002B0014_Lin64_install.iso服务器端校验值和本地一致:
MD5: c2c1af691435d953146222dcd5aa11d5
SHA1: cc8aea1a2897a7d6afbdef51bf28881e8d313b54示例输出:
[root@Kingbase-Server install]# ls -lh KingbaseES_V009R001C002B0014_Lin64_install.iso
-rw-r--r-- 1 root root 2.6G Jun 10 14:44 KingbaseES_V009R001C002B0014_Lin64_install.iso
[root@Kingbase-Server install]# md5sum KingbaseES_V009R001C002B0014_Lin64_install.iso
c2c1af691435d953146222dcd5aa11d5 KingbaseES_V009R001C002B0014_Lin64_install.iso
[root@Kingbase-Server install]# sha1sum KingbaseES_V009R001C002B0014_Lin64_install.iso
cc8aea1a2897a7d6afbdef51bf28881e8d313b54 KingbaseES_V009R001C002B0014_Lin64_install.iso
[root@Kingbase-Server install]# chown kingbase:kingbase KingbaseES_V009R001C002B0014_Lin64_install.iso
[root@Kingbase-Server install]# ls -lh KingbaseES_V009R001C002B0014_Lin64_install.iso
-rw-r--r-- 1 kingbase kingbase 2.6G Jun 10 14:44 KingbaseES_V009R001C002B0014_Lin64_install.isolicense 文件同样上传到 /home/kingbase/install,只调整属主,不记录 license 内容:
# 确认 license 文件存在
ls -lh license_41248_0.dat
# 把 license 文件属主交给安装用户
chown kingbase:kingbase license_41248_0.dat挂载 ISO
使用 root 挂载 ISO,后续安装程序由 kingbase 用户执行。
# 创建 ISO 挂载目录
mkdir -p /mnt/kingbase_iso
# 只读挂载安装 ISO
mount -o loop,ro /home/kingbase/install/KingbaseES_V009R001C002B0014_Lin64_install.iso /mnt/kingbase_iso
# 确认挂载结果
findmnt /mnt/kingbase_iso
# 查看 ISO 顶层内容
ls -lh /mnt/kingbase_iso
# 查看安装文件
ls -lh /mnt/kingbase_iso/setup本次挂载后看到的关键文件:
/mnt/kingbase_iso/setup.sh
/mnt/kingbase_iso/setup/install.bin
/mnt/kingbase_iso/setup/silent.cfg示例输出:
[root@Kingbase-Server install]# findmnt /mnt/kingbase_iso
TARGET SOURCE FSTYPE OPTIONS
/mnt/kingbase_iso /dev/loop0 iso9660 ro,relatime,nojoliet,check=s,map=n,blocksize=2048
[root@Kingbase-Server install]# ls -lh /mnt/kingbase_iso
total 6.0K
dr-xr-xr-x 2 root root 2.0K Sep 23 2024 setup
-r-xr-xr-x 1 root root 3.9K Sep 23 2024 setup.sh
[root@Kingbase-Server install]# ls -lh /mnt/kingbase_iso/setup
total 2.6G
-r-xr-xr-x 1 root root 46 Sep 23 2024 MD5
-r--r--r-- 1 root root 8.6M Sep 23 2024 WenQuanDengKuanZhengHei-1.ttf
-r-xr-xr-x 1 root root 2.6G Sep 23 2024 install.bin
-r--r--r-- 1 root root 2.1K Sep 23 2024 silent.cfgsilent.cfg 中的默认安装目录指向 /opt/Kingbase/ES/V9,和本次 V9 学习路径一致。
执行控制台安装
切换到 kingbase 用户后,从挂载目录启动控制台安装:
# 切换到安装用户
su - kingbase
# 进入 ISO 挂载目录
cd /mnt/kingbase_iso
# 使用控制台模式启动安装程序
sh setup.sh -i console本次安装选择的关键参数:
安装目录:/opt/Kingbase/ES/V9
数据目录:/data/kingbase/data
监听端口:54321
数据库用户:system
验证数据库:test
字符编码:UTF8
Locale:zh_CN.UTF-8
兼容模式:ORACLE
大小写敏感:YES
数据块大小:8k
认证方式:scram-sha-256安装完成后,目录 /opt/Kingbase/ES/V9 下会出现一组指向实际版本目录的软链接,例如 Server、ClientTools、SupTools、Uninstall 等。
执行 root 脚本
安装结束后,按提示使用 root 执行安装脚本生成的 root.sh:
# 使用 root 执行安装后的系统配置脚本
sh /opt/Kingbase/ES/V9/install/script/root.sh本次执行后数据库被拉起:
KingbaseES V9 started successfully数据目录已经生成数据库实例文件:
# 查看数据目录内容
ls -lh /data/kingbase/data关键文件包括:
kingbase.conf
sys_hba.conf
sys_ident.conf
sys_wal/
sys_log/
kingbase.pid处理服务接管
root.sh 执行后,数据库进程已经在运行。此时直接执行 systemctl start kingbased.service,会因为同一个数据目录里已有进程而失败。
本次日志里的关键信息是:
FATAL: lock file "kingbase.pid" already exists
HINT: Is another kingbase (PID 14176) running in data directory "/data/kingbase/data"?这个错误不是安装失败,而是重复启动。同一个数据目录只能有一个数据库主进程。
示例输出:
[root@Kingbase-Server install]# tail -n 120 /data/kingbase/data/sys_log/startup.log
2026-06-10 15:34:48.318 CST [40358] LOG: config the real archive_command string as soon as possible to archive WAL files
2026-06-10 15:34:48.319 CST [40358] FATAL: lock file "kingbase.pid" already exists
2026-06-10 15:34:48.319 CST [40358] HINT: Is another kingbase (PID 14176) running in data directory "/data/kingbase/data"?处理方式是先确认当前实例状态,再做一次受控停库,然后交给 systemd 服务重新启动:
# 查看服务脚本能否识别当前数据库状态
service kingbased status
# 受控停止数据库实例
service kingbased stop
# 等待端口释放
sleep 3
# 确认 54321 已停止监听
ss -ltnp | grep 54321 || echo "54321 stopped"
# 清理 systemd 里之前失败的状态
systemctl reset-failed kingbased.service
# 通过 systemd 启动 KingbaseES 服务
systemctl start kingbased.service
# 查看 systemd 服务状态
systemctl status kingbased.service --no-pager
# 确认端口重新监听
ss -ltnp | grep 54321启动成功后,systemctl status 显示:
Active: active (exited)
KingbaseES V9 started successfully示例输出:
[root@Kingbase-Server install]# service kingbased stop
Stopping KingbaseES V9:
等待服务器进程关闭 .... 完成
服务器进程已经关闭
[root@Kingbase-Server install]# ss -ltnp | grep 54321 || echo "54321 stopped"
54321 stopped
[root@Kingbase-Server install]# systemctl start kingbased.service
[root@Kingbase-Server install]# systemctl status kingbased.service --no-pager
● kingbased.service - LSB: Start and stop the kingbase server
Loaded: loaded (/etc/rc.d/init.d/kingbased; generated)
Active: active (exited) since Wed 2026-06-10 15:39:29 CST; 35s ago
Jun 10 15:39:28 Kingbase-Server kingbased[40678]: 服务器进程已经启动
Jun 10 15:39:29 Kingbase-Server kingbased[40659]: KingbaseES V9 started successfully
Jun 10 15:39:29 Kingbase-Server systemd[1]: Started LSB: Start and stop the kingbase server.这里的 active (exited) 是 SysV init 脚本被 systemd 包装后的表现。判断数据库是否真正运行,要继续看端口和 sys_ctl status。
启用开机自启
# 设置 KingbaseES 服务开机自启
systemctl enable kingbased.service
# 确认自启状态
systemctl is-enabled kingbased.service本次结果为:
enabled重启后验证
为了确认自启不是只写入配置,还要重启虚拟机做一次验证:
# 重启服务器
reboot重新连接后,先看服务日志:
# 查看本次开机后服务启动日志
journalctl -u kingbased.service -b --no-pager -n 80本次启动日志显示:
KingbaseES V9 started successfully
Started LSB: Start and stop the kingbase server.示例输出:
[root@Kingbase-Server ~]# journalctl -u kingbased.service -b --no-pager -n 80
Jun 10 16:09:17 Kingbase-Server systemd[1]: Starting LSB: Start and stop the kingbase server...
Jun 10 16:09:17 Kingbase-Server kingbased[1227]: Starting KingbaseES V9:
Jun 10 16:09:26 Kingbase-Server kingbased[1354]: 服务器进程已经启动
Jun 10 16:09:26 Kingbase-Server kingbased[1227]: KingbaseES V9 started successfully
Jun 10 16:09:26 Kingbase-Server systemd[1]: Started LSB: Start and stop the kingbase server.继续看端口和实例状态:
# 确认数据库端口正在监听
ss -ltnp | grep 54321
# 使用 kingbase 用户确认实例状态
su - kingbase -c 'export PATH=/opt/Kingbase/ES/V9/Server/bin:$PATH; sys_ctl -D /data/kingbase/data status'本次结果显示数据库进程正在运行:
/opt/Kingbase/ES/V9/KESRealPro/V009R001C002B0014/Server/bin/kingbase "-D" "/data/kingbase/data"示例输出:
[root@Kingbase-Server ~]# ss -ltnp | grep 54321
LISTEN 0 244 0.0.0.0:54321 0.0.0.0:* users:(("kingbase",pid=1452,fd=13))
LISTEN 0 244 [::]:54321 [::]:* users:(("kingbase",pid=1452,fd=14))
[root@Kingbase-Server ~]# su - kingbase -c 'export PATH=/opt/Kingbase/ES/V9/Server/bin:$PATH; sys_ctl -D /data/kingbase/data status'
sys_ctl: 正在运行服务器进程(PID: 1452)
/opt/Kingbase/ES/V9/KESRealPro/V009R001C002B0014/Server/bin/kingbase "-D" "/data/kingbase/data"SQL 登录验证
最后使用 ksql 登录本机数据库,确认数据库不仅进程存在,而且可以正常执行 SQL:
# 切换到 kingbase 用户
su - kingbase
# 临时加入 KingbaseES 命令目录
export PATH=/opt/Kingbase/ES/V9/Server/bin:$PATH
# 登录 test 数据库
ksql -h 127.0.0.1 -p 54321 -U system -d test进入 ksql 后执行:
\conninfo
select version();
show data_directory;
show port;
select current_user, current_database();
\q本次验证结果:
test=# \conninfo
以用户 "system" 的身份, 在主机"127.0.0.1", 端口"54321"连接到数据库 "test"
test=# select version();
KingbaseES V009R001C002B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
test=# show data_directory;
/data/kingbase/data
test=# show port;
54321
test=# select current_user, current_database();
system | test日志检查
启动日志中有一条提示:
config the real archive_command string as soon as possible to archive WAL files这不是本次安装失败信息。它是在提醒后续如果要做归档和备份恢复实验,需要配置真实的归档命令。当前单机安装和基础连接验证可以继续推进,归档配置留到备份恢复阶段处理。
本次也出现过一次 FATAL: lock file "kingbase.pid" already exists。原因是数据库已经运行时又执行了服务启动,属于重复启动,不是数据目录损坏。受控停库后再由 systemd 启动,问题已经解决。
当前进度
KingbaseES V9 单机安装已经完成。当前已经验证:
- 安装目录和数据目录生成正常。
kingbased.service已设置开机自启。- 服务器重启后数据库能自动启动。
54321端口监听正常。sys_ctl status能看到数据库进程。ksql可以登录test数据库。- 基础 SQL 可以返回版本、数据目录、端口、当前用户和当前数据库。
下一篇继续进入启停管理、ksql 常用命令和基础巡检。