人大金仓数据库(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介绍,有视频,有文档

 

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

 

posted on   IT王师傅  阅读(196)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?

导航

统计

点击右上角即可分享
微信分享提示