引言
记得在几年前一个关键行业的“国产化替代”项目中,团队负责将一套核心交易系统从Oracle迁移到KingbaseES。初期,团队里一位经验丰富的Oracle DBA想当然地套用了开源PostgreSQL的运维经验,甚至在sys_hba.conf里留下了过于宽松的认证策略。结果,系统在预上线安全审查中被直接亮了红牌,理由是“不符合三级等保的安全审计要求”。这个小插曲给我们敲响了警钟:KingbaseES虽源于PostgreSQL,但它绝不是简单的换壳。它在安全合规、管理易用性等方面做了大量增强。
这篇文章就是为像我们当年一样,正在踏上国产数据库征途的DBA、开发和运维工程师们准备的“安装实践指南”。本文将带你从零开始,在CentOS 7环境下,不仅完成一套生产级的KingbaseES V9部署,更重要的是理解其背后的设计哲学、安全基线和运维要点,让你真正做到“知其然,更知其所以然”。
1 核心理念与安装规划
KingbaseES V9 是一款基于国际主流开源数据库PostgreSQL内核构建的企业级关系型数据库。这意味着你所熟悉的SQL标准、MVCC并发控制、丰富的数据类型等特性它都具备。但它的核心价值在于自主可控和安全合规方面的深度增强,例如内置的“三权分立”安全模型、国密算法支持等,使其能够满足国内关键信息基础设施的严格要求。
在部署之前,我们需要做出第一个重要决策:选择安装方式。
| 安装方式 | 优点 | 缺点 | 生产环境建议 |
|---|---|---|---|
| 图形化界面安装 | 对初学者友好,直观易懂,引导清晰。 | 依赖图形化环境(X11),不适用于最小化安装的服务器,难以自动化。 | 不推荐。生产服务器通常无图形界面。 |
| 字符界面(控制台)安装 | 无需图形化环境,通过交互式问答完成安装,兼顾了易用性和服务器环境的普适性。 | 自动化程度一般,仍需人工干预。 | 推荐。适用于单次或小批量部署。 |
| 静默安装 | 完全自动化,通过预置的配置文件完成无人值守安装,效率极高。 | 准备工作复杂,需要提前编写好配置文件,排错相对困难。 | 强烈推荐。适用于大规模、标准化部署。 |
⚠️ 合规红线 无论采用何种方式,生产环境 必须使用从人大金仓官方渠道获取的、经过严格测试的稳定版安装介质。严禁使用任何来源不明或内部测试阶段的版本,这是保障数据安全的基石。
2 生产级安装与环境准备
以官方推荐的字符界面安装方式为主线,逐步完成部署。这种方式最能体现安装过程中的关键步骤和配置要点。
2.1 介质获取与安全校验
首先,从人大金仓官方客户服务平台获取您购买的KingbaseES V9 for Linux的安装ISO文件。在上传到服务器后,第一件也是必须做的事情,就是进行安全校验。
# 假设你已将安装包上传到 /install 目录
cd /install
# 执行md5校验
[root@centos79 install]# md5sum KingbaseES_V009R001C001B0025_Lin64_install.iso
0751089d1e19eee905443f0c893f3d94 KingbaseES_V009R001C001B0025_Lin64_install.iso
请务必将输出的MD5值与官方提供的数值进行比对,完全一致方可进行下一步。这能有效防止因文件损坏或被篡改导致的安装失败或安全隐患。
2.2 环境准备与依赖检查
1. 创建专用用户和用户组 出于安全考虑,绝不能使用root用户运行数据库。我们需要创建一个专用的kingbase用户。
groupadd kingbase
useradd -g kingbase kingbase
# 为kingbase用户设置密码(按提示输入)
passwd kingbase
2. 安装必要依赖 KingbaseES对系统有一些基础依赖,请确保它们已被安装。
yum install -y readline libicu
## 检查按照包
[root@centos79 install]# rpm -qa|grep -E 'readline|libicu'
readline-6.2-11.el7.x86_64
readline-devel-6.2-11.el7.x86_64
libicu-50.2-4.el7_7.x86_64
3. 关闭防火墙与SELinux(或配置策略) 为了简化安装过程,我们先临时关闭防火墙和SELinux。在生产环境中,应在安装完成后配置精确的防火墙策略。
# 临时关闭
systemctl stop firewalld
setenforce 0
# 永久禁用(生产环境建议配置策略而非禁用)
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2.3 挂载介质与准备安装文件
接下来,我们将ISO文件挂载,并将安装文件复制出来,以便后续操作。
# 创建挂载点
mkdir /mnt/kes
# 挂载ISO文件
mount -o loop /install/KingbaseES_V009R001C001B0025_Lin64_install.iso /mnt/kes
## 提示:mount: /dev/loop0 写保护,将以只读方式挂载
[root@centos79 install]# ls /mnt/kes/
setup setup.sh
[root@centos79 install]# du -sh /mnt/kes/
2.2G /mnt/kes/
# 复制安装文件到工作目录
mkdir -p /install/KES-V9R1C1B25-INSTALL
cp -r /mnt/kes/* /install/KES-V9R1C1B25-INSTALL/
# 卸载ISO
umount /mnt/kes
2.4 目录规划与数据库初始化
💡 最佳实践 生产环境的目录规划至关重要。 数据目录(data)、归档日志目录(archive)和备份目录(backup) 必须分离到不同的物理磁盘或逻辑卷上,以分散I/O压力并提高数据安全性。推荐使用xfs文件系统,并使用noatime参数挂载以减少不必要的I/O。
1. 创建规划目录
# 创建程序、数据、备份、归档等核心目录
mkdir -p /KingbaseES/V9 /data /backup /archive
# 将所有权赋予kingbase用户
chown -R kingbase:kingbase /KingbaseES /data /backup /archive /install
2. 运行安装程序 现在,切换到kingbase用户,开始执行安装。
# 准备授权文件
[root@centos79 install]# ls -l license_企业版_90天.zip
-rw-r--r--. 1 kingbase kingbase 2735 11月 18 09:46 license_企业版_90天.zip
[root@centos79 install]# unzip license_企业版_90天.zip
Archive: license_企业版_90天.zip
creating: license_34148/
inflating: license_34148/license_34148_0.dat
# 切换用户
su - kingbase
# 启动字符界面安装程序
[kingbase@centos79 ~]$ bash /install/KES-V9R1C1B25-INSTALL/setup.sh -i console
Now launch installer...
正在准备进行安装
正在从安装程序档案中提取 JRE...
正在解包 JRE...
正在从安装程序档案中提取安装资源...
配置该系统环境的安装程序...
正在启动安装程序...
===============================================================================
KingbaseES V9 (使用 InstallAnywhere 创建)
-------------------------------------------------------------------------------
正在准备控制台模式安装...
===============================================================================
请稍候
---
===============================================================================
简介
--
本安装程序将指导您完成 KingbaseES V9 的安装。
建议您在继续本次安装前,退出所有程序。
如果要回到前一屏幕进行更改,可输入“back”。
如果要取消本次安装,可随时输入“quit”。
KingbaseES Version: V9
Kingbase Type:BMJ-NO
Installer Version: V009R001C001B0025
Install DATE:202511180957
Kingbase Inc.
http://www.kingbase.com.cn
请按 <ENTER> 键继续:
接下来,安装程序会引导你完成一系列交互式配置:
- 接受许可协议:按Enter翻页,最后输入
Y接受。






- 选择安装类型:输入
1选择“完全安装”。
===============================================================================
选择安装集
-----
请选择将由本安装程序安装的“安装集”。
->1- 完全安装
2- 客户端安装
3- 定制安装
输入“安装集”的号码,或按 <ENTER> 键以接受缺省值
:
- 指定授权文件:输入你从官方获取的
license.dat文件的绝对路径。
===============================================================================
选择授权文件
------
文件路径: /install/license_34148/license_34148_0.dat
License序列号 --- 启用 --- 375DDEEA-69B1-11EE-A0E1-000C29CBE49F
生产日期 --- 启用 --- 2023-10-13
产品名称 --- 启用 --- KingbaseES V8
细分版本模板名 --- 启用 --- SALES-企业版 V9R1
产品版本号 --- 启用 --- V009R001C
浮动基准日期 ------ 启用
有效期间 --- 启用 --- 90
用户名称 --- 启用 --- 官方网站试用授权
项目名称 --- 启用 --- 官方网站试用授权
CPU检查 --- 启用 --- 0
容器名称 --- 禁用 --- 0
MAC地址 --- 启用 --- 00:00:00:00:00:00
最大连接数 --- 启用 --- 0
分区 --- 启用 --- 0
物理同步 --- 启用 --- 0
读写分离模块 --- 启用 --- 0
恢复到指定时间点 --- 启用 --- 0
集群对网络故障的容错 --- 启用 --- 0
快速加载 --- 启用 --- 0
日志压缩 --- 启用 --- 0
全文检索 --- 启用 --- 0
性能优化包(性能诊断) --- 启用 --- 0
性能优化包(性能调优) --- 启用 --- 0
保密通讯协议 --- 启用 --- 0
审计 --- 启用 --- 0
三权分立 --- 启用 --- 0
透明加密 --- 启用 --- 0
强制访问控制 --- 启用 --- 0
列加密 --- 启用 --- 0
密码复杂度 --- 启用 --- 0
用户锁定 --- 启用 --- 0
集群管理软件 --- 启用 --- 0
集群配置工具 --- 启用 --- 0
集群高级管理包 --- 启用 --- 0
并行查询 --- 启用 --- 0
并行备份还原 --- 启用 --- 0
异构数据源 --- 启用 --- 0
日志解析 --- 启用 --- 0
GIS --- 启用 --- 0
日志解析为SQL --- 启用 --- 0
操作系统类型 --- 启用 --- 0
数据守护集群 --- 启用 --- 0
多活共享存储集群 --- 启用 --- 0
- 指定安装路径:输入我们规划好的程序路径
/KingbaseES/V9。
===============================================================================
选择安装目录
------
请选择一个安装目录。
您想在哪一位置安装?
缺省安装文件夹: /opt/Kingbase/ES/V9
输入一个绝对路径,或按 <ENTER> 键以接受缺省路径
: /KingbaseES/V9
安装文件夹为: /KingbaseES/V9
是否正确? (Y/N): Y
===============================================================================
预安装摘要
-----
在继续执行前请检查以下信息:
产品名:
KingbaseES V9
安装文件夹:
/KingbaseES/V9
产品功能部件:
数据库服务器,
接口,
数据库部署工具,
高可用组件,
数据库开发管理工具,
数据迁移工具
安装空间磁盘信息
所需磁盘空间: 5378 MB 空闲磁盘空间: 16855 MB
请按 <ENTER> 键继续:
===============================================================================
准备就绪,可以安装
---------
本安装程序已准备完毕,可在下列位置安装 KingbaseES V9:
/KingbaseES/V9
按 <ENTER> 键进行安装:
===============================================================================
正在安装...
-------
[==================|==================|==================|==================]
- 指定数据目录:输入我们规划好的数据路径
/data。
===============================================================================
选择存储数据的文件夹
----------
请选择一个文件夹,该文件夹必须为空。
Data folder (默认﹕ /KingbaseES/V9/data): /data
配置初始化参数:
- 端口 (Port): 默认
54321,可根据规划修改。
===============================================================================
数据库端口
-----
请输入数据库服务监听端口,默认54321。
端口 (默认﹕ 54321):
- 超级管理员密码 (Password): 设置system用户的密码,务必使用强密码
Kingbase@02%。
===============================================================================
数据库管理员
------
请输入数据库管理员用户名。
用户名: (默认﹕ system):
===============================================================================
输入密码
----
本次安装需输入密码才能继续。
请输入密码: 请输入密码:
===============================================================================
再次输入密码
------
本次安装需再次输入密码才能继续。
- 编码 (Encoding): 推荐
UTF8。
===============================================================================
数据库服务字符集
--------
请输入服务端字符集编码。
->1- UTF8
2- GBK
3- GB18030
输入您选择的号码,或按 <ENTER> 键以接受缺省值:
- 兼容模式 (Compatible Mode): 根据应用需求选择,默认为
ORACLE。
===============================================================================
数据库兼容模式
-------
请输入数据库兼容模式。
1- PG
->2- ORACLE
3- MySQL
输入您选择的号码,或按 <ENTER> 键以接受缺省值:
- 大小写敏感 (Case Sensitive): 默认为
是(YES)。
===============================================================================
字符大小写敏感特性
---------
请输入字符大小写敏感特性。
->1- YES
2- NO
输入您选择的号码,或按 <ENTER> 键以接受缺省值:
- 其他设置:默认为
是(YES)。
===============================================================================
存储块大小
-----
请输入存储块大小。
->1- 8k
2- 16k
3- 32k
输入您选择的号码,或按 <ENTER> 键以接受缺省值:
===============================================================================
获取用户输入
------
输入请求信息
->1- sm4
2- rc4
输入您选择的号码,或按 <ENTER> 键以接受缺省值:
===============================================================================
获取用户输入
------
输入请求信息
->1- scram-sha-256
2- scram-sm3
3- sm4
4- sm3
输入您选择的号码,或按 <ENTER> 键以接受缺省值:
安装程序会自动完成数据库集簇的初始化(类似initdb)。
===============================================================================
提示
--
数据库即将被安装,需要花费一些时间,请耐心等待。
请按 <ENTER> 键继续:
===============================================================================
请稍候
---
===============================================================================
安装完成
----
恭喜!KingbaseES V9 已成功地安装到:
/KingbaseES/V9
如果您需要将 KingbaseES V9 注册为系统服务,请运行
/KingbaseES/V9/install/script/root.sh
按 <ENTER> 键以退出安装程序:
Complete.
2.5 启动验证与服务注册
安装完成后,安装程序会提示你,如果需要将KingbaseES注册为系统服务,请以root用户身份执行一个脚本。这是实现开机自启的关键一步。
1. 注册系统服务
# 退出kingbase用户,回到root
exit
# 执行服务注册脚本
[root@centos79 ~]# /KingbaseES/V9/install/script/root.sh
Starting KingbaseES V9:
等待服务器进程启动 .... 完成
服务器进程已经启动
KingbaseES V9 started successfully
看到started successfully的提示,意味着数据库已经成功启动,并被注册为systemd服务。
2. 验证服务状态 你可以使用systemctl或ps命令来验证。
# 使用systemctl
systemctl status kingbased.service
# /KingbaseES/V9/Server/bin/sys_ctl stop -D /data
# 使用ps命令确认进程
ps -ef | grep kingbase
[root@centos79 ~]# systemctl status kingbase.service
● kingbased.service - LSB: Start and stop the kingbase server
Loaded: loaded (/etc/rc.d/init.d/kingbased; bad; vendor preset: disabled)
Active: active (exited) since 二 2025-11-18 12:08:01 CST; 4s ago
Docs: man:systemd-sysv-generator(8)
Process: 18102 ExecStart=/etc/rc.d/init.d/kingbased start (code=exited, status=0/SUCCESS)
11月 18 12:08:01 centos79 systemd[1]: Starting LSB: Start and stop the kingbase server...
11月 18 12:08:01 centos79 kingbased[18102]: Starting KingbaseES V9:
11月 18 12:08:01 centos79 su[18104]: (to kingbase) root on none
11月 18 12:08:01 centos79 kingbased[18102]: 等待服务器进程启动 .... 完成
11月 18 12:08:01 centos79 kingbased[18102]: 服务器进程已经启动
11月 18 12:08:01 centos79 kingbased[18102]: KingbaseES V9 started successfully
11月 18 12:08:01 centos79 systemd[1]: Started LSB: Start and stop the kingbase server.
[root@centos79 ~]# ps -ef|grep -i kingbase
kingbase 18119 1 1 12:08 ? 00:00:00 /KingbaseES/V9/KESRealPro/V009R001C001B0025/Server/bin/kingbase -D /data
kingbase 18120 18119 0 12:08 ? 00:00:00 kingbase: logger
kingbase 18122 18119 0 12:08 ? 00:00:00 kingbase: checkpointer
kingbase 18123 18119 0 12:08 ? 00:00:00 kingbase: background writer
kingbase 18124 18119 0 12:08 ? 00:00:00 kingbase: walwriter
kingbase 18125 18119 0 12:08 ? 00:00:00 kingbase: autovacuum launcher
kingbase 18126 18119 0 12:08 ? 00:00:00 kingbase: stats collector
kingbase 18127 18119 0 12:08 ? 00:00:00 kingbase: kwr collector
kingbase 18128 18119 0 12:08 ? 00:00:00 kingbase: ksh writer
kingbase 18129 18119 0 12:08 ? 00:00:00 kingbase: ksh collector
kingbase 18130 18119 0 12:08 ? 00:00:00 kingbase: logical replication launcher
你应该能看到一系列kingbase相关的进程,包括主进程、logger、checkpointer等。
2.6 许可证激活
在刚才的安装步骤中,我们已经通过指定授权文件路径的方式激活了数据库。授权文件决定了数据库的可用功能、并发连接数、有效期等核心信息。请妥善保管好你的授权文件。
3 安全基线加固
一个刚刚装好的数据库就像一座未设防的堡垒,任何人都能轻易进入。现在,我们要为它构筑第一道防线。
3.1 客户端认证配置 (sys_hba.conf)
sys_hba.conf文件(位于数据目录/data下)是KingbaseES的客户端认证核心,它定义了“谁(用户)能从哪里(IP)以何种方式(认证方法)访问哪个数据库”。默认配置可能过于宽松,必须修改。

踩坑案例:默认配置可能包含一行
host all all 0.0.0.0/0 password,这允许任何IP地址通过密码访问任何数据库,极易成为暴力破解的目标。
修改步骤:
- 打开配置文件:
vi /data/sys_hba.conf - 注释或删除不安全的规则:将默认的宽松规则(如
password或trust)用#注释掉。 - 添加精确规则:遵循最小权限原则,只为你的应用服务器IP添加访问权限,并强制使用更安全的
scram-sha-256认证方法。
# sys_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# 拒绝所有IPv4的远程连接(默认安全)
host all all 0.0.0.0/0 reject
# 仅允许本地连接
local all all scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
# 允许应用服务器(192.168.1.100)以密码方式连接业务库(app_db)
host app_db app_user 192.168.1.100/32 scram-sha-256
修改后,需要重新加载配置使其生效:su - kingbase -c "/KingbaseES/V9/Server/bin/kb_ctl reload -D /data"。
3.2 权限最小化:用户与角色管理
永远不要用system超级管理员用户连接业务。应为每个应用或模块创建专用的低权限用户。
-- 使用ksql工具登录
/KingbaseES/V9/Server/bin/ksql -U system -d test -p 54321
-- 创建一个不能登录的角色,作为权限的容器
CREATE ROLE app_readonly;
-- 创建业务用户,并赋予它角色
CREATE USER app_user WITH PASSWORD 'YourComplexPassword!' IN ROLE app_readonly;
-- 为角色授予对特定表的只读权限
GRANT SELECT ON TABLE production.orders TO app_readonly;
-- 授予连接数据库的权限
GRANT CONNECT ON DATABASE app_db TO app_readonly;
3.3(特色功能)三权分立简介
这是KingbaseES区别于PostgreSQL的一大安全特色,旨在满足金融、电信等行业的合规要求,将传统DBA的权限一分为三:
- 数据库管理员 (DBA): 负责数据库的日常运维、性能调优,但不能审计,也无权访问某些敏感数据。
- 安全管理员 (Security Officer): 负责定义安全策略、管理用户和权限、配置加密等,独立于DBA。
- 审计管理员 (Auditor): 负责设置和查看审计日志,监督DBA和安全员的操作,但不能修改数据或配置。
启用三权分立需要在初始化数据库时指定,或在后期进行配置。这是一个高级特性,但了解其存在对于理解KingbaseES的设计理念至关重要。
4 核心参数调优(基于kingbase.conf)
数据库的性能表现,很大程度上取决于kingbase.conf(位于数据目录/data下)中的参数配置。以下是生产环境必须关注的核心参数调优清单。
| 参数名 | 官方默认值 | 生产级推荐值 | 设置原则/计算公式 | 踩坑后果 |
|---|---|---|---|---|
| listen_addresses | localhost | * 或指定IP | 监听地址。*表示所有IP,生产环境必须指定为服务器的业务IP,配合sys_hba.conf使用。 | 设为*且sys_hba.conf配置不当,会将数据库暴露在公网上,极度危险。 |
| max_connections | 100 | 200 - 500 (或根据应用规划) | 最大并发连接数。每个连接消耗一定内存,需与应用连接池大小匹配。 | 设置过高会耗尽内存;设置过低应用会报“too many clients”错误。 |
| shared_buffers | 128MB | 物理内存的25% | 最重要的参数。数据库用于缓存数据块的共享内存大小。 | 设置过低,大量读写操作将直接落盘,I/O繁忙,性能急剧下降。 |
| work_mem | 4MB | 32MB - 128MB | 单个查询操作(如排序、哈希连接)可使用的内存。 | 设置过低,复杂查询会频繁使用临时磁盘文件,性能极差;过高则可能因并发查询导致内存溢出。 |
| maintenance_work_mem | 64MB | 1GB - 2GB | 维护操作(如VACUUM, CREATE INDEX)使用的内存。 | 设置过低,索引创建和垃圾回收会非常缓慢,影响整体性能。 |
| max_wal_size | 1GB | 16GB - 64GB | 控制检查点(Checkpoint)频率的参数之一。当WAL日志文件超过此值时触发检查点。 | 设置过小,检查点过于频繁,导致磁盘I/O风暴;过大则恢复时间变长。 |
| checkpoint_completion_target | 0.5 | 0.9 | 平滑检查点I/O的参数,让I/O压力在两个检查点之间均匀分布。 | 默认值0.5可能导致I/O在短时间内集中爆发,引起性能抖动。 |
5 基础管理与操作实践
5.1 客户端ksql入门
ksql是KingbaseES的命令行交互工具,是DBA最亲密的伙伴。
# 以kingbase用户身份登录
su - kingbase
# 连接数据库
/KingbaseES/V9/Server/bin/ksql -h 127.0.0.1 -p 54321 -U system -d test
常用元命令:
\l:列出所有数据库。\c <db_name>:连接到其他数据库。\d <table_name>:显示表结构。\dt:列出当前模式下的所有表。\du:列出所有用户/角色。\conninfo:显示当前连接信息。\q:退出。
test=# \l
数据库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
-----------+--------+----------+-------------+-------------+-------------------
kingbase | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
security | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
template1 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
test | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
(5 行记录)
test=# \c test
You are now connected to database "test" as userName "system".
test=# \dt
Did not find any relations.
test=# \du
角色列表
角色名称 | 属性 | 成员属于
--------------+--------------------------------------------+----------------
app_readonly | 无法登录 | {}
app_user | | {app_readonly}
kcluster | 无法登录 | {}
sao | 没有继承 | {}
sso | 没有继承 | {}
system | 超级用户, 建立角色, 建立 DB, 复制, 绕过RLS | {}
test=# \conninfo
以用户 "system" 的身份, 在主机"127.0.0.1", 端口"54321"连接到数据库 "test"
test=# \q
5.2 库、模式、用户、表空间操作
-- 创建表空间(需提前在操作系统创建好目录/tbs/tbs_app)
-- 目录不能放在数据目录下/data,,不然 错误: 表空间位置不应该位于数据目录内
CREATE TABLESPACE tbs_app LOCATION '/tbs/tbs_app';
test=# show data_directory;
data_directory
----------------
/data
(1 行记录)
[kingbase@centos79 ~]$ ls -l /tbs/tbs_app/SYS_12_202305151/
总用量 0
-- 创建数据库,并指定默认表空间
CREATE DATABASE app_db TABLESPACE tbs_app;
-- 连接到新库
\c app_db
-- 在新库中创建模式(Schema),用于逻辑隔离
CREATE SCHEMA app_schema;
-- 创建业务表,并指定到特定模式
CREATE TABLE app_schema.users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
--查看文件
[kingbase@centos79 ~]$ ls -R /tbs/tbs_app
/tbs/tbs_app:
SYS_12_202305151
/tbs/tbs_app/SYS_12_202305151:
16387
/tbs/tbs_app/SYS_12_202305151/16387:
112 12195_fsm 12253 1255 2603 2615_fsm 2665 2704 3079_vm 3456_vm 3603 4157 4267 6999 8050
113 12195_vm 12254 1255_fsm 2603_fsm 2615_vm 2666 2753 3080 3466 3603_fsm 4158 4268 702 8050_fsm
1177 12196 12255 1255_vm 2603_vm 2616 2667 2753_fsm 3081 3466_fsm 3603_vm 4159 4269 703 8050_vm
1180 12197 12256 1259 2604 2616_fsm 2668 2753_vm 3085 3466_vm 3604 4160 4270 704 8052
12180 12198 12257 1259_fsm 2604_fsm 2616_vm 2669 2754 3118 3467 3605 4161 4271 7976 8052_fsm
12180_fsm 12199 12258 1259_vm 2604_vm 2617 2670 2755 3119 3468 3606 4162 4272 7978 8052_vm
12180_vm 12200 12263 1382 2605 2617_fsm 2673 2756 3164 3501 3607 4163 4273 7979 8053
12181 12235 12263_fsm 1417 2605_fsm 2617_vm 2674 2757 3256 3502 3608 4164 4274 7980 8068
12182 12235_fsm 12263_vm 1418 2605_vm 2618 2675 2830 3257 3503 3609 4165 4275 7981 8069
12183 12235_vm 12264 16389 2606 2618_fsm 2678 2831 3258 3534 3712 4166 4549 7985 8070
12183_fsm 12239 12265 16393 2606_fsm 2618_vm 2679 2832 3350 3541 3764 4167 4556 7986 8080
12183_vm 12239_fsm 12266 174 2606_vm 2619 2680 2833 3351 3541_fsm 3764_fsm 4168 4601 8025 8081
12184 12239_vm 12267 175 2607 2619_fsm 2681 2834 3379 3541_vm 3764_vm 4169 4602 8026 8082
12185 12240 12268 2187 2607_fsm 2619_vm 2682 2835 3380 3542 3766 4170 4603 8027 8083
12186 12241 12269 2224 2607_vm 2620 2683 2836 3381 3574 3767 4171 4634 8028 8084
12186_fsm 12242 12270 2224_fsm 2608 2650 2684 2836_fsm 3394 3575 3997 4172 5002 8029 8085
12186_vm 12243 12271 2224_vm 2608_fsm 2651 2685 2836_vm 3394_fsm 3576 4143 4173 548 8030 8098
12187 12243_fsm 12271_fsm 2328 2608_vm 2652 2686 2837 3394_vm 3596 4144 4174 549 8031 8099
12188 12243_vm 12271_vm 2336 2609 2653 2687 2838 3395 3597 4145 4187 6102 8032 826
12189 12244 12272 2337 2609_fsm 2654 2688 2838_fsm 3429 3598 4146 4188 6104 8033 827
12189_fsm 12245 12273 2579 2609_vm 2655 2689 2838_vm 3430 3599 4147 4190 6106 8034 828
12189_vm 12246 12452 2600 2610 2656 2690 2839 3431 3600 4148 4191 6108 8035 sys_filenode.map
12190 12247 12452_fsm 2600_fsm 2610_fsm 2657 2691 2840 3433 3600_fsm 4149 4192 6110 8036 sys_internal.init
12191 12248 12452_vm 2600_vm 2610_vm 2658 2692 2840_fsm 3434 3600_vm 4150 4260 6111 8041 SYS_VERSION
12192 12249 1247 2601 2611 2659 2693 2840_vm 3435 3601 4151 4261 6112 8044
12192_fsm 12249_fsm 1247_fsm 2601_fsm 2612 2660 2696 2841 3439 3601_fsm 4152 4262 6113 8044_fsm
12192_vm 12249_vm 1247_vm 2601_vm 2612_fsm 2661 2699 2995 3440 3601_vm 4153 4263 6117 8044_vm
12193 12250 1249 2602 2612_vm 2662 2701 2996 3455 3602 4154 4264 6664 8045
12194 12251 1249_fsm 2602_fsm 2613 2663 2702 3079 3456 3602_fsm 4155 4265 6665 8045_fsm
12195 12252 1249_vm 2602_vm 2615 2664 2703 3079_fsm 3456_fsm 3602_vm 4156 4266 6666 8045_vm
5.3 日志解读与监控
数据库日志位于数据目录的sys_log子目录下,是排查问题的金矿。连接失败、权限错误、慢查询等信息都会在这里留下痕迹。请养成定期查看和分析日志的习惯。
[kingbase@centos79 ~]$ ls -l /data/sys_log
总用量 12
-rw-------. 1 kingbase kingbase 2232 11月 18 12:07 kingbase-2025-11-18_120257.log
-rw-------. 1 kingbase kingbase 911 11月 18 12:17 kingbase-2025-11-18_120801.log
-rw-------. 1 kingbase kingbase 2023 11月 18 12:08 startup.log
5.4 逻辑备份与恢复
KingbaseES提供了sys_dump和sys_restore工具(功能对标pg_dump/pg_restore)用于逻辑备份。
1. 全库备份
# 以kingbase用户执行
/KingbaseES/V9/Server/bin/sys_dump -U system -h localhost -p 54321 -F c -b -v -f /backup/app_db_full.dump app_db
## 日志信息如下
口令:
sys_dump: last built-in OID is 16383
sys_dump: reading extensions
sys_dump: identifying extension members
sys_dump: reading schemas
sys_dump: reading user-defined tables
sys_dump: reading user-defined functions
sys_dump: reading user-defined types
...
sys_dump: saving standard_conforming_strings = on
sys_dump: saving search_path = public
sys_dump: saving database definition
sys_dump: dumping contents of table "app_schema.users"
## 查看结果
[kingbase@centos79 ~]$ ls -lh /backup/
总用量 60K
-rw-------. 1 kingbase kingbase 59K 11月 18 12:24 app_db_full.dump
2. 恢复数据库
# 先创建一个空数据库
/KingbaseES/V9/Server/bin/createdb -U system -p 54321 app_db_restored
# 执行恢复
/KingbaseES/V9/Server/bin/sys_restore -U system -h localhost -p 54321 -d app_db_restored -v /backup/app_db_full.dump
## 备份日志如下
sys_restore: connecting to database for restore
口令:
sys_restore: creating SCHEMA "app_schema"
...
## 查看恢复的数据库
app_db=# \l app*
数据库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
-----------------+--------+----------+-------------+-------------+----------
app_db | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
app_db_restored | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
(2 行记录)
app_db=# \c app_db_restored
You are now connected to database "app_db_restored" as userName "system".
app_db_restored=# \d app_schema.users
数据表 "app_schema.users"
栏位 | 类型 | 校对规则 | 可空的 | 预设
------------+----------------------------+----------+----------+-------------------
id | integer | | not null |
username | character varying(50 char) | | not null |
created_at | timestamp with time zone | | | CURRENT_TIMESTAMP
索引:
"users_pkey" PRIMARY KEY, btree (id)
6 操作系统层协同优化
数据库的性能是与操作系统协同工作的结果。
- 调整文件句柄数:编辑
/etc/security/limits.conf,为kingbase用户提高资源限制。
kingbase soft nofile 65536 kingbase hard nofile 65536 kingbase soft nproc 131072 kingbase hard nproc 131072 - 调整内核参数:编辑
/etc/sysctl.conf,优化内存和网络设置。
# 降低系统使用swap的倾向 vm.swappiness = 1 # 增大网络连接队列 net.core.somaxconn = 65535
执行sysctl -p使其生效。 - 配置防火墙:现在,我们可以配置一道精确的防火墙,只放行必要的流量。
# 重新启用防火墙
systemctl start firewalld
# 仅允许应用服务器(192.168.1.100)访问54321端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="54321" accept'
# 重载配置
firewall-cmd --reload
总结
跟随本指南,你不仅部署了一套KingbaseES V9数据库,更重要的是,你建立了一套符合生产标准的、从数据库到操作系统的立体化运维基线。我们强调了介质校验的严谨性,目录规划的前瞻性,安全配置(特别是sys_hba.conf)的必要性,以及核心参数调优对性能的决定性作用。
KingbaseES的世界远不止于此。今天的单点部署是你迈出的第一步。接下来,你可以探索主备高可用集群(基于standby)的搭建、读写分离的实现、以及使用内置工具进行性能诊断与分析。希望这篇指南能成为你在国产化数据库道路上坚实可靠的起点。
进一步学习资源:

113

被折叠的 条评论
为什么被折叠?



