暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

金仓 KDTS 初探:Oracle 到 KingbaseES 一键迁移

原创 Lucifer三思而后行 2024-12-03
822

大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。

社群交流

为了给大家提供一些技术交流的平台,目前已成立的技术交流群:

  • Oracle 数据库交流群
  • 国产数据库交流群
  • Linux 技术交流群
  • ChatGPT 4o 免费体验群

需要进群(均已超过 200 人,需要邀请)可以添加号主微信:Lucifer-0622,备注对应的群名即可。

目录

前言

大家期待的 金仓数据库产品体验官第三期:KES数据迁移 活动又来了,这次是体验金仓 KES V9 KDTS 数据迁移工具,听说可以一键迁移,咱也不知道是真是假,我来试试看到底怎么个事儿!

介绍

数据库数据迁移平台(KDTS: Kingbase Data Transformation Service)是为用户提供 Oracle、Mysql、SQLServer、Gbase、PostgreSQL、DM、KingbaseES 数据库数据迁移到 KingbaseES 数据库的数据迁移工具。

数据库版本支持

源端数据库版本支持:

目标数据库版本支持:

源端数据库迁移对象支持:

安装包下载

KDTS 迁移工具内置在 KES V9 安装包中:

直接前往官网下载 KES V9 安装包即可:

下载后需要进行安装,安装教程可参考:

金仓数据库 KingbaseES V9 单机安装指南

KES V9 软件安装完成后在 ${KES_HOME}/ClientTools/guitools/KDts/目录下可以看到两个文件夹:

[kingbase@kesv9:/KingbaseES/V9/ClientTools/guitools/KDts]$ ll 总用量 0 drwxrwxr-x 9 kingbase kingbase 108 12月 3 12:01 KDTS-CLI drwxrwxr-x 8 kingbase kingbase 77 12月 3 12:02 KDTS-WEB

KDTS 数据库迁移工具的产品形态有以下两种:

  • KDTS-WEB(BS 版):通过浏览器以可视化界面方式设置配置项,完成数据迁移。
  • KDTS-CLI(SHELL 版):通过手动修改配置文件的方式设置配置项,完成数据迁移。

用户可以根据不同的场景来选择使用哪种方式来迁移数据库。

部署 BS 版

初次接触,为了方便使用,我打算部署 BS 版来进行迁移使用。

进入 KDTS-WEB 文件夹中的 bin 目录下启动 KDTS 网页迁移工具:

[kingbase@kesv9:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin]$ ./startup.sh ------------------------------------------------------------------------ openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode) ------------------------------------------------------------------------ ================================================ 2024-12-03_13-32-40 ================================================ kdts-app-console v1.0.3.322 jar name: kdts-app-console-1.0.3.322.jar base path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB bin path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin config path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf log path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/logs/kdts-app-console_2024-12-03_13-32-40.log java path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/jdk ## ... ## 省略 ## ... See "../logs/kdts-app-console_2024-12-03_13-32-40.log" or use the command-line "tail -f ../logs/kdts-app-console_2024-12-03_13-32-40.log" for more detail.

根据提示查看 kdts 启动日志:

[kingbase@kesv9:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin]$ tail -f ../logs/kdts-app-console_2024-12-03_13-32-40.log 2024-12-03 13:32:47.899 INFO 41010 --- [ main] com.kingbase.kdts.datasource.b : Load JDBC driver[B] -- mysql 8.0: 2024-12-03 13:32:47.899 INFO 41010 --- [ main] com.kingbase.kdts.datasource.b : file:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/drivers/mysql/mysql-connector-j-8.1.0.jar 2024-12-03 13:32:47.958 INFO 41010 --- [ main] c.k.k.console.config.DriverInitListener : Load Mysql 8.0 driver end 2024-12-03 13:32:47.958 INFO 41010 --- [ main] c.k.k.console.config.DriverInitListener : Load Pg12 driver begin 2024-12-03 13:32:47.959 INFO 41010 --- [ main] com.kingbase.kdts.datasource.b : Load JDBC driver[B] -- postgresql 12: 2024-12-03 13:32:47.959 INFO 41010 --- [ main] com.kingbase.kdts.datasource.b : file:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/drivers/postgresql/postgresql-42.6.0.jar 2024-12-03 13:32:47.966 INFO 41010 --- [ main] c.k.k.console.config.DriverInitListener : Load pg12 driver end 2024-12-03 13:32:48.028 INFO 41010 --- [ main] c.k.kdts.DataMigrationApplication : Started DataMigrationApplication in 6.215 seconds (JVM running for 7.664) 2024-12-03 13:32:48.033 INFO 41010 --- [ main] c.k.kdts.DataMigrationApplication : Version: 1.0.3.322 Build Time: 2024-08-26 (Core Version: 1.0.5.395) 2024-12-03 13:32:48.033 INFO 41010 --- [ main] c.k.kdts.DataMigrationApplication : Open 'http://localhost:54523' using a browser to access the application.

使用网页链接:http://192.168.6.96:54523 在浏览器中打开 KDTS 迁移工具即可(这里的 IP 请替换成自己环境的地址):

KDTS 网页端的默认登录用户名及密码:kingbase/kingbase,登录后界面如下:

关闭 KDTS:

[kingbase@kesv9:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin]$ ./shutdown.sh /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/pid 41010

上述简单演示了 KDTS 的启动和关闭。

KDTS 迁移

本文演示使用 KDTS 进行 Oracle 19C 到 KingbaseES V9 的数据库迁移步骤。

源数据库连接

首先需要连接源端数据库:

填写源端数据库信息,测试连通性:

源端数据库添加成功:

查看源端数据库信息:

-- 数据库字符集 SQL> select * from nls_database_parameters where parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET'); PARAMETER VALUE ------------------------------ -------------------- NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET AL32UTF8 -- 查看用户数据 SQL> SELECT count(*) FROM dba_objects WHERE owner='LUCIFER'; COUNT(*) ---------- 34 SQL> SELECT object_type,count(*) FROM dba_objects WHERE owner='LUCIFER' GROUP BY object_type; OBJECT_TYPE COUNT(*) ----------------------- ---------- INDEX 12 TABLE PARTITION 12 TABLE 10 SQL> SELECT sum(bytes) FROM dba_segments WHERE owner='LUCIFER'; SUM(BYTES) ---------- 102563840

目标数据库连接

连接目标端数据库:

KES 数据库中创建一个 Lucifer 数据库以及模式:

[kingbase@kesv9:/home/kingbase]$ ksql test system 输入 "help" 来获取帮助信息. test=# create database lucifer encoding utf8; CREATE DATABASE test=# \c lucifer system 您现在以用户名"system"连接到数据库"lucifer"。 lucifer=# create schema lucifer; CREATE SCHEMA lucifer=# \l lucifer; 数据库列表 名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限 ---------+--------+----------+-------------+-------------+---------- lucifer | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | (1 行记录) lucifer=# \dn lucifer 架构模式列表 名称 | 拥有者 ---------+-------- lucifer | system (1 行记录)

以上模式用户迁移源端数据库 lucifer 用户所建。

填写好目标端数据库信息,测试连通性:

目标端数据库添加成功:

迁移任务新建

配置好源和目标端数据库之后,就可以创建迁移任务,开始迁移:

选择刚刚配置好的数据库:

这里选择需要迁移的模式,或者直接搜索需要的模式:

Oracle 默认自带的模式我们不需要,直接搜索 LUCIFER 模式(记住一定要大写):

选择所有对象进行迁移(记得要手动滑动一下,后面还有一些可以勾选的对象):

点击下一步继续(这里我之前已经创建 lucifer 模式,可以直接覆盖):

迁移所有对象:

这一步可以配置很多参数来适配迁移任务,还可以通过 KDMS 工具来做转换,这里我打算不做任何修改,看一下会有什么效果:

保存并迁移,查看迁移进度:

可以看到短短 16s 就迁移成功了(虽然我的源数据库很简单):

通过概览也可以查看 KDTS 的使用情况:

但是貌似没有看到迁移后数据比对的功能,还需要加强功能啊!

简单查看一下目标端迁移情况:

lucifer=# \dt lucifer.* 关联列表 架构模式 | 名称 | 类型 | 拥有者 ----------+-----------------------+--------+-------- lucifer | basic_info | 数据表 | system lucifer | customers | 数据表 | system lucifer | departments | 数据表 | system lucifer | employees | 数据表 | system lucifer | inventory | 数据表 | system lucifer | order_details | 数据表 | system lucifer | orders | 数据表 | system lucifer | products | 数据表 | system lucifer | sales_stats | 分区表 | system lucifer | sales_stats_p_initial | 数据表 | system lucifer | sales_stats_sys_p230 | 数据表 | system lucifer | sales_stats_sys_p231 | 数据表 | system lucifer | sales_stats_sys_p232 | 数据表 | system lucifer | sales_stats_sys_p233 | 数据表 | system lucifer | sales_stats_sys_p234 | 数据表 | system lucifer | sales_stats_sys_p235 | 数据表 | system lucifer | sales_stats_sys_p236 | 数据表 | system lucifer | sales_stats_sys_p237 | 数据表 | system lucifer | sales_stats_sys_p238 | 数据表 | system lucifer | sales_stats_sys_p239 | 数据表 | system lucifer | sales_stats_sys_p240 | 数据表 | system lucifer | warehouses | 数据表 | system (22 行记录) lucifer=# \di lucifer.* 关联列表 架构模式 | 名称 | 类型 | 拥有者 | 数据表 ----------+----------------------+----------+--------+--------------- lucifer | sys_c007573_ff558803 | 索引 | system | basic_info lucifer | sys_c007574_92f54b0a | 索引 | system | basic_info lucifer | sys_c007577_ce3762de | 索引 | system | orders lucifer | sys_c007579_7a852db8 | 索引 | system | customers lucifer | sys_c007582_cef2ff36 | 索引 | system | products lucifer | sys_c007584_8253185e | 索引 | system | order_details lucifer | sys_c007587_c754cd3b | 索引 | system | employees lucifer | sys_c007591_b91f3a42 | 索引 | system | departments lucifer | sys_c007592_8ee53120 | 索引 | system | inventory lucifer | sys_c007593_6d488ead | 索引 | system | inventory lucifer | sys_c007595_afcc1d70 | 索引 | system | warehouses lucifer | sys_c007604_a19f8c4c | 全局索引 | system | sales_stats (12 行记录) lucifer=# \dmv lucifer.* Did not find any relation named "lucifer.*". lucifer=# \ds lucifer.* Did not find any relation named "lucifer.*".

可以看到 Oracle 数据库的对象已经成功迁移到 KingbaseES 数据库中。

写在最后

本文只是简单测试了金仓 KDTS 迁移工具的使用,初探感觉还不错,坑不是很多,当然真实体验还得需要更多生产实战进行检验!

如果有遗漏或者不足的地方,欢迎评论区补充或者投稿,感谢阅读!

往期精彩文章

达梦数据库安装最详细教程
一招教你学会达梦数据库的免密登录
一文讲透达梦数据库的大小写敏感
效率翻倍!达梦数据库 disql 使用技巧全攻略
达梦数据库参数配置与一键优化指南
达梦 AWR 报告快速上手指南
金仓数据库 KingbaseES V9 单机安装指南
KingbaseES KSQL 免密登录的几种方式
KingbaseES 控制文件冗余与恢复秘籍
金仓 KingbaseES RAC 入门指南
GBase 8a MPP 集群部署最佳实践
GBase 8a GDCA 认证课后练习题大全(题库)
南大通用 GBASE 8s V8.8 数据库最全安装指南
GBase 8s GDCA 认证课后练习题大全(题库)
GBase 8s 数据库巡检报告及一键巡检脚本
YashanDB 一键生成 AWR 报告
YashanDB 数据库安装部署
YashanDB 共享集群(YAC)入门指南与技术详解


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

评论