KingbaseES数据库教程:初识数据库,从安装到跑通第一条SQL

KingbaseES数据库教程:初识数据库,从安装到跑通第一条SQL

一、学习目标与本章重点

大家好,我是博主xcLeigh。数据库国产化这条路上摸爬滚打十来年的一个老兵。从这篇开始,咱们就算正式搭伙了------《电科金仓数据库从入门到精通》,就从这儿起步。

丑话说前头。这是全书第一篇,我不会一上来就砸一堆高深概念把你砸晕。这一篇要干的事,说穿了特别朴素:

学习目标:

  • 电科金仓数据库(后面我基本都简称 KES)到底是个啥,能干啥;
  • 在 Linux 上亲手把 KES 完整装一遍,装完能起能停;
  • 用自带的 ksql 命令行连上去,建库、建表、插数、查询,整条链路跑通;
  • 顺带认认几个以后天天要打交道的配置文件和目录。

本章重点: 安装时那几个参数怎么设、ksql 基本用法,还有新手最容易栽进去的几个坑。

💡 学完这一章,你手里就有一套完全能用的电科金仓环境了。后面几百篇文章的练习全在这个环境上做,所以这篇别跳读,一步一步跟着敲。真不亏。

二、电科金仓数据库到底是什么

2.1 先说定位

聊技术之前,先用人话把产品说明白。

电科金仓数据库,官方名字叫 KingbaseES,中电科金仓(北京)科技股份有限公司出品。这家公司1999年就有了,国内做数据库最早的那一批里就有它,还是中国电子科技集团的成员单位。所以你看,这是个正儿八经的国产企业级关系型数据库。用户都是谁呢?党政机关、金融、电信、能源,全是那种系统一宕机就要命、对稳定性抠得很细的行业。

那它具体能干嘛?你平时拿 Oracle、MySQL 干的那些活儿------存数据、跑事务、写存储过程、搭主备集群------KES 基本都能接得住。尤其很多单位搞国产化改造,老系统原本跑在 Oracle 上,迁到 KES 整体改动量比较小。这也是它在政企市场里铺得开的一个重要原因,说白了就是迁移的时候不用推倒重来。

2.2 版本和授权

KES 现在主流的版本线是 V9,我写这篇的时候最新是 V9R1C10 这个系列。版本号的规矩得记一下:V9 是大版本,R1 是发行版,C10 是修正版本。下载安装包也好,打补丁也好,这三个字段都得看仔细。别问我怎么知道的,看错版本号这种事,你早晚也会干一回。

授权怎么办?电科金仓提供开发者版本和试用授权。个人学习的话,去官网产品下载页面就能拿到安装包,注册个社区账号,再申请一个开发用的 license 文件,就齐活了。生产环境的授权是按 CPU 或者按节点收钱的,那是商务流程的事,跟咱们学习不搭边。

⚠️ 有个地方新手老犯迷糊:装 KES 需要 license 文件。开发版 license 一般有使用期限(通常挺长),到期之后数据库可能连不上,或者功能受限。所以哪天你发现"咦,怎么突然连不上了",先别急着排查网络,看一眼授权是不是过期了。这块我踩过坑,那天绕了一大圈防火墙,最后发现就是 license 到期。

2.3 它和别的数据库长得像吗

很多同学头一回打开 KES,都会觉得里面那些工具、命令、配置文件的风格特别"眼熟"。我的感受是,你只要有 Oracle 或者 MySQL 的底子,上手 KES 非常快。SQL 语法支持很全,还给了好几种兼容模式------建库的时候可以指定按 Oracle 风格还是 MySQL 风格来兼容。选哪种?看你迁过来的老系统原本是什么数据库,跟着它走就行。

这个话题后面有专门的章节系列去展开,这里你先记一句话就够:KES 的迁移成本,在同类型国产数据库里算低的。

三、动手安装

3.1 安装前的准备工作

我的建议是在 Linux 上学。生产环境里 KES 也基本都是跑在 Linux 上的,早适应早受益。我这边用的是 x86_64 架构的服务器,系统版本不用太纠结,主流国产操作系统和常见 Linux 发行版它都支持。

① 先建一个操作系统用户,KES 不建议拿 root 直接跑:

bash 复制代码
useradd kingbase
passwd kingbase

② 安装包传到服务器上,解压:

bash 复制代码
mkdir -p /opt/kes
tar -xf KingbaseES_V009R001C010B0004_Lin64_single_install.iso -C /opt/kes

⚠️ 这里注意,安装包有两种形态:.iso 镜像,和 .bin 可执行安装程序。iso 的话得先挂载,bin 的话赋个权直接执行就完事。上面那段是挂载 iso 的前置步骤,如果你下的是 iso,还得 mount 一下:

bash 复制代码
mount -o loop /opt/kes/KingbaseES_V009R001C010B0004_Lin64_single_install.iso /mnt/kes

③ 看看系统资源够不够。学习测试环境,2核4G、10G 磁盘就能跑起来。不过讲真,想练得舒服点,内存我建议 4G 起步。再一个,防火墙和 SELinux 处理掉------学习环境直接关了最省事,生产上可不能这么干,先说清楚:

bash 复制代码
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3.2 图形化安装

镜像挂好之后,切到 kingbase 用户,进挂载目录,跑 setup.sh:

bash 复制代码
su - kingbase
cd /mnt/kes
sh setup.sh -i console

后面那个 -i console 是文本交互模式,给没有图形桌面的服务器用的。有桌面环境的话,直接 sh setup.sh,会弹图形安装向导,流程两者一模一样。

安装向导里会挨个让你确认这些东西,我一个一个说:

安装路径 :默认 /opt/Kingbase/ES/V9。这个路径我的建议是别动。以后看别人的文档、翻官方手册,默认路径能对上,省心。改了的话,后面对照文档找文件能烦死你。

授权文件 :这里要填 license 文件的完整路径。提前把下载好的 license 传上服务器,比如放 /home/kingbase/license_37111_0.dat,填进去就行。

端口 :默认 54321。这个端口你给我记牢了,后面连接、配防火墙白名单,全用它。

管理员账号 :默认超级用户名是 system,密码自己设。⚠️ 生产环境的密码别设得太简单,而且一定要拿本子记下来------数据库装完第一件事,往往就是有人忘了 system 密码。别笑,真事。

数据目录:默认在安装目录底下的 data 子目录里。学习环境无所谓,生产环境这个目录应该单独放到大容量磁盘上,而且权限只给 kingbase 用户。

兼容模式:这个选项很关键。建库时就定下了兼容模式,影响后面 SQL 语法的解析行为。从 Oracle 迁过来的系统,选 Oracle 模式;从 MySQL 迁的,就选 MySQL 模式。纯学习随便选哪个都行,我后面文章里的示例,大多按 Oracle 模式来写。

一路确认下来,安装程序开始拷文件、初始化数据库实例,最后提示安装成功,顺手把数据库服务注册成系统服务。

3.3 验证安装结果

装完了先别急着连,做三个检查:

① 进程在不在:

bash 复制代码
ps -ef | grep kingbase

能看到几个 kingbase 开头的进程,实例就是起来了。

② 端口有没有在监听:

bash 复制代码
netstat -tlnp | grep 54321

③ 服务脚本看一眼状态:

bash 复制代码
sys_ctl status

✅ 三步都正常,恭喜,你的第一套电科金仓数据库环境就算正式交付了。启动和停止也各有命令,sys_ctl start 和 sys_ctl stop,平时自己练的时候会经常用到,敲两天就熟了。

四、第一次连接:玩转 ksql

4.1 连接数据库

KES 自带的命令行客户端叫 ksql。这是你以后用得最多的工具,没有之一。连接命令长这样:

bash 复制代码
ksql -U system -d test -p 54321 -h 127.0.0.1

四个参数分别是什么意思呢:-U 指定用户,-d 指定连哪个库,-p 指定端口,-h 指定服务器地址。初始化完的实例里,默认就有一个叫 test 的库,头一回练习咱们就用它,不用自己折腾。

回车,输密码,看到下面这样的提示符,就说明你进来了:

复制代码
Type "help" for help.

test=#

💡 一个小技巧:本机连接的时候,要是操作系统用户正好是 kingbase,可以走本地信任认证,连 root 都不用切,直接 ksql -U system -d test 就进去了------这是配置文件里默认的本地免密规则。这个认证机制后面讲安全章节的时候我细说,你现在先会用就行,别深究。

4.2 把第一条链路跑通

进来了,那按老规矩,建表、插数、查询,一条龙走完。先来一张员工表:

sql 复制代码
CREATE TABLE emp (
    empno    INT PRIMARY KEY,
    ename    VARCHAR(50),
    salary   NUMERIC(10,2),
    hiredate DATE
);

插几条数据:

sql 复制代码
INSERT INTO emp VALUES (1001, '张三', 8500.00, DATE '2023-03-15');
INSERT INTO emp VALUES (1002, '李四', 9200.50, DATE '2024-01-08');
INSERT INTO emp VALUES (1003, '王五', 7600.00, DATE '2022-11-30');

然后查一下:

sql 复制代码
SELECT * FROM emp WHERE salary > 8000 ORDER BY salary DESC;

查出了张三和李四。成了,写入和读取的完整链路已经通了。感觉是不是跟别的数据库没什么两样?对,关系型数据库的基本功都是相通的,你以前会的那套 SQL,在这儿大概率直接就能用。

再来试试事务,体会一下 KES 的事务控制:

sql 复制代码
BEGIN;
UPDATE emp SET salary = salary + 500 WHERE empno = 1003;
SELECT * FROM emp WHERE empno = 1003;
ROLLBACK;

回滚之后再去查,工资还是 7600。事务这东西,第一次亲手玩一把,印象比看书深得多。我当时也是这么过来的。

4.3 ksql 的常用元命令

ksql 里有一堆以反斜杠开头的元命令,属于"不看会难受"系列。我挑最常用的几个:

  • \l ------ 列出实例里所有的数据库;
  • \dt ------ 看当前库里的表;
  • \d emp ------ 看 emp 表的结构,字段、类型、主键,一屏全出来;
  • \du ------ 看用户列表;
  • \timing on ------ 打开 SQL 执行耗时显示,以后测性能必开,不开你都不知道一条 SQL 跑了多久;
  • \q ------ 退出 ksql。

📝 这几个命令建议挨个敲一遍。特别是 \d 表名,查表结构比你写 DESC 或者翻系统视图快多了。当然,KES 在 Oracle 兼容模式下也支持 DESC,这个细节留到兼容性章节再说。

4.4 再往前走一小步:多表和常用函数

单表玩明白了,加一点难度。建一张部门表,跟员工表关联起来:

sql 复制代码
CREATE TABLE dept (
    deptno   INT PRIMARY KEY,
    dname    VARCHAR(50)
);

INSERT INTO dept VALUES (10, '研发部');
INSERT INTO dept VALUES (20, '财务部');
INSERT INTO dept VALUES (30, '市场部');

ALTER TABLE emp ADD COLUMN deptno INT;
UPDATE emp SET deptno = 10 WHERE empno = 1001;
UPDATE emp SET deptno = 20 WHERE empno = 1002;
UPDATE emp SET deptno = 10 WHERE empno = 1003;

接着来一个最经典的两表关联查询------每个部门平均工资多少:

sql 复制代码
SELECT d.dname, AVG(e.salary) AS avg_salary
FROM emp e JOIN dept d ON e.deptno = d.deptno
GROUP BY d.dname;

再随手试几个常用函数,确认你熟悉的写法在这儿都好使:

sql 复制代码
SELECT CURRENT_DATE, CURRENT_TIMESTAMP FROM dual;
SELECT SUBSTR('电科金仓数据库', 1, 4) FROM dual;
SELECT NVL(NULL, '空值兜底') FROM dual;

💡 细心的同学应该注意到 dual 这张表了。用过 Oracle 的朋友对它再熟悉不过。在 KES 的 Oracle 兼容模式下,查系统时间、做函数测试,都可以直接 FROM dual,老习惯可以直接带过来。不用 Oracle 的同学也别纠结,把 FROM dual 去掉,结果一样。

跑完这一小节,你手里就有一套带两个表、有关联、有数据的练习环境了。后面讲索引、讲执行计划、讲优化,我就拿这几张表开刀,所以数据千万别删。

五、认识安装目录和配置文件

工具会用之后,咱们把"家底"摸清楚。KES 装完之后的目录结构里,有几个地方你必须心里有数:

data 目录:所有数据文件、控制文件、日志,全搁这儿。整个实例的命根子。备份策略的第一原则,说白了就是保护好这个目录。

kingbase.conf :实例的主参数文件。内存多大、最大连接数、监听地址,都来这里改。比如你以后要远程连接,就得确认 listen_addresses 这个参数不是只监听本机。

sys_hba.conf:客户端认证配置文件。谁能从哪个 IP、用什么方式连进来,它说了算。远程连不上数据库?十有八九问题出在这个文件或者防火墙上。

sys_log 目录:数据库的运行日志。新手排查问题,第一步永远是看日志,别凭感觉猜。凭感觉猜,十次里九次猜错。

⚠️ kingbase.conf 里的参数改完了,大部分要重启实例才生效,有一部分支持在线加载。改之前先翻官方文档确认生效方式,别改完重启了才发现白改。

六、图形化管理工具:KStudio

命令行是内功,图形工具是效率。KES 有个叫 KStudio 的图形化管理客户端,建表、写 SQL、看执行计划、管用户,这些日常操作都能在界面上点出来。它在安装包里就带着,也可以单独下载,装在你自己的 Windows 工作机上,远程连服务器上的 KES 实例。

我自己是这么用的:写复杂 SQL、看执行计划,用 KStudio;改参数、查日志、做运维脚本,还是回到命令行。两者不冲突。工具是拿来省时间的,不是拿来替代基本功的。

七、实战案例:某银行系统国产化改造的第一步

光看不练假把式。这一节讲一个我参与过的真实项目,你看看"第一次接触 KES"在真实工作里是个什么样子。

背景:华北一家城商行,核心系统外围有个信贷管理子系统,原本跑在 Oracle 上,单机实例,数据量大概 300G,存储过程好几百个。行里启动数据库国产化改造,这个子系统被列为第一批试点。

为什么拿它开刀:业务重要程度适中------出了问题不至于影响总账,可业务逻辑够复杂,PL/SQL 用得又多。拿它验证迁移方案,再合适不过。

实施过程 :

① 评估阶段 。先用金仓的迁移评估工具 KDMS 把源库全面扫了一遍:表结构、索引、视图、存储过程、触发器,所有对象过一遍,输出一份兼容性报告。结果出来团队心里就有底了------表和索引基本能自动转,真正需要人工介入的,主要是几十个存储过程里的写法差异。

② 搭环境 。就在这一步,行里的运维同事头一回装 KES,流程跟我上面教的基本一样。他们的教训是:一开始把数据目录放在了系统盘,容量规划没做,后来重新规划了 LVM 逻辑卷再初始化的实例。所以 3.1 节那个数据目录的规划,真不是我随口一提。

③ 迁移验证 。表数据用工具同步过来,跑对账脚本核对行数和金额汇总,两边完全一致。然后把改造后的存储过程部署上去,用跑批任务做回归,结果也对得上。

④ 并行运行。新旧两套库并行跑了一个月的月结周期,确认无误,正式切换。

最终效果:整个试点从评估到切换,花了不到三个月。应用代码层面改了几百行,主要是少量 SQL 语法和存储过程的适配。切换之后系统稳稳当当跑着,这个案例后来还成了行里推动更大范围国产化的样板工程。

✅ 这个案例想让你带走的是这么一句话:数据库国产化改造,第一步永远是"评估 + 搭环境 + 跑通验证"------也就是你这一章正在学的东西。别小看装机和第一条 SQL,真实项目里所有的故事,都是从这儿开始的。

八、学习资源和官方文档怎么用

自己折腾的时候,肯定有不明白的地方。给你几个我常用的信息渠道,按优先级排:

① 官方文档中心。电科金仓的文档站点做得很全,产品手册、应用开发指南、迁移指南都有在线版。特别是应用开发指南那个系列,把常见数据库迁到 KES 的语法差异写得非常细。我碰到兼容性问题,第一反应就是翻它。docs.kingbase.com.cn 上能找到对应版本的手册,注意,版本要跟你装的实例对上,别拿 V8 的手册查 V9 的事。

② 金仓社区和论坛。金仓社区(bbs.kingbase.com.cn)上有论坛、博客和学习课程,很多一线工程师会贴实际踩坑记录。拿报错信息去搜,经常能直接命中,这招好用。

③ ksql 内置帮助 。别小看这个。\? 能列出所有元命令,help 命令能看到 SQL 帮助入口。手边没文档的时候,很顶用。

📝 我的习惯是把官方文档的目录树大致过一遍,不求记住内容,先混个脸熟。真遇到问题了,你至少知道该去哪一章找答案。这本书的作用也一样------我先帮你把路趟一遍,细节你还得回文档里查证。

九、常见问题排错

第一次装库,碰到问题太正常了。新手最常撞见的几个,我给你列出来:

问题一:ksql 连接报错 "could not connect to server: Connection refused"。

先查实例起没起(sys_ctl status),再查端口对不对,然后看 sys_hba.conf 有没有放行你的来源 IP,最后看防火墙。按这个顺序查,基本都能解决。

问题二:提示口令认证失败。

密码输错了,或者 sys_hba.conf 里配的认证方式跟你预期的不一样。学习环境,先确认密码,再去看认证文件。

问题三:启动报共享内存分配失败。

一般是服务器内存太小,或者内核参数没调。把参数文件里的 shared_buffers 调小一点试试,学习环境 128MB 足够用。

问题四:license 过期导致连不上。

前面说过了。报错里带着 license 相关字样的话,直接去官网重新申请一个开发授权,替换掉旧文件,重启。

问题五:中文显示乱码。

Windows 客户端上偶尔会碰到。多数情况是客户端字符集跟服务端不一致,把操作系统和 ksql 终端的编码都设成 UTF-8,基本就解决了。Linux 下用 SSH 工具连服务器的话,终端编码也记得设成 UTF-8。

问题六:装完想推倒重来怎么办。

学习阶段太常见了,装乱了想重装。简单说:先 sys_ctl stop 停实例,整个安装目录和数据目录删掉,重新跑一遍 setup.sh 就行。⚠️ 删目录之前想清楚,这个实例里有没有你还留着的数据,别一激动把练习成果全扬了。

十、本章小结与下一篇预告

盘一下这一篇干的事:认识了电科金仓数据库这个产品,在 Linux 上动手装了一套完整可用的 KES,用 ksql 跑通了建表、插数、查询、事务的完整链路,摸清了几个关键配置文件的位置和作用,还看了一个银行信贷系统国产化改造的真实案例。

✅ 记住本章的三个关键数字和一个关键工具:端口 54321 、超级用户 system 、默认库 test ,外加命令行工具 ksql。后面几百篇文章,咱们会反反复复用到它们。

下一篇讲数据库的体系结构,把实例、数据库、模式、表空间这些概念一次捋清楚。概念这东西看着枯燥,可它是后面所有内容的地基,地基打歪了,后面全是歪的。值得花一篇好好讲讲。咱们下一篇见。

相关推荐
知行产研3 小时前
解读〈工程机械行业“十五五“发展规划〉:从卖整机到卖解决方案
数据库·mysql
handsome_sai3 小时前
SQL Server 快速入门
数据库·sqlserver
底层玩家老张3 小时前
RAG向量库拆分复盘:内存、延迟与权限的三笔账
数据库·向量数据库·向量检索·ai数据库
莫晓燚4 小时前
阿里云若依项目部署与日志采集---实战
运维·数据库·redis·阿里云·ruoyi
香蕉大香蕉(06敬畏市场)4 小时前
MySQL 单点详解(08)
java·数据库·mysql·面试·八股
l1t5 小时前
DeepSeek总结的如何在 PostgreSQL 中删除一张 4 TB 的表
数据库·postgresql
ClouGence5 小时前
开源数据库管理工具 CloudDM 发布新版本,支持团队多级审批工单,无需依赖第三方系统
数据库·sql·开源
李纲明6 小时前
WordPress 报建立数据库连接时出错:先核 wp-config 四元组,再查 MySQL 服务与表修复
运维·数据库·mysql·wordpress·排障·devdiy
是真的小外套6 小时前
网络安全实战第15期:SQL注入根源之一条拼接语句的警示
sql·安全·web安全