暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

Centos7.6安装使用KingbaseES

原创 土豆 2024-06-30
547

一:人大金仓简介

image.pngimage-20240630104347397

早在上大一时候,我就有听说过人大金仓这个数据库,但是当时学校教的是Oracle数据库,而且也没有使用其他数据库的需求,所以一直没有深入了解这款数据库。直到后来参与了工作,从事的工作和数据库密不可分,也对数据库产生了浓厚的兴趣,看到这些年不断有优秀的国产数据库出现,忍不住都要体验一番。除了人大金仓之外我还体验过openGauss以及Yashan数据库,均能给我眼前一亮的感觉。

从官网了解到,人大金仓(北京人大金仓信息技术股份有限公司)早在1999年便成立了,是成立最早的拥有自主知识产权的国产数据库企业,专注于数据库技术的研发和应用,致力于为用户提供高效、安全、可靠的数据库解决方案,被广泛应用于政府、金融、电信、能源、交通等多个行业。人大金仓主要有两个产品,KingbaseES以及KingbaseAnalyticsDB(金仓分析型数据库系统),作为一名个人开发者,我将针对KingbaseES做一个初步的体验并输出我的体验感受。

二:安装前准备

1.安装包准备

1.1:安装可以基于Windows系统或Linux系统进行安装,我选择的操作系统是Linux的Centos 7.6系统,如果你只有个人电脑并且想使用Linux系统进行安装可以安装一个虚拟机并且把网络设置成NAT模式,不然访问不了外网且不能使用DHCP配置,下面是我的虚拟机配置:

image.png

1.2:准备好虚拟机环境后为了后续方便操作可以下载一个SSH工具进行操作,无论是安装数据库还是操作数据库都会更方便,关于SSH工具有很多选择,比如SSH Secure Shell Client、Xshell、FinalShell等,我使用的是FinalShell,FinalShell是免费的,而且安装操作起来也很方便,还能看到你的可用空间大小,确保你有足够的空间来进行后续数据库的安装。关于FinalShell具体的安装连接过程可以自行百度一下,成功连接后显示下图信息:

image20240630123409739.png

1.3:准备好操作系统后就可以到人大金仓下载中心下载对应的数据库,见下图:

image.png

2.环境准备

2.1:创建用户

在安装金仓数据库管理系统 KingbaseES 时,安装用户需要对安装路径具有“读”、“写”、“执行”的权限。在Linux系统中,安装程序必须以非root用户执行,并且该用户需要拥有标准的home目录。因此,建议在正式安装前,新建一个名为kingbase的用户,作为金仓数据库管理系统 KingbaseES 专用的系统用户。可以通过运行以下命令来创建kingbase用户:

# 切换到超级用户 su # 创建kingbase用户 useradd kingbase

2.2:上传文件

创建挂载文件目录:

mkdir -p /home/kingbase/KingbaseES/V8

FinalShell具有文件下载上传功能,点击“底栏”按钮展开底栏,然后选择默认用户(选择kingbase用户会提示Permission denied)的一个文件夹(我选择的是Downloads文件夹)进行文件上传,具体操作见下图:

image.pngimage-20240630164207879

上传成功后切换到root移动文件,否则会提示权限不够,执行如下命令:

[root@localhost ~]# cd /home/tbug/Downloads [root@localhost Downloads]# ls KingbaseES_V008R006C008B0020_Lin64_install.iso [root@localhost Downloads]# mv KingbaseES_V008R006C008B0020_Lin64_install.iso /home/kingbase/KingbaseES/V8 [root@localhost Downloads]# su kingbase [yashan@localhost Downloads]$ cd /home/kingbase/KingbaseES/V8 [yashan@localhost install]$ ls KingbaseES_V008R006C008B0020_Lin64_install.iso

2.3:授权

授权文件也需要从人大金仓下载中心下载

image.pngimage-20240630165622566

依次执行如下命令:

#创建授权文件目录并上传授权文件 [root@localhost Downloads]# mkdir -p /home/kingbase/license [root@localhost Downloads]# ls license_39892_0.dat [root@localhost Downloads]# mv license_39892_0.dat /home/kingbase/license #将安装包权限赋予 kingbase 用户 [root@localhost Downloads]# chown -R kingbase:kingbase /home/kingbase/

金仓数据库管理系统 KingbaseES 安装过程中有默认的安装目录/opt/Kingbase/ES/V8,如果没有这个目录需要手动创建一下。如果直接使用刚创建的 kingbase用户安装,安装过程中将会提示没有权限。因此,建议在正式安装之前,将安装目录的权限赋予 kingbase 用户:

[root@localhost Downloads]# cd /opt/Kingbase/ES/V8 bash: cd: /opt/Kingbase/ES/V8: 没有那个文件或目录 [root@localhost Downloads]# mkdir -p /opt/Kingbase/ES/V8 [root@localhost Downloads]# chown -R kingbase:kingbase /opt/Kingbase/ES/V8 #挂载镜像,注意需要使用root账号 [root@localhost Downloads]# cd /home/kingbase/KingbaseES/V8 [root@localhost V8]# mount KingbaseES_V008R006C008B0020_Lin64_install.iso /home/kingbase/KingbaseES/V8 mount: /dev/loop0 写保护,将以只读方式挂载

3.安装

3.1:切换到kingbase用户安装

[root@localhost V8]# su kingbase [kingbase@localhost V8]$ cd /home/kingbase/KingbaseES/V8 [kingbase@localhost V8]$ ls setup setup.sh [kingbase@localhost V8]$ sh setup.sh -i console

image.png

接下来按照安装指引进行安装即可,到了选择授权文件那步则输入前面上传的授权文件路径:

image.png

出现下图则表示安装成功:

image.png

检查是否安装成功:

[kingbase@localhost V8]$ cd /opt/Kingbase/ES/V8/Server/bin/ [kingbase@localhost bin]$ ./kingbase -V KINGBASE (KingbaseES) V008R006C008B0020

三:数据库体验

1.数据库启停

注意需要切换到kingbase用户下进行操作,如果遇到授权文件版本不对的问题参考[四:问题反馈](# 四:问题反馈)进行解决。

[kingbase@localhost bin]$ su - kingbase Password: Last login: Sun Jun 30 04:55:55 PDT 2024 on pts/0 [kingbase@localhost ~]$ cd /opt/Kingbase/ES/V8/Server/bin/ # 服务器启动 [kingbase@localhost bin]$ ./sys_ctl -D /opt/Kingbase/ES/V8/data start # 查看服务器状态 [kingbase@localhost bin]$ ./sys_ctl -D /opt/Kingbase/ES/V8/data status sys_ctl: server is running (PID: 37366) /opt/Kingbase/ES/V8/KESRealPro/V008R006C008B0020/Server/bin/kingbase "-D" "/opt/Kingbase/ES/V8/data" # 服务器停止 [kingbase@localhost bin]$ ./sys_ctl -D /opt/Kingbase/ES/V8/data stop waiting for server to shut down.... done server stopped

2.数据库使用

2.1:连接数据库

# -p参数指定初始化数据库时设置的端口。-U参数指定初始化数据库时设置的管理员用户,也可以是其他用户。 [kingbase@localhost bin]$ ./ksql -p 54321 -U system test

2.2:查看数据库

test=# \l

可以看到系统中默认存在的几个数据库信息:

image.png

2.2:创建数据表

①创建如下Student表

image.png

CREATE TABLE STUDENT ( Sno VARCHAR2(17)PRIMARY KEY , Sname VARCHAR2(10) NOT NULL , Sage INT , Ssex VARCHAR2(3) , Sdept VARCHAR2(20) );

使用\dt命令查看数据库中的表:

image.png

2.3:插入数据

向表中插入三条数据

INSERT INTO STUDENT(Sno, Sname, Sage, Ssex, Sdept) VALUES ('1906145218', '张三', '19', '男', '网络安全'); INSERT INTO STUDENT(Sno, Sname, Sage, Ssex, Sdept) VALUES ('1904154568', '李四', '20', '女', '网络工程'); INSERT INTO STUDENT(Sno, Sname, Sage, Ssex, Sdept) VALUES ('1910245451', '王五', '21', '男', '软件工程'); # 查看数据 SELECT * FROM STUDENT;

可以看到成功插入三条数据:

image.png

2.4:修改数据

修改王五的年龄为25

UPDATE STUDENT SET SAGE=25 WHERE SNAME='王五'; SELECT * FROM STUDENT;

image.png

2.5:删除数据

删除王五的信息

DELETE FROM STUDENT WHERE SNAME='王五'; SELECT * FROM STUDENT;

image.png

2.6:创建包及包体并调用

-- 创建包
\set SQLTERM /
CREATE OR REPLACE PACKAGE stu_pkg AS
	PROCEDURE add_student(p_no VARCHAR2, p_name VARCHAR2, p_age NUMBER, p_sex VARCHAR2, p_dept VARCHAR2);
END stu_pkg;
/

--创建包体
\set SQLTERM /
CREATE OR REPLACE PACKAGE BODY stu_pkg AS
    PROCEDURE add_student(p_no VARCHAR2, p_name VARCHAR2, p_age NUMBER, p_sex VARCHAR2, p_dept VARCHAR2) IS
    BEGIN
        INSERT INTO student(Sno, Sname, Sage, Ssex, Sdept)
        VALUES (p_no, p_name, p_age, p_sex, p_dept);
    END add_student;
END stu_pkg;
/

-- 调用包
\set SQLTERM /
BEGIN
	stu_pkg.add_student('1906100068', '调用包', 23, '男', '计算机科学与技术');
END;
/

SELECT * FROM STUDENT;

可以看到成功调用了包的存储过程往student表里插入了一条数据。

image.png

2.7:常用语句

列出数据库: \l
列出索引: \di
列出表: \dt
列出表结构:\d 表
查询数据大小写敏感: show case_sensitive
切换数据库: \c dbname
显示字符集:\encoding
退出:\q
查看所有存储过程(函数): \df
查看所有用户 \du
将名下的表指给某个用户:alter table 表名 owner to 指定用戶
创建普通用户:create user 用户名(用户名不带双引号,默认大写) with password ‘密码’; 若创建超级用户需要添加:with superuser password ‘mm’;

2.8:总结

在不断去O(Oracle)化的今天,使用人大金仓数据库(KingbaseES)是一种令人振奋的体验。作为一款国产数据库,KingbaseES 兼具高性能和高可靠性,且与 PostgreSQL 高度兼容,提供了丰富的功能和灵活的扩展性。其对 Oracle 的兼容性使得从 Oracle 迁移变得更加顺畅,降低了企业的迁移成本和风险。KingbaseES 的本地化支持和强大的技术服务团队也为用户提供了有力的保障。总体而言,人大金仓数据库不仅是 Oracle 的有力替代品,更是推动国产数据库发展的重要力量。

四:问题反馈

1.问题点

在安装好数据库使用“./sys_ctl -D /opt/Kingbase/ES/V8/data start”命令启动数据库时候报了如下错误:

[kingbase@localhost bin]$ ./sys_ctl -D /opt/Kingbase/ES/V8/data start waiting for server to start....FATAL: XX000: license file error, product version number does not match LOCATION: KesMasterMain, master.c:856 stopped waiting sys_ctl: could not start server Examine the log output.

根据错误提示的信息可以看到是授权文件的版本不对,授权文件的版本和你安装的数据库版本需要对应上,我安装的是V008R006C008B0020版本,把下载的授权文件打开,发现版本号是V009R001C,这个版本号没有和安装的版本对应上才导致了启动出错。

2.解决措施

安装过程选择授权文件时候需要仔细查看授权文件的版本号是否有和你安装的数据库版本对应上,见下图:

image.png

这里我没有细看就直接进行下一步操作了,安装过程也没报错,到最后启动服务时候才引发了错误。如果到了这一步,可以通过更换授权文件来解决,这里我把开发版换成了标准版的授权文件,但是需要注意不同版本的授权文件是有差异的,比如标准版就不支持X86-Windows平台,我使用的是Centos系统,所以我可以使用这个授权文件,详细差异请查阅官方下载网址。

image.png

下载好正确的授权文件后,为了避免版本号再次对不上,可以先用记事本打开检查

image.png

接下来替换原来的授权文件:

# 切换root用户 [kingbase@localhost bin]$ su root Password: [root@localhost bin]# cd /home/tbug/Downloads [root@localhost Downloads]# ls license_39890_0.dat # 查看安装目录下的授权文件 [root@localhost V8]# cd /opt/Kingbase/ES/V8/KESRealPro [root@localhost KESRealPro]# ls V008R006C008B0020 [root@localhost KESRealPro]# cd V008R006C008B0020 [root@localhost V008R006C008B0020]# ls ClientTools control.so doc install Interface KingbaseHA license.dat Server SupTools Uninstall # 输出原来授权文件位置 [root@localhost V008R006C008B0020]# pwd /opt/Kingbase/ES/V8/KESRealPro/V008R006C008B0020 # 把新上传的授权文件重命名为license [root@localhost V008R006C008B0020]# cd /home/tbug/Downloads [root@localhost Downloads]# mv license_39890_0.dat license.dat # 使用cp -f命令重写覆盖原来的授权文件 [root@localhost Downloads]# cp -f license.dat /opt/Kingbase/ES/V8/KESRealPro/V008R006C008B0020/license.dat cp: overwrite ‘/home/kingbase/license/license_39892_0.dat’? Y # 更改license文件拥有者 [root@localhost bin]# cd /opt/Kingbase/ES/V8/KESRealPro/V008R006C008B0020 [root@localhost V008R006C008B0020]# chown kingbase:kingbase license.dat #查看新授权文件 [root@localhost V008R006C008B0020]# vim license.data

可以看到版本号能够对应得上:

image.png

接下来尝试启动服务器:

[root@localhost V008R006C008B0020]# su kingbase [kingbase@localhost V008R006C008B0020]$ cd /opt/Kingbase/ES/V8/Server/bin/ [kingbase@localhost bin]$ ./sys_ctl -D /opt/Kingbase/ES/V8/data start

可以看到服务器启动成功

image.png

如果是授权文件过期也可以采用上面的方法进行解决。

最后修改时间:2024-07-01 21:41:05
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论