人大金仓数据库(KingbaseES)使用总结

人大金仓数据库(KingbaseES)使用总结

前言:

项目碰到要做国产化适配,服务器是OpenEuler,数据库是人大金仓。

金仓数据库的底层是基于PostgreSQL,官方提供的文档还是比较全,改变了我对国产化的一些软件的刻板印象,比某麟,某梦好用多了,这里记录一下使用过程踩的一些坑。

1、下载数据库和授权文件,官方地址:https://download.kingbase.com.cn/xzzx/index.htm

我们之前的数据库是从Oracle转过来的,基于Linux操作系统,所以选择的是这个:

下载授权文件,建议选择专业版,虽然只有90天,但是连接数没那么多限制,先开始用的开发版,在服务器上部署之后随便一连就提示超限,开发版只适合在本机安装使用

2、安装

Linux安装,地址:https://bbs.kingbase.com.cn/docHtml?recId=d16e9a1be637c8fe4644c2c82fe16444&url=aHR0cHM6Ly9iYnMua2luZ2Jhc2UuY29tLmNuL2tpbmdiYXNlLWRvYy92OS9pbnN0YWxsLXVwZGF0YS9pbnN0YWxsLWxpbnV4L2luZGV4Lmh0bWw

(照着官方文档一步步安装即可,里面有一步设置tmp空间可参考另一篇博文:)https://www.cnblogs.com/dysjwang/p/18711645

Windows安装,地址:https://bbs.kingbase.com.cn/docHtml?recId=d16e9a1be637c8fe4644c2c82fe16444&url=aHR0cHM6Ly9iYnMua2luZ2Jhc2UuY29tLmNuL2tpbmdiYXNlLWRvYy92OS9pbnN0YWxsLXVwZGF0YS9pbnN0YWxsLXdpbmRvd3MvaW5kZXguaHRtbA

如果服务器是Linux,客户端电脑是Windows,也可以用这个软件包来安装,安装的时候选择只安装客户端,Windows客户端长这样:

3、配置/更换授权文件

⑴、找到授权位置,一般在“/opt/Kingbase/ES/V9” 下 ⑵、旧授权改名,mv license.dat license.dat_bak ⑶、新授权放到这个位置 ⑷、新授权属主是kingbase chown kingbase:kingbase license.dat,给新授权添加可执行权限chmod +x license.dat ⑸、更换kingbase用户。5.1和5.2选一个执行即可 ⑸.1、reload服务,到“/opt/Kingbase/ES/V9/Server/bin/”目录, 执行“./sys_ctl reload -D /opt/Kingbase/ES/V9/data” ⑸.2、restart服务,到“/opt/Kingbase/ES/V9/Server/bin/”目录,执行“./sys_ctl restart -D /opt/Kingbase/ES/V9/data/” ⑹、记得改连接数,目录“/opt/Kingbase/ES/V9/data/kingbase.conf”,修改max_connections=1000

4、创建表空间、创建数据库

它的表空间和Oracle的类似, 新建表空间和数据库和Oracle类似,使用navicat可以直接连,在连接的时候选择PostgreSQL即可,可参考我的另一篇博文:https://www.cnblogs.com/dysjwang/p/18672982

5、导数据,有坑注意

有些基础表我们用的是MySQL,也是想的太天真了,全手工操作——即从SQLYog导出脚本,然后直接在这边执行,各种报错(类型错误、关键字错误、符号错误……),然后一个个修复,终于sql脚本执行成功了,然后又个特别特别大的坑:

使用原生sql脚本有个很大的问题即双引号问题,如果内容有双引号,则导出的脚本里会做转译,重新导入的时候就不对了,而我们的数据内容又有大量这种json,于是影响基础功能了,类似下图:

后来使用REPLACE(string text, from text, to text)函数修复数据才搞定,所以还是建议大家使用官方提供的数据迁移工具来操作,https://bbs.kingbase.com.cn/docHtml?recId=d16e9a1be637c8fe4644c2c82fe16444&url=aHR0cHM6Ly9iYnMua2luZ2Jhc2UuY29tLmNuL2tpbmdiYXNlLWRvYy92OS9kZXZlbG9wbWVudC9kZXZlbG9wLXRyYW5zZmVyL2luZGV4Lmh0bWw

6、修改searchPath

show search_path; alter database jvlei_tejian_dev set search_path = "$user", public, tejian; select sys_reload_conf();

7、数据类型(和MySQL对比)

bigint→int8,长度64

datetime→timestamp,长度0(设置6代表秒后几位)

tinyint→bool

floag→numeric,长度10,小数点2

varchar→varchar

8、主键、绑定序列,自增长:

-- tj_log_info

select * from tj_log_info order by id desc;

SELECT conname, contype FROM pg_constraint WHERE conrelid = 'tj_log_info'::regclass AND contype = 'p';

ALTER TABLE tj_log_info ADD PRIMARY KEY (id);

select max(id) from tj_log_info;

CREATE SEQUENCE tj_log_info_seq

START WITH 14358

INCREMENT BY 1

NO MINVALUE

NO MAXVALUE

CACHE 1;

ALTER TABLE tj_log_info ALTER COLUMN id SET DEFAULT nextval('tj_log_info_seq'::regclass);

9、备份

Linux,找到安装目录,执行:

./sys_dump -Usystem -p54321 -f /home/databak/tejiabbak.sql tejian

-U:用户名

-p:端口

Windows,找到安装目录的bin下,执行:

sys_dump -Usystem -p54321 -f E:\tejiabbak.sql tejian

10、还原

Linux,找到安装目录,执行:

./ksql -Usystem -d 库名 -p54321 -f /home/xxxx/xxx.sql

Windows,找到安装目录,执行:

./ksql -Usystem -d 库名 -p54321 -f D:\xxx.sql

11、Java对接,ORM框架,使用MyBatisPlus,见另一篇博文: https://www.cnblogs.com/dysjwang/p/18720449

12、官方回复

1、是否需要设置远程访问,类似mysql的user表修改hostname 答:不需要2、是否有类似plsql工具的单独安装程序 答:在本地下载一个windows版本,选择客户端安装,开始菜单会有数据库开发工具。3、Java开发语言,ORM框架只有hibernate?是否可以用其mybatis 答:可以的,需要替换金仓的jdbc驱动+hibernate等方言包即可。驱动目录在安装目录Interface下。4、数据库的模式是什么概念?各模式有什么用途?区别是什么? 答:我们的模式对应oracle的用户,创建数据库以后,如果不创建模式,直接创建表默认会在public公共模式下,建议咱们创建自己的模式。5、扩展是什么概念?用途是什么? 答:扩展您可以认为是各种特性,比如oracle的一些dbms包的函数,需要创建对应的扩展才能使用。6、sysmac下查询表提示无权限,见图所示 答:sysmac这个模式是系统的,只有超级管理员才有权限。7、客户端工具是否有产品手册说明?如有提供一下地址 答:KingbaseES SQL介绍,有视频,有文档

后续有新的经验随时补充……

相关推荐

微信好友拉黑了怎么加回来 微信好友拉黑了加回方法【步骤】
奥运冠军有多少奖金?中国运动员奖励清单曝光
顺丰寄香港多少钱(顺丰寄香港费用查询)