大家好,这里是公众号 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 安装包即可:
下载后需要进行安装,安装教程可参考:
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)入门指南与技术详解