注:本文示例均在win11系统下进行
一.迁移前准备
1.下载安装包及授权文件
点击进入官网:kingbase.com.cn

下载完整安装包

下载授权文件
2.安装


选择刚刚下载的授权文件

安装完成后会出现三个软件
二.数据库迁移
注:因为我已经迁移过了,下面有迁移工具界面的部分,截图展示修改页来用以说明新建操作
1.打开数据库开发管理工具软件(可使用navicat的pg连接方式,也可使用官方提供的[数据库开发管理工具]),连接上目标数据库,创建好迁移的目标数据库、模式

2.定义要迁移的数据库中的序列,例如:
-- ---------------------------- -- sequence structure for gen_table_column_column_id_seq -- ---------------------------- drop sequence if exists "svc_gen"."gen_table_column_column_id_seq"; create sequence "svc_gen"."gen_table_column_column_id_seq" increment 1 minvalue 1 maxvalue 9223372036854775807 start 1 cache 1; -- ---------------------------- -- sequence structure for gen_table_table_id_seq -- ---------------------------- drop sequence if exists "svc_gen"."gen_table_table_id_seq"; create sequence "svc_gen"."gen_table_table_id_seq" increment 1 minvalue 1 maxvalue 9223372036854775807 start 1 cache 1; ....
3.启动web迁移工具dts
进入kingbase的安装目录如: <安装目录>\kingbase\es\v9\kesrealpro\v009r001c001b0025\clienttools\guitools\kdts\kdts-web\bin
在powershell中打开.\startup.bat
4.打开数据迁移工具软件,浏览器打开http://localhost:8080
5.添加源数据库

注意数据库类型和数据库版本
6.添加目标数据库

这里要注意, 是从mysql迁入kingbase , 所以目标数据库要以pg的兼容模式配置!
7.新建迁移任务

8.选择目标数据库的模式(schema)

因为mysql没有模式的说法, 通常推荐先将数据迁入kingbase的public模式下
9.数据库迁移配置(此步可检查数据类型映射) 迁移工具会将mysql中的类型自动转换为kingbase的字段类型,通常这一步不需要修改,点击保存并迁移。开始执行迁移任务。



可以通过页面迁移结果来查看迁移结果详情
tips:
1.关于模式选择:如果不存在和当前连接用户同名的模式,则默认访问public模式, 如果不是用户希望访问的模式,则需要在表名称前加模式名访问。
通过 localhost:54321/mydatabase?currentschema=?currentschema=myschema 可以指定默认模式。 这样就不需要在表名前加模式名了。
2.关于预置系统模式的乱入到public导致找不到表(doesn't table....):
人大金仓目前有个坑, 当使用sys_config,sys_user时会触发系统关键字, 导致乱入到public模式下
可通过tips1中的方式取个巧在数据库连接中配置 localhost:54321/mydatabase?currentschema=svc_system,svc_gen,sys_catalog
这样既可将含有这个系统表的模式囊括在内。
3.ruoyi-cloud迁移到kingbase数据后报
### cause: com.kingbase8.util.ksqlexception: error: duplicate key value violates unique constraint "primary_7921efe7"
detail: key (oper_id)=(2) already exists.
; error: duplicate key value violates unique constraint "primary_7921efe7"
可通过执行select setval('sys_oper_log_oper_id_seq', (select max(oper_id) from sys_oper_log)+1)来将底数刷到与历史数据一致
旧数据迁移的表含有自增序列的都有可能发生此错误,保险起见, 刷12张表,刷表语句如下:
select setval('sys_config_config_id_seq', (select max(config_id) from "svc_system".sys_config)+1);
select setval('sys_dept_dept_id_seq', (select max(dept_id) from "svc_system".sys_dept)+1);
select setval('sys_dict_data_dict_code_seq', (select max(dict_code) from "svc_system".sys_dict_data)+1);
select setval('sys_dict_type_dict_id_seq', (select max(dict_id) from "svc_system".sys_dict_type)+1);
select setval('sys_job_job_id_seq', (select max(job_id) from "svc_system".sys_job)+1);
select setval('sys_job_log_job_log_id_seq', (select max(job_log_id) from "svc_system".sys_job_log)+1);
select setval('sys_logininfor_info_id_seq', (select max(info_id) from "svc_system".sys_logininfor)+1);
select setval('sys_menu_menu_id_seq', (select max(menu_id) from "svc_system".sys_menu)+1);
select setval('sys_notice_notice_id_seq', (select max(notice_id) from "svc_system".sys_notice)+1);
select setval('sys_post_post_id_seq', (select max(post_id) from "svc_system".sys_post)+1);
select setval('sys_role_role_id_seq', (select max(role_id) from "svc_system".sys_role)+1);
select setval('sys_user_user_id_seq', (select max(user_id) from "svc_system".sys_user)+1);总结
到此这篇关于mysql数据迁移到kingbase9(人大金仓数据库)的文章就介绍到这了,更多相关mysql数据迁移到kingbase9内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论