电科金仓KingbaseES V9 在 CentOS 7 上的安装入门实践

CentOS 运维避坑实战

CentOS7.9 安装 Python3.8.16 后 yum 报错,快速修复方案

引言

记得在几年前一个关键行业的“国产化替代”项目中,团队负责将一套核心交易系统从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. 验证服务状态 你可以使用systemctlps命令来验证。

# 使用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地址通过密码访问任何数据库,极易成为暴力破解的目标。

修改步骤:

  1. 打开配置文件vi /data/sys_hba.conf
  2. 注释或删除不安全的规则:将默认的宽松规则(如passwordtrust)用#注释掉。
  3. 添加精确规则:遵循最小权限原则,只为你的应用服务器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_addresseslocalhost* 或指定IP监听地址。*表示所有IP,生产环境必须指定为服务器的业务IP,配合sys_hba.conf使用。设为*且sys_hba.conf配置不当,会将数据库暴露在公网上,极度危险。
max_connections100200 - 500 (或根据应用规划)最大并发连接数。每个连接消耗一定内存,需与应用连接池大小匹配。设置过高会耗尽内存;设置过低应用会报“too many clients”错误。
shared_buffers128MB物理内存的25%最重要的参数。数据库用于缓存数据块的共享内存大小。设置过低,大量读写操作将直接落盘,I/O繁忙,性能急剧下降。
work_mem4MB32MB - 128MB单个查询操作(如排序、哈希连接)可使用的内存。设置过低,复杂查询会频繁使用临时磁盘文件,性能极差;过高则可能因并发查询导致内存溢出。
maintenance_work_mem64MB1GB - 2GB维护操作(如VACUUM, CREATE INDEX)使用的内存。设置过低,索引创建和垃圾回收会非常缓慢,影响整体性能。
max_wal_size1GB16GB - 64GB控制检查点(Checkpoint)频率的参数之一。当WAL日志文件超过此值时触发检查点。设置过小,检查点过于频繁,导致磁盘I/O风暴;过大则恢复时间变长。
checkpoint_completion_target0.50.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_dumpsys_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 操作系统层协同优化

数据库的性能是与操作系统协同工作的结果。

  1. 调整文件句柄数:编辑/etc/security/limits.conf,为kingbase用户提高资源限制。
    kingbase soft nofile 65536 kingbase hard nofile 65536 kingbase soft nproc 131072 kingbase hard nproc 131072
  2. 调整内核参数:编辑/etc/sysctl.conf,优化内存和网络设置。
    # 降低系统使用swap的倾向 vm.swappiness = 1 # 增大网络连接队列 net.core.somaxconn = 65535
    执行sysctl -p使其生效。
  3. 配置防火墙:现在,我们可以配置一道精确的防火墙,只放行必要的流量。
# 重新启用防火墙
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)的搭建读写分离的实现、以及使用内置工具进行性能诊断与分析。希望这篇指南能成为你在国产化数据库道路上坚实可靠的起点。

进一步学习资源:

CentOS 运维避坑实战

CentOS7.9 安装 Python3.8.16 后 yum 报错,快速修复方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值