金仓数据库KingbaseES通过KDTS实现SQLServer至KingbaseES迁移深度实战指南
引言:国产数据库迁移的时代背景
在大数据加速推进的今天,国产数据库替代已成为企业数字化转型的关键一环。金仓数据库KingbaseES作为国产数据库的代表,其与KDTS(Kingbase Data Transfer Service)工具的协同使用,为SQL Server至KingbaseES的迁移提供了标准化、低风险的解决方案。本篇博客将从迁移评估到系统割接的全流程实践,涵盖迁移评估、迁移准备、数据迁移、代码迁移及测试验证五大核心阶段,为DBA和技术团队提供迁移方法论。

| No. | 文章地址(点击进入) |
|---|---|
| 1 | 电科金仓KingbaseES数据库解析:国产数据库的崛起与技术创新 |
| 2 | KingBase数据库迁移利器:KDTS工具深度解析与实战指南 |
| 3 | KingBase数据库迁移利器:KDTS工具 MySQL数据迁移到KingbaseES实战 |
| 4 | 电科金仓KingbaseES V9数据库:国产数据库的自主创新与行业实践深度解析 |
| 5 | KingbaseES客户端工具Ksql使用全指南:从安装到高级操作 |
| 6 | Spring JDBC与KingbaseES深度集成:构建高性能国产数据库应用实战 |
| 7 | 深度解析:基于 ODBC连接 KingbaseES 数据库的完整操作与实践 |
| 8 | Oracle与Kingbase深度兼容体验:从连接配置到性能优化全解析 |
| 9 | Python驱动Ksycopg2连接和使用Kingbase:国产数据库实战指南 |
| 10 | Go语言×Kingbase数据库极速打通:Gokb驱动三步实操,让国产数据库连接效率嘎嘎提升! |
| 11 | 金仓数据库KingbaseES实现MongoDB平滑迁移全攻略:从架构适配到性能调优的完整实践 |
| 12 | 深度解析:通过ADO.NET驱动Kdbndp高效连接与操作Kingbase数据库 |
| 13 | PHP驱动Pdo_kdb连接Kingbase数据库全攻略:从零到实战的深度指南 |
| 14 | KingbaseES数据库操作指南(1):SQL语法从入门到精通 |
| 15 | KingbaseES数据库操作指南(2):SQL语法从入门到精通 |
一、迁移评估:构建量化评估体系
1.1 KDMS迁移工具
KDTS是一款操作简单、高效稳定的数据库迁移工具,基于智能翻译技术和并行任务调度架构实现数据库对象的智能转换和数据的高效迁移,“一键操作”将各种国内外的数据库对象和数据迁移到KingbaseES数据库,帮助用户轻松完成数据库迁移的工作。

1.2 主要迁移内容
SQL Server数据库的迁移包含数据库迁移、用户迁移、数据迁移和应用程序迁移,这些内容必须严格按照顺序进行迁移,否则可能会导致迁移受阻。
1.3 确定迁移目标
开始迁移前,应根据实际需求,确定迁移目标
例如:
迁移SQL Server数据库的规模。
迁移SQL Server数据库对象的种类和特征,如简单和复杂迁移对象所占比例等。
迁移的难易程度,如是否迁移大对象,是否迁移大量约束等。
迁移的工期要求。
迁移中业务系统是否可以处于停止服务状态。
对目标系统的技术指标要求,诸如平台、版本、应用编程接口、工具、可用性、安全性和性能指标要求等。
1.4 评估迁移任务
迁移前对迁移的可行性、工作量、难易程度和工作进度等进行充分评估是为了降低迁移过程中的未知风险。
包括以下内容:
迁移技术指标,如迁移业务压力和性能指标等。
迁移数据规模,如迁移各类数据库对象的数量,PL/SQL程序的规模等。
迁移中KingbaseES不支持功能的种类和数量。
迁移的约束种类和数量。
迁移过程中可能遇到的其他问题。
在SQL Server迁移中常用的评估模板如下图:
-
迁移评估的数据库/应用概况模板

-
迁移评估的迁移报告总结模板

-
迁移评估的对象统计模板

二、迁移准备:打造零故障迁移环境
2.1 准备迁移环境
在完成迁移评估后,需要开始准备迁移环境
部署目的数据库服务器 , 部署目的数据库服务器应遵循以下原则:
- 目的数据库服务器的CPU、内存、网络环境等硬件应尽量采用较高的配置。
- 如果需要迁移的SQL Server数据库系统规模较大,如超过1GB,则建议把SQL Server和KingbaseES部署在不同的物理机器上。
- 为确保迁移效率,应尽量把KingbaseES和SQL Server服务器部署到同一局域网内。
获取并安装必要的软件 , 迁移前应获取并安装如下软件:SQL Server数据库系统、KingbaseES数据库系统、PL/SQL Developer、JDBC和ODBC驱动程序、C语言开发工具、OCI软件、DCI软件、TPC-C测试工具、LoadRunner等。
注意:如果迁移数据规模较大,建议对安装的KingbaseES数据库服务器进行适当的优化,如增大shared_buffer大小、预先创建较大的日志文件,预先申请足够的表空间数据库文件等。
完成上述准备工作后,我们就可以开始SQL Server数据库迁移工作了
获取 SQL Server数据库的相关信息 , 迁移前,应获取源数据库SQL Server服务名及迁移的数据规模信息。其中,前者用于PL/SQL Developer工具的登录操作,后者用于估算数据迁移时间和设计迁移方案。
SQL Server数据库基本信息
获取源SQL Server数据库的:
IP地址
实例名
网络服务端口号
用户名/密码
在目标KingbaseES上:
创建与源SQL Server用户(如sa)同名的用户(sa)。
创建与源SQL Server(如master)同名的数据库(master),属主为sa。
创建与源SQL Server(与用户名相同t)同名的模式dbo,属主为dbo。
查询SQL Server数据库编码方式
select * from sys.server_collations;
查看表数据量大小
查看当前用户在SQL Server中的表大小,按从大到小排序(单位GB)
select sum(total_pages) * 8 from sys.allocation_units;
检查数据库日期格式
时间的默认格式为:ISO, MDY
select GETDATE();
2024-08-25 17:56:44.580
在配置文件中添加:datestyle =‘ISO,YMD’ 修改为年月日的格式(99会改为1999)
配置KingbaseES的SQL Server兼容开关 , 根据实际情况,应对目的数据库KingbaseES进行适当的SQL Server兼容配置
配置目的库KingbaseES性能参数 , 为了提高迁移速度,应对目的库KingbaseES进行性能优化配置
2.2 数据库、用户和模式迁移
数据库、用户迁移主要包括以下内容:
-
获取源SQL Server数据库的IP地址、实例名、网络服务端口号、用户名/密码等信息
-
在目标KingbaseES数据库上,使用 Ksql 或 Kstudio 工具上执行如下操作:
创建与源SQL Server用户同名的用户,例如创建与SQL Server同名的sa用户。
创建与源SQL Server同名的数据库,例如创建与SQL Server同名的master数据库,它的属主为sa。若同名数据库存在,可以使用其他的数据库名称,若使用了新的数据库名称,则需要修改应用程序的连接串中的数据库名称。
- KingbaseES initdb时需添加 -m sqlserver 参数
三、数据迁移:WEB迁移
不同的迁移方式需要用到不同的迁移工具
- 离线迁移,使用 KDTS 即可完成 SQL Server 的完整迁移。
- 在线迁移,需要先使用 KDTS 完成历史状态迁移,然后使用 KFS 完成数据的在线追平

3.1 离线迁移
可使用KDTS进行数据的离线迁移,KDTS提供了两种形态(WEB、SHELL),用户可根据需要进行选择,以下章节将分别介绍WEB、SHELL版本进行SQL Server迁移的具体步骤
- 创建源数据库连接

- 创建目标数据库连接

- 新建迁移任务
选择数据源
填写自定义任务名称(任务名称不能重复),选择“源数据库”和“目标数据库”,或者选择“新建数据源”后使用

选择模式

选择迁移对象

可迁移此模式下全部表,也可以指定或排除部份表,当选择“包含指定表”或“排除指定表”时,请通过“从列表选择”、“从文件导入”或者在输入框内输入表名将数据添加到包含列表中,若未添加数据,则会提示错误导致无法进行下一步并完成新建任务。

点击“排除指定表”时也可选择多种方式

配置参数

执行迁移任务
可将此任务作为预迁移任务点击“保存”,或者作为执行任务点击“保存并迁移”

查看迁移报告及问题处理
迁移完成后,需要确认执行结果,包括迁移数据量,是否有错误发生,可以通过迁移日志和迁移结果进行查看。

四、应用代码迁移:从语法适配到逻辑重构
4.1 服务器应用代码迁移
数据迁移后,需要迁移应用系统中用到的服务器应用代码。
KDTS 已经完成了存储过程,函数等过程对象的迁移, 只需要关注应用代码中用到的批处理块的代码的迁移。
4.2 客户端应用代码迁移
在应用编程接口方面,KingbaseES与SQL Server兼容程度较高,所以,一般情况下,应用程序迁移比较容易。应用程序迁移通常应和迁移后的系统测试同时进行。这样可及时修改测试过程中发现的问题。
通常,在应用程序可采用API方式访问和操纵数据库:
该方式通过数据库厂商提供的各种标准应用编程接口在应用程序中与数据库进行交互。常用的应用编程接口如JDBC和ODBC等。目前,大多数数据库厂商均提供很多标准的数据库API及其驱动程序。
在实际应用中,应首先加载驱动程序。加载成功后,利用API函数与数据库交互并完成对数据库数据的操作。
五、测试验证
任何一个成熟的应用系统如果代码、尤其是关键代码变动后,则应进行全面细致的测试。类似的,更换新的后台数据库系统以后,也应对迁移后的数据库系统进行全面的功能和性能测试。
5.1 功能测试和排错
功能测试是指对迁移后的数据库系统的每一个模块和功能进行全面的系统回归测试,用以确保新系统各个功能的正确性
完成数据库对象和应用程序迁移后,应对迁移后的系统进行全面的功能测试,并对测出问题及时分析、排查和修改
5.2性能测试和调优
迁移后的系统性能测试和调优是在完成迁移得系统功能测试后和系统上线前,在实际或模拟生产数据上,对迁移后的系统进行的性能测试和调优。
调优:
构造测试数据:若条件允许的话,建议构造与实际生产数据规模相同的数据,并模拟构造未来一年、两年、五年或更长生命周期的数据进行测试。
部署测试软硬件环境:根据测试数据规模的大小,配置适当的测试软硬件环境。
性能测试:既可采用手动方式,也可利用TPCC测试工具、LoadRunner等工具对迁移后的系统进行自动测试。
性能调优:对未达到性能指标的功能模块及其SQL语句进行优化
通常,性能测试效果与测试数据规模、软硬件配置等因素密切相关。因此,建议性能测试时,测试数据规模、软硬件配置应尽量与将来的实际生产环境一致。必要时,在未来一年、两年、五年等不同模拟数据规模场景下,应分别测试迁移后的系统的性能指标,用以保证钱以后的系统未来仍能具有良好的性能表现
六、结语:迈向数据库国产化新纪元
通过KDTS工具实现SQL Server至KingbaseES的迁移,不仅是技术层面的升级,更是企业数字化转型的关键一步。本篇从迁移评估到系统割接的全流程实践。在大数据加速发展的背景下,掌握国产数据库迁移的核心技术,已成为每一位DBA的必备能力。
