人大金仓KDTS工具迁移MySQL数据(V9R1C10)

📅 2026/7/10 1:41:37
人大金仓KDTS工具迁移MySQL数据(V9R1C10)
1、KDTS数据库迁移工具介绍1.1 KDTS介绍KES DTS是一款操作简单、高效稳定的数据库迁移工具基于智能翻译技术和并行任务调度架构实现数据库对象的智能转换和数据的高效迁移“一键操作”将各种国内外的数据库对象和数据迁移到KingbaseES数据库帮助用户轻松完成数据库迁移的工作。1.2 KDTS核心优势灵活的迁移策略 支持多种迁移任务配置满足不同迁移场景需求支持全量和按条件迁移、同时迁移多个数据库、模式或者多个用户支持按照策略进行大表拆分提升迁移性能实现多读多写并行读、并行写迁移任务执行高效稳定 以任务为驱动基于多线程异步处理机制保证单机多线程的迁移任务达到最佳的效率完善的容错和重试机制避免受外部因素的干扰网络闪断、数据源不稳定等因素导致迁移过程的任务报错或停止支持断点续传迁移过程中出现异常中断可无缝接续迁移结果保障 支持数据库对象二次迁移如果有没迁移成功的对象可以在迁移工具中修改出错的SQL语句保存以后进行二次迁移提供完备的迁移报告以表格报告和图表的方式直观展示迁移结果1.3 KDTS架构图2、部署KDTS2.1 环境要求在开始部署前请先检查以下内容是否满足工具部署要求满足才能进行部署。分类前置项要求说明硬件条件CPU根据计算机CPU的核心数/线程数、可用内存并兼顾源库和目标库服务器的性能及负载情况给迁移程序规划和设置合理并行度以最大化提升迁移效率。内存启动脚本bin/startup.sh或startup.bat会自动根据根据计算机的可用内存自动计算分配给迁移程序Java虚拟机内存可用内存的三分之二如果条件允许可适当手动增大分配给迁移程序的JVM内存修改启动脚本中的JAVA_MEMORY。磁盘迁移程序从源数据库读取数据后写入目标数据库因此需要一定量的内存作为中转缓存并行度越高、表中单行数据越大需要的内存越多。此外还需要一定量的磁盘空间用于存储日志、脚本、报告等。检查计算机磁盘的剩余空间应预留足够的磁盘空间500MB以上取决于迁移的对象和数据的多少给迁移程序多次迁移时应注意清理过时的内容logs和results目录。软件版本JDK版本根据CPU架构类型x64、AArch64等和操作系统选择相匹配的JDK。需要注意的是迁移程序需要JDK11及以上的版本。备注 KDTS在KingbaseES安装时已经内置了迁移工具随数据库一起打包发布部署的时候勾选的是“完全安装安装完数据库后在对应目录下即可操作访问。2.2 部署启停2.2.1 Web方式用kingbase用户登录服务器切换到Kingbase安装目录下迁移工具所在位置$\{KES_HOME\}/ClientTools/guitools/KDts/KDTS-WEBcd /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/ [kingbaselocalhost KDTS-WEB]$ ls -l 总用量 16 drwxrwxr-x 2 kingbase kingbase 119 6月 25 16:21 bin #启动脚本 drwxrwxr-x 12 kingbase kingbase 4096 7月 6 14:23 conf #配置文件 drwxrwxr-x 32 kingbase kingbase 4096 6月 25 16:21 drivers #数据库连接驱动 drwxrwxr-x 8 kingbase kingbase 96 6月 25 16:21 jdk #jdk 目录 drwxrwxr-x 2 kingbase kingbase 43 6月 25 16:21 lib #lib程序包 drwxr-xr-x 14 kingbase kingbase 4096 7月 6 14:56 logs #运行日志 drwxrwxr-x 4 kingbase kingbase 50 6月 25 16:21 web #页面文件运行KDTS 工具cd /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin bash startup.sh #输出日志 ------------------------------------------------------------------------ openjdk version 11.0.2 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.29) OpenJDK 64-Bit Server VM 18.9 (build 11.0.29, mixed mode) ------------------------------------------------------------------------ 2026-07-06_18-09-04 kdts-app-console v2.0.2.72 jar name: kdts-app-console-2.0.2.72.jar base path: /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB bin path: /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin config path: /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf log path: /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/logs/kdts-app-console_2026-07-06_18-09-04.log java path: /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/jdk JAVA_OPT: -server -Dfile.encodingUTF-8 -Djava.awt.headlesstrue -Dcache_enabletrue -Dconfig.path/home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf -Djavax.xml.parsers.SAXParserFactorycom.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.transform.TransformerFactorycom.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactorycom.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djava.security.properties./conf/enableLegacyTLS.security -Duser.countryCN -Duser.languagezh -Djsse.enableCBCProtectionfalse --add-opens java.base/jdk.internal.loaderALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfsALL-UNNAMED --add-opens java.base/java.netALL-UNNAMED --add-opens java.base/java.lang.invokeALL-UNNAMED -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath./logs/ -Xms16G -Xmx16G -XX:UseG1GC -XX:G1ReservePercent20 -XX:UseCompressedOops -XX:UseCompressedClassPointers -XX:G1HeapRegionSize8M -XX:SegmentedCodeCache -XX:PrintCommandLineFlags -XX:ExplicitGCInvokesConcurrent FreeMemory27765M JavaMemory16G cpu_archx86_64 startup command: /home/application/oKingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/jdk/bin/java -server -Dfile.encodingUTF-8 -Djava.awt.headlesstrue -Dcache_enabletrue -Dconfig.path/home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf -Djavax.xml.parsers.SAXParserFactorycom.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.transform.TransformerFactorycom.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactorycom.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djava.security.properties./conf/enableLegacyTLS.security -Duser.countryCN -Duser.languagezh -Djsse.enableCBCProtectionfalse --add-opens java.base/jdk.internal.loaderALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfsALL-UNNAMED --add-opens java.base/java.netALL-UNNAMED --add-opens java.base/java.lang.invokeALL-UNNAMED -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath./logs/ -Xms16G -Xmx16G -XX:UseG1GC -XX:G1ReservePercent20 -XX:UseCompressedOops -XX:UseCompressedClassPointers -XX:G1HeapRegionSize8M -XX:SegmentedCodeCache -XX:PrintCommandLineFlags -XX:ExplicitGCInvokesConcurrent -jar /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/lib/kdts-app-console-2.0.2.72.jar /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/logs/kdts-app-console_2026-07-06_18-09-04.log 21 application pid: 10102 See ../logs/kdts-app-console_2026-07-06_18-09-04.log or use the command-line tail -f ../logs/kdts-app-console_2026-07-06_18-09-04.log for more detail.停止KDTS 工具cd /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin [kingbaselocalhost bin]$ bash shutdown.sh /home/application/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/pid 101022.3 访问 KDTS 平台启动工具后用户通过浏览器访问URL即可使用迁移工具http://服务器IP:54523就能进入KDTS登录页面KDTS的默认账号密码因版本而异V9R1C10 版本默认用户名及密码为kingbase / Kb_DI20193、KDTS实战案例Mysql 迁移至 Kingbase3.1 必要条件创建 mysql 迁移账户-- 创建新用户 create user srebro% identified by srebro2026; -- 授予权限 grant all on *.* to srebro%;创建 kingbase 迁移账户-- 创建新用户 CREATE USER mysql_user WITH PASSWORD Password123!; -- 创建数据库 CREATE DATABASE test; -- 授予权限金仓数据库使用ALL PRIVILEGES语法 GRANT ALL PRIVILEGES ON DATABASE test TO srebro;3.2 查看迁移的数据量登陆原数据库-- 看看MySQL版本 SELECT VERSION(); --查看数据库有多大 select table_schema as 数据库, sum(table_rows) as 记录数, sum(truncate(data_length/1024/1024, 2)) as 数据容量(MB), sum(truncate(index_length/1024/1024, 2)) as 索引容量(MB) from information_schema.tables group by table_schema order by sum(data_length) desc, sum(index_length) desc; --查看指定数据库大小 select table_schema as 数据库, sum(table_rows) as 记录数, sum(truncate(data_length/1024/1024, 2)) as 数据容量(MB), sum(truncate(index_length/1024/1024, 2)) as 索引容量(MB) from information_schema.tables where table_schematest; --查看数据库先有多少张表【排除视图】 SELECT COUNT(*) as table_count FROM information_schema.tables WHERE table_schema test AND table_type BASE TABLE;3.1 新建源数据库连接MySQL配置项示例值说明数据源名称MySQL_业务库自定义标识名称数据库类型MySQL选择源端类型数据库版本5.7.44根据实际MySQL版本选择主机地址172.22.33.16MySQL服务器IP端口3306MySQL默认端口数据库名test待迁移的数据库名称用户名srebro需具备读取权限密码************对应的密码进入KDTS主界面依次点击「数据源管理」→「源数据库」→「新建」填完后点击「测试连接」确认连接成功再保存。3.2 新建目标数据库连接kingbase配置项示例值说明数据源名称KES_目标库自定义标识名称数据库类型KingbaseES选择目标端类型数据库版本V9R1C10主机地址172.24.0.158本地服务器端口54321数据库名test目标数据库名称建议与源端同名用户名srebro需要新建用户密码********点击「目标数据库」→「新建」填完后点击「测试连接」确认连接成功再保存。3.3 创建并执行迁移任务3.3.1 新建MySQL到金仓迁移任务进入「迁移任务管理」→「新建任务」创建任务名称指定源数据库连接名指定目标数据库连接名指定需要同步的数据库在 kingbase 中数据库都叫模式建议目标模式填写同名。目标属主 填写我们在上面 kingbase 创建的指定用户srebro⚠️ 不要勾选系统模式其他的迁移对象根据自己的实际环境勾选迁移全部对象目标数据库配置建议勾选 清空表数据删除已存在的对象(表、视图 等) 方便二次迁移。数据库映射需要注意 mysql源数据类型为tinyint unsigned需要修改目标数据类型为SMALLINT线程设置ps 如果数据量很大建议开启多线程迁移。内存分配的大小参考自己的配置。保存并迁移迁移中显示已迁移的数据量、剩余时间预估迁移完成任务成功完成迁移失败需进入迁移日志查看具体错误信息3.3.2 观察迁移结果视图错误处理方式也和简单有问题的 sql 发给 ai 分析下生成 kingbase 的 sql 给你。执行修改后的 sql执行成功3.3.3 对比迁移前后的数据kingbase test 数据库下test 模式里的的表的数量ksql test srebro 用户 srebro 的口令 授权类型: 企业版. 输入 help 来获取帮助信息. SELECT COUNT(*) AS table_count FROM pg_tables WHERE schemaname test;kingbase test 数据库下test 模式里的的视图的数量SELECT COUNT(*) FROM information_schema.views WHERE table_schema test; COUNT ------- 24 (1 行记录)4、常见问题与解决方案问题现象可能原因解决方案迁移时报数据类型兼容错误MySQL与KingbaseES数据类型差异检查数据类型映射关系必要时手动调整目标表结构存储过程/函数迁移失败SQL语法差异查看KDTS日志定位不兼容语法手动改写后重新迁移连接测试失败网络不通或端口未开放检查防火墙设置确保源端和目标端端口双向开放工具启动报错缺少JDK或JAVA_HOME未配置确认已安装JDK 8及以上版本并正确配置JAVA_HOME目标模式不存在未提前创建目标数据库在KingbaseES中预先创建目标数据库并授权迁移日志定位问题迁移失败需排查具体错误进入KDTS的「迁移日志」→「Error日志」查看详细报错信息5、参考https://www.kingbase.com.cn/product/details_553_30289.htmlhttps://bbs.kingbase.com.cn/knowledge