金仓数迁平台 KDTS 初体验:高效迁移的秘诀
在当今数据驱动的时代,数据库迁移是一个复杂而又至关重要的过程。市场上虽有众多开源及商业数据库迁移工具,但若论对金仓数据库的深刻理解和迁移效率,金仓自家的 KDTS(Kingbase Data Transformation Service)和 KFS 无疑是其中的佼佼者。本文将带您深入了解 KDTS 的基本操作,并分享实际应用案例。
KDTS 是一款专为用户设计的数据库数据迁移平台,它能够将数据从 Oracle、MySQL、SQL Server、Gbase、PostgreSQL、DM、KingbaseES 等数据库平滑迁移至 KingbaseES 数据库。支持迁移对象,包括但不限于表、视图、序列、函数、存储过程、同义词、触发器和注释,具体支持对象会根据源数据库的不同而有所差异。
KDTS 提供了两种产品形态,以满足不同用户的需求:
- BS 版:通过浏览器的可视化界面,用户可以便捷地设置配置项,完成数据迁移任务。
- SHELL 版:通过手动修改配置文件来设置配置项,实现数据迁移。
SHELL 版特别适合以下场景:堡垒机操作、远程终端访问以及未安装图形化界面的系统。
KDTS 作为金仓数据库的一部分,安装完整版金仓数据库后,用户可以在客户端目录下轻松找到 KDTS 程序。以下是 KDTS 目录结构的概览:
[shawnyan@rl9 KDts]$ pwd
/opt/Kingbase/ES/V9/ClientTools/guitools/KDts
[shawnyan@rl9 KDts]$ tree -L 2
.
├── KDTS-CLI
│ ├── bin
│ ├── conf
│ ├── drivers
│ ├── jdk
│ ├── lib
│ ├── logs
│ ├── results
│ └── version
└── KDTS-WEB
├── bin
├── conf
├── drivers
├── jdk
├── lib
├── logs
├── pid
├── results
└── web
17 directories, 2 files
KDTS BS 版的启停操作简单快捷,仅需运行指令脚本即可。以下是运行启动脚本的示例:
[shawnyan@rl9 bin]$ pwd
/opt/Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin
[shawnyan@rl9 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-06_16-30-36 ================================================
kdts-app-console v1.0.3.322
jar name: kdts-app-console-1.0.3.322.jar
base path: /opt/Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB
...
application pid: 76899
See "../logs/kdts-app-console_2024-12-06_16-30-36.log" or use the command-line "tail -f ../logs/kdts-app-console_2024-12-06_16-30-36.log" for more detail.
KDTS 默认搭载 OpenJDK,用户也可以根据需要替换为其他版本的 JDK,但需确保版本至少为 JDK 11。
服务启动后,KDTS 会监听两个端口,其中 54523 为 HTTP 监听端口,54524 为 HTTPS 监听端口。
[shawnyan@rl9 bin]$ ss -antpl | grep java
LISTEN 0 100 *:54524 *:* users:(("java",pid=76899,fd=18))
LISTEN 0 100 *:54523 *:* users:(("java",pid=76899,fd=15))
[shawnyan@rl9 bin]$
通过浏览器访问 KDTS 服务器地址 https://192.168.43.90:54524/,即可打开登录页面。

登录后,用户将看到一个直观的大屏界面,展示已配置的数据源数量、任务执行情况以及 KDTS 所在主机的资源状况。

图形化操作流程简单直观。首先,用户需要配置源数据库和目标数据库。

本文以 MariaDB 数据库作为源库,并已预先创建好测试库、表和数据。
MariaDB [mydb]> show tables;
+----------------------------------+
| Tables_in_mydb |
+----------------------------------+
| mysql_all_data_types_partitioned |
| v1 |
+----------------------------------+
2 rows in set (0.001 sec)
MariaDB [mydb]> select count(*) from mysql_all_data_types_partitioned;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.000 sec)
MariaDB [mydb]> select count(*) from v1;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.001 sec)
接下来,用户点击【迁移任务管理】菜单,添加新任务。

迁移过程中,用户可以在可视化界面查看迁移进度,也可以在后台查看 KDTS 日志,监控迁移进度。
Collecting table metadata...
Collect table metadata completed.
Collecting table large object information...
Collect table large object information completed.
Counting the number of database objects...7% (PRIMARY_KEY_CONSTRAINT)
Counting the number of database objects...14% (TABLE)
Counting the number of database objects...21% (FOREIGN_KEY_CONSTRAINT)
Counting the number of database objects...28% (INDEX)
Counting the number of database objects...35% (FUNCTION)
Counting the number of database objects...42% (VIEW)
Counting the number of database objects...50% (USER_DEFINED_TYPE)
Counting the number of database objects...57% (USER_DEFINED_TYPE_BODY)
Counting the number of database objects...64% (UNIQUE_CONSTRAINT)
Counting the number of database objects...78% (CHECK_CONSTRAINT)
Counting the number of database objects...78% (TRIGGER)
Counting the number of database objects...85% (PROCEDURE)
Counting the number of database objects...92% (COMMENT)
Counting the number of database objects...100%
Counting the size of database objects
迁移完成后,用户可以在 KDTS 平台上查看迁移报告。

也可以在服务器上拉取 HTML 格式的迁移报告。

在目标端 KES 数据库上查看迁移完成后的对象,验证迁移结果。
shawnyan=# select version();
version
----------------------------------------------------------------------------------------------------------------------
KingbaseES V009R001C002B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)
shawnyan=# set search_path = mydb;
SET
shawnyan=# \d
List of relations
Schema | Name | Type | Owner
--------+----------------------------------------------+-------------------+----------
mydb | mysql_all_data_types_partitioned | partitioned table | shawnyan
mydb | mysql_all_data_types_partitioned_DEFAULT_SYS | table | shawnyan
mydb | mysql_all_data_types_partitioned_p0 | table | shawnyan
mydb | mysql_all_data_types_partitioned_p1 | table | shawnyan
mydb | mysql_all_data_types_partitioned_p2 | table | shawnyan
mydb | mysql_all_data_types_partitioned_p3 | table | shawnyan
mydb | v1 | view | shawnyan
(7 rows)
shawnyan=# select count(*) from mysql_all_data_types_partitioned;
count
-------
4
(1 row)
shawnyan=# select count(*) from v1;
count
-------
2
(1 row)
至此,一次简单的数据库迁移验证测试圆满完成,整个过程流畅且高效。
数据库表迁移只是数据库替换过程中的一个环节,用户还需考虑 SQL 执行时间、SQL 执行结果一致性、应用程序代码中的方言调整等诸多问题。

金仓数据库文章合辑
- 金仓数据库进阶实战:使用 Ksql 一键巡检
- 金仓数据库 KES V9.1.2.14 发版
- 金仓数据库 KES V9.1.1.30 新特性体验
- 金仓数据库 KingbaseES V9 单机版安装指南
- 金仓数据库 KingbaseES 版本发展脉络
- 一文带你了解 KING BASE 金仓数据库
- 金仓 KES Plus 不充会员也好用
- [好书推荐]掌握金仓数据库,从这些必读书籍开始
- 盘点人大金仓的发明专利(2024.01公布)
- 人大金仓 更名为 中电科金仓
- 人大金仓25载:坚守信念,铸就国产数据库之光
Have a nice day ~
🌻 往期精彩 ▼
- 「合集」三年 50 篇,TiDB 干货全收录
- 「合集」MySQL 8.x 系列文章汇总
- 如何选择适合的 MySQL Connector/J 版本
- 几张图带你了解 TiDB 架构演进
- 一文带你了解 GB 18030-2022 字符集
- 人大金仓 更名为 中电科金仓
- 一文带你了解 KING BASE 金仓数据库
- 即将告别 PG 12,建议升级到 PG 16.3 版本
- Oracle 数据库全面升级为 23ai
- 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
- 国产分布式数据库开启新篇章!详解安全可靠测评结果公告(2024年第2号)
- MySQL 扛不住了,来试试这款平替的“国产化改造”必入手的国产数据库吧!
- 广东的崖山,中国的崖山数据库
- TiDB 新朋友 DBdoctor
– / END / –
👉 这里可以找到我
👉 这里有得聊
如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
关注微信公众号:少安事务所,后台回复[群],即可看到入口。
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~




