实践KDTS-WEB从mysql迁移到kingbasev9

ops/2024/12/28 18:55:05/

数据库国产化替代数据迁移是一个复杂且关键的过程。这涉及到将原有数据库中的数据准确、完整地迁移到新的国产数据库中,同时确保数据的完整性和一致性。人大金仓提供了强大的数据库迁移工具(KDTS)对同构、异构数据库数据迁移;

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

一、基础介绍:

1、附上一个关注度最高的金仓对源端数据库支持列表

更加详细的支持介绍可以异步官网:金仓社区 - 查看文档详情

源端数据库

支持版本

Oracle

9i、10g、11g、12c、19c

MySQL

5.X、8.X

SQLServer

2000、2005、2008、2012、2014、2016、2017、2019

Gbase

8s、8g

PostgreSQL

12

DM

8

Db2

11

神通(OSCAR)

7

KingbaseES

V7、V8R3、V8R6、V8R6C7、V9

2、KDTS版本不同差异

KDTS分两个版本一个BS版,一个SHELL版,喜闻乐道的是,两个工具都随数据库打包发布,不需要再单独部署

迁移工具BS版随数据库一起打包发布,安装完数据库后,在`${KES_HOME}/ClientTools/guitools/KDts/KDTS-WEB`目录下

迁移工具SHELL版随数据库一起打包发布,安装完数据库后,在`${KES_HOME}/ClientTools/guitools/KDts/KDTS-CLI`目录下

二、起动KDTS

进入KDTS-WEB目录

cd $KES_HOME/ClientTools/guitools/KDts/KDTS-WEB

执行启动

这里吐槽一下,建议启动完后最下面打印一下登录地址和端口

[kingbase@localhost ~]$ cd $KES_HOME/ClientTools/guitools/KDts/KDTS-WEB
[kingbase@localhost KDTS-WEB]$ cd bin/
[kingbase@localhost bin]$ ls
shutdown.bat shutdown.sh startup.bat startup.sh
[kingbase@localhost 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-17_10-52-11 ================================================
kdts-app-console v1.0.3.258
jar name: kdts-app-console-1.0.3.258.jar
base path: /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB
bin path: /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin
config path: /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf
log path: /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/logs/kdts-app-console_2024-12-17_10-52-11.log
java path: /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/jdk
JAVA_OPT: -server -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dcache_enable=true -Dconfig.path=/Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djava.security.properties=./conf/enableLegacyTLS.security -Duser.country=CN -Duser.language=zh -Djsse.enableCBCProtection=false --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs/ -Xms8G -Xmx8G -XX:+UseG1GC -XX:G1ReservePercent=20 -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:G1HeapRegionSize=8M -XX:+SegmentedCodeCache -XX:+PrintCommandLineFlags -XX:+ExplicitGCInvokesConcurrent
FreeMemory=13795M JavaMemory=8G
cpu_arch=x86_64
startup command: /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/jdk/bin/java -server -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dcache_enable=true -Dconfig.path=/Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djava.security.properties=./conf/enableLegacyTLS.security -Duser.country=CN -Duser.language=zh -Djsse.enableCBCProtection=false --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs/ -Xms8G -Xmx8G -XX:+UseG1GC -XX:G1ReservePercent=20 -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:G1HeapRegionSize=8M -XX:+SegmentedCodeCache -XX:+PrintCommandLineFlags -XX:+ExplicitGCInvokesConcurrent -jar /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/lib/kdts-app-console-1.0.3.258.jar > /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/logs/kdts-app-console_2024-12-17_10-52-11.log 2>&1 &
application pid: 129778

See "../logs/kdts-app-console_2024-12-17_10-52-11.log" or use the command-line "tail -f ../logs/kdts-app-console_2024-12-17_10-52-11.log" for more detail.
[kingbase@localhost bin]$ tail -f ../logs/kdts-app-console_2024-12-17_10-52-11.log
-XX:+ExplicitGCInvokesConcurrent -XX:G1ConcRefinementThreads=8 -XX:G1HeapRegionSize=8388608 -XX:G1ReservePercent=20 -XX:GCDrainStackTargetSize=64 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs/ -XX:InitialHeapSize=8589934592 -XX:MaxHeapSize=8589934592 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC
10:52:21.356 [main] INFO com.kingbase.kdts.DataMigrationApplication - ForkJoinPool.common.parallelism: 7
10:52:21.533 [main] INFO com.kingbase.kdts.DataMigrationApplication - PlatformClassLoader: jdk.internal.loader.ClassLoaders$PlatformClassLoader
10:52:21.533 [main] INFO com.kingbase.kdts.DataMigrationApplication - SystemClassLoader: jdk.internal.loader.ClassLoaders$AppClassLoader
10:52:21.533 [main] INFO com.kingbase.kdts.DataMigrationApplication - ContextClassLoader: org.springframework.boot.loader.LaunchedURLClassLoader
2024-12-17 10:52:34.642 INFO 129778 --- [ main] c.k.kdts.DataMigrationApplication : Starting DataMigrationApplication v1.0.3.258 using Java 11.0.2 on localhost.localdomain with PID 129778 (/Kingbase/ES/V9/KESRealPro/V009R001C001B0030/ClientTools/guitools/KDts/KDTS-WEB/lib/kdts-app-console-1.0.3.258.jar started by kingbase in /Kingbase/ES/V9/KESRealPro/V009R001C001B0030/ClientTools/guitools/KDts/KDTS-WEB)
2024-12-17 10:52:34.644 INFO 129778 --- [ main] c.k.kdts.DataMigrationApplication : No active profile set, falling back to 1 default profile: "default"

查看进程

[kingbase@localhost bin]$ ps -ef|grep kdts
kingbase 129778 1 99 10:52 pts/0 00:01:05 /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/jdk/bin/java -server -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dcache_enable=true -Dconfig.path=/Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djava.security.properties=./conf/enableLegacyTLS.security -Duser.country=CN -Duser.language=zh -Djsse.enableCBCProtection=false --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs/ -Xms8G -Xmx8G -XX:+UseG1GC -XX:G1ReservePercent=20 -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:G1HeapRegionSize=8M -XX:+SegmentedCodeCache -XX:+PrintCommandLineFlags -XX:+ExplicitGCInvokesConcurrent -jar /Kingbase/ES/V9/ClientTools/guitools/KDts/KDTS-WEB/lib/kdts-app-console-1.0.3.258.jar
kingbase 129931 126746 0 10:52 pts/0 00:00:00 grep --color=auto kdts

验证登录

访问地址: http://localhost:54523/  《远程登录修改成自己的ip》

默认用户名及密码:kingbase / kingbase

三、实施迁移

1、创建数据源

添加源数据库

点击新建,然后输入源数据库信息,点击测试,测试通过后点击保存

添加目标数据库

同源端体检基本一致

2、创建迁移任务

选择新建迁移任务,选择源与目标的数据库连接

选择要迁移的数据库,和目标属主,下一步

选中要迁移的数据库,可以选择迁移范围,还可以字段类型过滤等,结合自己情况可以按需配置

对源库和目标库进行配置

特殊需要提一下的,还可以数据类型映射,不同数据库之间的字段类型长度可能不同,这个就很方便的自定义自己的数据类型映射了

点击保存并启动后就开始了迁移任务,可以再迁移任务里看到迁移任务,点击详情查看任务的详细信息

迁移结果

四、总结

KDTS作为人大金仓数据库管理系统(KingbaseES)的配套工具,为数据库迁移提供了高效、稳定的解决方案。在实际操作中,我KDTS能够顺利迁移表结构和数据,生产上用的oracle迁移,虽然部分游标和自定义存储过程可能需要手动调整,提供了BS版和SHELL版两种使用方式,满足不同用户的需求。BS版通过浏览器以可视化界面方式设置配置项,使得迁移过程更加直观易懂;而SHELL版则通过手动修改配置文件的方式设置配置项,为高级用户提供了更多的灵活性。这种设计使得KDTS既适合初学者,也适合有经验的数据库管理员‌,相信它能够为用户带来更多的便利和价值。


http://www.ppmy.cn/ops/144903.html

相关文章

EXCEL使用宏实现筛选重复项并对该行进行填充内容的操作

EXCEL使用宏实现筛选重复项并对该行进行填充内容的操作 需求 1.一个excel中有多张不同的sheet 2.筛选出sheet1中A、B列与sheet2中A、B列中非重复行 3.在非重复行对应的D列填充内容 原始表:需要排出专家1wbb在自己没课的时候可以听其他人课的时间,在专…

无人直播源码

DY无人直播系统架构设计介绍 在DY等短视频平台的直播中,无人直播系统能够提供自动化、智能化的互动体验,既减轻了主播的工作量,又提升了观众的参与感。以下是一个典型的无人直播系统架构设计,包含全局配置、点对点互动、产品话术、…

网络安全 | 入门:理解基本概念和术语

网络安全 | 入门:理解基本概念和术语 前言一、什么是网络安全?1.1 网络安全的重要性1.2 网络安全的三大核心目标(CIA三原则) 二、网络安全常见术语2.1 防火墙(Firewall)2.2 入侵检测系统(IDS&am…

高校教师成果管理小程序的设计与实现springboot+论文源码调试讲解

第2章 开发环境与技术 基于web的高校教师成果管理的编码实现需要搭建一定的环境和使用相应的技术,接下来的内容就是对基于web的高校教师成果管理用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的,是经常…

MCU 功耗基准测试

电池供电设备的开发人员通常面临着提供高水平的功能和性能,同时限度地延长电池寿命的挑战。水流量计和燃气流量计、医疗监控设备和远程传感器等应用通常需要单块电池的电池寿命长达数月甚至数年。在某些情况下,开发人员还面临着开发完全没有电池的下一代…

Suno Api V4模型无水印开发「高清音频WAV下载」 —— 「Suno Api系列」第6篇

历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中,支持120并发任务 Suno Api V4模型无水印开发「灵感模式」 —— 「Suno Api系列」第1篇 Suno Api V4模型无水印开发「自定义模式」 —— 「Suno Api系列」第2篇 Suno Api V4模型无水印开发「AI生成歌词」…

基于Spring Boot的雅苑小区管理系统

一、系统背景与意义 随着信息化技术的快速发展,传统的小区物业管理方式已经难以满足现代居民对于高效、便捷服务的需求。因此,开发一款基于Spring Boot的小区管理系统显得尤为重要。该系统旨在通过信息化手段,实现小区物业管理的智能化、自动…

cudnn版本gpu架构

nvcc --help 可以看 --gpu-architecture 写到的支持的架构 NVIDIA 的 GPU 架构是按代次发布的,以下是这些架构的对应说明: NVIDIA Hopper: 这是 NVIDIA 于 2022 年推出的架构之一,面向高性能计算(HPC)和人工智能&…