KDTS 工具实现 MySQL 至 KingbaseES 数据迁移实战
KDTS 工具支持从 MySQL 到 KingbaseES 的数据离线迁移。通过 WEB 界面或 SHELL 脚本配置源库和目标库连接,选择迁移对象及参数后执行任务。迁移过程包含结构迁移、全量数据迁移及过滤配置。常见问题包括迁移速度慢和字符集乱码,可通过调整线程数、网络带宽及显式指定字符集解决。迁移后需验证数据准确性并进行功能测试。

KDTS 工具支持从 MySQL 到 KingbaseES 的数据离线迁移。通过 WEB 界面或 SHELL 脚本配置源库和目标库连接,选择迁移对象及参数后执行任务。迁移过程包含结构迁移、全量数据迁移及过滤配置。常见问题包括迁移速度慢和字符集乱码,可通过调整线程数、网络带宽及显式指定字符集解决。迁移后需验证数据准确性并进行功能测试。

在数字化转型的浪潮中,数据库作为企业核心数据的载体,其重要性不言而喻。然而,随着国产化替代进程的加速,许多企业面临一个关键问题:如何将原有 Oracle、MySQL 等国外数据库的数据,平滑迁移至国产数据库(如 KingBase)?
传统迁移方式往往存在以下痛点:
![图片]
针对这些痛点,金仓推出的 KingBase 数据库及其配套工具 KDTS(Kingbase Data Transformation Service),提供了一套从评估、迁移到验证的全栈式解决方案。本文将详细讲解 KDTS 的实战操作,完成国产化数据迁移。
![图片]
KingBase 数据库由中国人民大学研发,后由中电科金仓(中国电科集团成员企业)持续迭代优化。作为国内最早的自主知识产权数据库,KingBase 已形成覆盖单机版、集群版、云原生版的完整产品线,累计部署超 100 万套,广泛应用于金融、能源、政务等关键领域。
KingBase 支持 Oracle、MySQL、SQL Server、PostgreSQL 等主流数据库的语法兼容,例如:
通过国家信息安全等级保护四级认证,支持三权分立(数据库管理员、安全管理员、审计管理员分离)。提供透明数据加密(TDE)、动态数据脱敏等安全功能。
![图片]
KDTS 是一款高效的数据库迁移工具,利用智能翻译和并行任务调度,可'一键'将国内外数据库对象和数据迁移至 KingbaseES 数据库,操作简便稳定。
可使用 KDTS 进行数据的离线迁移,KDTS 提供了两种形态(WEB、SHELL),用户可根据需要进行选择。
text
KingbaseES 数据迁移工具 KDTS 动态加载待迁移的数据库访问接口,方便用户定制和使用。KingbaseES 数据同步工具 KFS 支持同、异构数据源之间的数据迁移。同构数据源间数据迁移:支持 KingbaseES V7 和 V8R3 到 KingbaseES V9 的数据迁移。异构数据源之间的数据迁移:支持 MySQL5、MySQL8 到 KingbaseES V9 的数据迁移。KingbaseES 数据同步工具 KFS 支持结构迁移、支持全量数据迁移、支持列名映射,支持数据迁移过滤,在配置数据任务时,可以对迁移的表配置 where 条件、通过匹配的 where 条件过滤需要迁移的数据。数据库迁移时需要按照用户需求确定在线迁移还是离线迁移,若是离线迁移,使用 KDTS 完成 MySQL 的完整迁移;若是在线迁移,目前支持使用 KFS 完成。
创建源数据库连接,创建数据库连接界面如下,填写数据源信息,包括:'连接名称'、'数据库类型'、'数据库版本'、'服务器地址'、'端口'、'用户名'、'密码'、'数据库'、'驱动'、'URL'、'连接参数'。
![图片]
创建数据库连接界面如下,填写数据源信息,包括:'连接名称'、'数据库类型'、'数据库版本'、'服务器地址'、'端口'、'用户名'、'密码'、'数据库'、'驱动'、'URL'、'连接参数'。
![图片]
KDTS 采用向导页的方式指导用户新建迁移任务,简单易用,用户依次配置'选择数据源'-'选择模式'-'选择迁移对象'-'配置参数',即可快速配置一个迁移任务。
选择数据源 填写自定义任务名称(任务名称不能重复),选择'源数据库'和'目标数据库',或者选择'新建数据源'后使用。
![图片]
选择模式 选择需要迁移的模式(如需选择模式在系统模式中可选中'包含系统模式'复选框)的表结构、表数据、视图、序列、函数、存储过程、程序包、同义词、自定义类型等。当模式较多时也可以通过左上方的查询框进行检索。请至少选择一种模式,否则将收到错误提示,以至于不能完成新建任务。
![图片]
选择迁移对象 通过已选模式选择需要迁移数据的表,模式较多时可在已选模式搜索框内输入模式名关键字进行快速检索。
![图片]
可迁移此模式下全部表,也可以指定或排除部份表,当选择'包含指定对象'或'排除指定对象'时,请通过'从列表选择'或'从文件导入'将数据添加到包含列表中。
从列表选择对象时,可选择对应模式、检索对象名关键字进行快速检索对象。点击'添加'按钮后加入到已选列表,当想要移除部份表时可以选择对应的表点击'移除'按钮取消表。选择完成后点击确定。
![图片]
配置参数 迁移工具提供了一系列配置参数用于迁移方案的个性化配置,满足多种迁移场景。配置参数分为'迁移配置'、'数据类型映射'、'线程配置'三个方面。
![图片]
将此任务作为预迁移任务点击'保存',或者作为执行任务点击'保存并迁移'。迁移完成后任务状态将变成:
迁移完成,迁移结束'状态'栏显示'完成',则迁移任务成功。
![图片]
迁移失败,迁移结束'状态'栏显示'失败',则迁移任务失败。失败后可点击详情查看日志进行解决。
![图片]
迁移完成后,需要确认执行结果,包括迁移数据量,是否有错误发生,可以通过迁移日志和迁移结果进行查看。
'迁移结果'功能的工作区包括'任务执行批次'、'迁移对象'、'总数'、'成功数'、'失败数'、'略过数'、'操作',可以查看历史迁移任务执行的每次记录,以及每次迁移的对象、成功数、失败数、查看失败任务的错误日志。
![图片]
配置步骤分为 3 步:激活配置文件、配置数据库连接、配置相关参数。
![图片]
在正确设置 application.yml 中的 active 项后,打开对应配置文件(datasource-mysql.yml),按实际运行环境进行配置。
编辑 conf/datasource-mysql.yml 文件,编辑源端和目标端连接信息,包括 url、driver-class-name、username、password 信息。
![图片]
![图片]
![图片]
![图片]
迁移配置参数整理
text
编辑 conf/datasource-mysql.yml 文件有多个配置参数,可灵活使用。以下列举常用的配置参数。
fetchSize,游标提取记录数(每次和服务器交互提取的数据行数,加大该值可提升读取效率,但会增加内存开销(一次将指定数量的数据取回放在缓存中))。
tableWithLargeObjectFetchSize,含大对象数据表的游标提取记录数(同上,只是此参数针对有大对象字段的表)。
tableWithBigLargeObjectFetchSize,大表拆分阈值行数(当表的行数超过此值时,将对表进行拆分,每块的记录数为此值和表总记录数除以'拆分最大块数'中的最大值)。
largeTableSplitThresholdRows,大表拆分阈值行数(当表的行数超过此值时,将对表进行拆分,每块的记录数为此值和表总记录数除以'拆分最大块数'中的最大值)。
largeTableSplitThresholdSize,大表拆分阈值大小(单位为 M)(当表的数据大小(普通字段 + 大对象字段)超过此值时,将对表进行拆分)。
largeTableSplitMaxChunkNum,大表拆分最大块数(每张表的最大拆分块数,应不超过总的读线程数)。
largeTableSplitConditionFile,大表拆分条件定义文件(优先于按行数和大小拆分)。
tableDataFilterConditionFile,表数据过滤条件定义文件。
useKdms,是否使用 kdms 做转换(视图、函数、存储过程、包、触发器)。
kdmsUrl,kdms 访问地址,前提是 useKdms: true。
writeBatchSize,批量提交记录数(行数据)。
writeBatchByteSize,批量提交数据大小(单位 M)。
lobInMemoryThresholdSize,大对象数据读入内存阈值(单位兆,默认 128M)。
dropExistingObject,删除目标库中已存在的对象(如表、视图等)。
truncateTable,是否默认清空目标库中已存在的表数据。
renameObject,目标数据库对象重命名,除表名、列名外的其他对象:pk、fk、constraint、unique constraint、index 等。
进入 KDTS-CLI/bin 目录下,编辑 startup.sh:
JAVA_PATH=${BASE_PATH}/jdk
进入 KDTS-CLI/bin 目录,执行:./startup.sh
可以在运行日志(kdts_plus_*.log)中查看到迁移整个过程的信息,包括任务启动、迁移进程、结果汇总。
可查看 result 下的迁移结果(在形如'result/2021-12-02_15-15-15/Sehcma1'目录下):
在迁移过程中一旦某个对象创建失败,KDTS 会将该对象的创建 sql 保留到本次迁移任务文件夹下的 FailedScript 目录下*.sql 文件,可以手动修改后通过 Ksql 或者 KStudio 工具手动执行。
迁移速度慢
字符集乱码
连接参数:characterEncoding=UTF8&useUnicode=true通过一系列迁移操作以及全面的验证与优化,成功地将 MySQL 数据库迁移至 KingbaseES。在迁移过程中,通过 KDTS 工具实现了数据的高效迁移,经过严格的数据准确性校验,确保了迁移后数据的完整性和一致性,关键数据字段的准确率达到了 99% 以上。
然而,迁移过程并非一帆风顺,遇到了数据类型不兼容、语法差异等诸多问题。通过采取针对性的解决方案,更需要更加注重前期的调研和准备工作,充分了解源数据库和目标数据库的差异,制定更加详细和完善的迁移方案,以降低迁移风险,提高迁移成功率。
应对迁移后需要进行全面的功能测试,并对测出问题及时分析、排查和修改。对那些很难定位的问题,可联系 KingbaseES 支持。
未来,随着 AI 技术的融入,KDTS 有望实现全自动化迁移评估、智能 SQL 优化、自适应性能调优,进一步推动国产数据库生态。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online