迁移前的必要准备
业务需求梳理 与业务团队深入沟通,全面了解业务对数据的使用场景和需求。例如,对于一个电商系统,要明确订单数据、用户数据、商品数据等不同类型数据的迁移优先级和时效性要求。如果订单数据的实时性要求高,那么在迁移策略上可能需要优先考虑这部分数据的快速迁移和完整性保障 。同时,了解业务系统未来的发展规划,以便在迁移过程中预留一定的扩展性,避免因后续业务增长而导致数据库架构频繁调整。 数据量评估 精确统计源数据库 SQL Server 2022 中的数据量,包括各个表的数据行数、占用存储空间大小等信息。 可以通过 SQL 查询语句来获取这些信息,例如:
源数据库环境检查 确保 SQL Server 2022 数据库运行状态正常,没有未解决的错误和警告。检查数据库的日志文件是否已满,若已满可能会影响迁移过程中的事务处理。同时,确认数据库的配置参数是否符合迁移要求,例如内存分配、并发连接数等。可以通过 SQL Server Management Studio(SSMS)来查看和调整这些参数。 目标数据库环境准备 安装并正确配置人大金仓数据库,根据数据量和业务并发需求合理分配硬件资源,如 CPU、内存、磁盘空间等。例如,如果预计迁移后数据库的并发访问量较高,就需要为人大金仓数据库分配足够的内存来缓存数据,提高查询性能。同时,确保人大金仓数据库的网络配置正确,能够与源数据库及迁移工具进行正常通信。 迁移工具环境安装 选择合适的数据迁移工具,人大金仓官方提供的数据库数据迁移平台(KDTS)是一个不错的选择,它支持从 SQL Server 等多种数据库迁移表结构、数据、索引、约束等到人大金仓数据库 KingbaseES 。下载并安装 KDTS 工具,获取有效的授权许可,并根据工具的要求配置运行环境,如安装必要的依赖组件、设置环境变量等。
全量备份 使用 SQL Server 自带的备份工具或第三方备份软件进行全量备份。 例如,使用 T - SQL 语句进行全量备份:
备份验证 备份完成后,进行备份数据的验证工作,确保备份数据的完整性和可用性。可以通过还原备份数据到一个测试环境中,检查数据是否能够正常恢复和使用。例如,在测试环境中使用以下语句还原备份数据:
迁移工具 KDTS 详解
获取安装包 首先,需要从人大金仓官方网站下载 KDTS 安装包。在官网的下载页面中,找到与目标环境相匹配的 KDTS 版本,例如,如果目标服务器是 Windows 系统,则下载 Windows 版本的安装包;若是 Linux 系统,则下载对应的 Linux 版本安装包 。确保下载的安装包完整且未损坏。 安装流程(以 Windows 为例) 下载完成后,双击安装包启动安装向导。在安装向导的起始页面,选择安装语言,一般选择中文以便于操作。接着,阅读并接受软件许可协议。在选择安装类型时,建议选择 “完全安装”,这样可以确保 KDTS 的所有功能组件都被安装,包括核心的迁移引擎、图形化界面工具等 。然后,设置安装路径,默认路径通常为C:\Program Files\Kingbase\ES\[版本号]\ClientTools\guitools\KDts\KDTS-WEB,也可以根据实际需求选择其他路径,但要注意路径中不要包含特殊字符或空格,以免影响安装和后续使用。在安装过程中,系统可能会提示安装一些依赖组件,如 Java 运行环境(JRE),按照提示完成依赖组件的安装。等待安装进度完成,安装完成后,可以在开始菜单中找到 KDTS 的快捷方式。
设置连接参数 打开 KDTS 工具,首次启动时,需要配置源数据库(SQL Server 2022)和目标数据库(人大金仓数据库)的连接参数。在 KDTS 的界面中,找到 “数据源配置” 或类似的选项。 源数据库连接配置 对于 SQL Server 2022,输入服务器的 IP 地址或主机名,如果 SQL Server 2022 运行在本地,则可以输入localhost。填写 SQL Server 的端口号,默认端口号通常为 1433 。输入用于连接 SQL Server 的用户名和密码,确保该用户具有足够的权限来读取数据库中的数据和对象定义。选择要迁移的数据库名称,即 SQL Server 2022 中存储数据的具体数据库。此外,还可能需要选择合适的 JDBC 驱动程序,KDTS 一般会自带常见数据库的 JDBC 驱动,确保驱动版本与 SQL Server 2022 版本兼容。 目标数据库连接配置 对于人大金仓数据库,同样输入服务器的 IP 地址或主机名、端口号(默认端口号为 54321)。输入人大金仓数据库的管理员用户名(通常为system)和安装时设置的密码。指定目标数据库名称,这个数据库应该是预先在人大金仓数据库中创建好的,用于接收从 SQL Server 2022 迁移过来的数据。同样要确保 KDTS 与人大金仓数据库之间的网络连接畅通,可以通过测试连接按钮来验证配置的连接参数是否正确。 其他配置选项 在 KDTS 中,还可以进行一些其他的配置,以满足特定的迁移需求。例如,可以设置迁移任务的并发数,根据服务器的硬件资源和网络带宽情况,合理调整并发数,以提高迁移效率,但过高的并发数可能会导致服务器资源耗尽或网络拥塞。还可以配置数据过滤条件,只迁移符合特定条件的数据,比如在迁移电商系统数据时,可以设置只迁移最近一个月内有交易记录的用户数据。另外,对于一些大表,可以配置大表拆分策略,将大表拆分成多个小表进行迁移,避免因单个表数据量过大而导致迁移失败或迁移时间过长。
迁移流程实操
配置源数据库(SQL Server 2022) 在项目创建完成后的配置页面中,找到源数据库配置部分。输入 SQL Server 2022 所在服务器的 IP 地址,如果是本地服务器,可输入localhost或127.0.0.1。接着填写 SQL Server 的端口号,默认端口一般为 1433 ,但如果在安装过程中进行了自定义修改,则需填写实际的端口号。在认证方式上,常见的有 Windows 身份验证和 SQL Server 身份验证两种。若选择 SQL Server 身份验证,需要输入具有足够权限的用户名和密码,例如sa用户及其对应的密码。最后,指定要迁移的 SQL Server 2022 数据库名称,确保该数据库存在且用户具有读取权限。完成这些信息的输入后,点击 “测试连接” 按钮,KDTS 会尝试连接到 SQL Server 2022 数据库。如果连接成功,会弹出提示框显示 “连接成功”;若连接失败,需要检查输入的信息是否正确,网络是否畅通,以及 SQL Server 服务是否正常运行等问题。 配置目标数据库(人大金仓) 切换到目标数据库配置区域,输入人大金仓数据库服务器的 IP 地址和端口号,人大金仓数据库的默认端口号是 54321 。同样,输入用于连接人大金仓数据库的用户名和密码,一般情况下,管理员用户名为system。指定目标数据库名称,这个数据库应事先在人大金仓数据库中创建好,用于接收迁移过来的数据。配置完成后,同样点击 “测试连接” 按钮,验证与人大金仓数据库的连接是否正常。如果连接失败,可能是由于网络配置错误、用户名密码错误或者目标数据库服务未启动等原因,需要逐一排查解决。
数据类型差异分析 例如,SQL Server 2022 中的DATETIME数据类型,在人大金仓数据库中对应的是TIMESTAMP类型;SQL Server 2022 中的NVARCHAR类型,在人大金仓数据库中通常会映射为VARCHAR类型 。KDTS 工具一般会提供默认的数据类型自动映射功能,但对于一些特殊的数据类型或者复杂的数据库结构,可能需要手动调整。 映射规则操作 在 KDTS 的映射规则设置页面中,可以查看自动生成的映射关系。对于自动映射正确的字段和数据类型,可以直接使用默认设置;而对于那些可能存在兼容性问题的字段或约束,需要手动进行调整。比如,如果 SQL Server 2022 中有一个字段的数据类型为DECIMAL(18, 2),在人大金仓数据库中,虽然也有DECIMAL类型,但精度和标度的设置可能需要根据实际业务需求进行微调,以确保数据在迁移后不会出现精度丢失或数据溢出等问题。此外,对于一些自定义的数据类型或者具有特殊约束的字段,如唯一约束、主键约束等,也需要仔细检查映射后的约束是否依然有效,必要时进行手动修改和重新定义。
全量迁移 全量迁移是指将 SQL Server 2022 数据库中的所有数据一次性迁移到人大金仓数据库中。这种方式适用于数据量较小,或者对数据的实时性要求不高,且允许系统停机进行迁移操作的场景。在 KDTS 中,选择全量迁移模式后,点击 “执行迁移” 按钮,KDTS 会按照之前设置的映射规则,将源数据库中的表结构、数据、索引、约束等对象全部迁移到目标数据库中。在迁移过程中,可以在 KDTS 的界面中查看迁移进度,包括已迁移的数据量、剩余数据量、迁移速度等信息 。同时,KDTS 会记录迁移过程中的日志信息,以便在出现问题时进行排查和分析。 增量迁移 增量迁移则是只迁移自上次迁移以来发生变化的数据。这种方式适用于数据量较大,系统需要保持高可用性,不能长时间停机的场景。在使用增量迁移前,需要确保源数据库(SQL Server 2022)开启了相应的日志功能,以便能够捕获到数据的变化。在 KDTS 中配置增量迁移时,需要指定增量迁移的依据,例如基于时间戳、基于事务日志等。例如,如果选择基于时间戳的增量迁移,需要设置一个起始时间点,KDTS 会从该时间点之后开始捕获源数据库中发生变化的数据,并将其迁移到目标数据库中。增量迁移可以在系统运行的过程中持续进行,不断同步源数据库和目标数据库之间的数据差异,确保目标数据库中的数据始终与源数据库保持一致。
对比数据行数 可以通过 SQL 查询语句分别统计源数据库(SQL Server 2022)和目标数据库(人大金仓)中各个表的数据行数,然后进行对比。 例如,在 SQL Server 2022 中,可以使用以下语句查询某个表的数据行数:
在人大金仓数据库中,使用类似的 SQL 语句进行查询:
关键数据字段验证 选择一些关键的数据字段,对其内容进行详细对比。例如,对于一个电商系统中的订单表,订单编号、客户 ID、订单金额等字段都是关键字段。可以随机抽取一定数量的记录,对比源数据库和目标数据库中这些关键字段的值是否一致。可以使用 SQL 的SELECT语句结合WHERE条件来筛选出需要对比的数据,然后人工检查或者编写脚本进行自动化对比。 例如,在 SQL Server 2022 中查询特定订单编号的记录:
在人大金仓数据库中执行类似的查询:
数据一致性验证 对于存在关联关系的数据表,需要验证数据的一致性。例如,订单表和订单详情表之间存在外键关联,需要确保在目标数据库中,订单表中的每一条记录在订单详情表中都有对应的关联记录,且关联关系正确。可以通过编写复杂的 SQL 查询语句来验证这种关联关系,或者使用一些专门的数据验证工具来进行全面的一致性检查。如果在验证过程中发现数据存在问题,需要根据 KDTS 的迁移日志和相关记录,分析问题出现的原因,可能是映射规则设置错误、迁移过程中出现异常中断等,然后采取相应的措施进行修复,如重新调整映射规则、重新执行迁移任务等,直到数据验证通过为止。
迁移过程中的注意事项
外键约束 在迁移过程中,外键约束可能会因为数据的迁移顺序而出现问题。例如,如果先迁移主表的数据,再迁移从表的数据,而从表中的外键引用了主表中尚未迁移的数据,就会导致外键约束迁移失败。为了解决这个问题,可以先禁用目标数据库(人大金仓)中的外键约束,在数据迁移完成后,再重新启用这些约束 。 可以使用以下 SQL 语句在人大金仓数据库中禁用和启用外键约束:
索引 索引在数据库中起着提高查询性能的重要作用,但在迁移过程中,可能会出现索引失效或者性能下降的情况。一方面,SQL Server 2022 和人大金仓数据库的索引结构和实现方式可能存在差异,迁移后的索引可能无法达到预期的性能效果;另一方面,在数据迁移过程中,索引可能会因为数据的大量插入而变得碎片化,影响查询效率。因此,在迁移完成后,需要对人大金仓数据库中的索引进行检查和优化。 可以通过重建索引、更新统计信息等方式来提高索引的性能,例如在人大金仓数据库中使用以下语句重建索引:
调整事务提交频率 默认情况下,每次数据插入操作都可能会触发事务提交,这在数据量较大时会严重影响迁移效率。可以适当调整事务提交的频率,例如每插入 1000 条数据提交一次事务,而不是每条数据插入后都立即提交事务 。在 KDTS 工具中,可以通过相关的配置参数来设置事务提交的行数。例如,在配置迁移任务时,找到事务相关的配置项,将 “提交行数” 设置为 1000,这样可以减少事务提交的次数,提高数据插入的效率。 关闭目标库日志归档 在迁移过程中,关闭人大金仓数据库的日志归档功能可以显著提高迁移速度。因为日志归档会记录每一次数据操作,这会增加磁盘 I/O 和系统开销。在迁移完成后,再重新开启日志归档功能,以保证数据的安全性和可恢复性 。可以通过修改人大金仓数据库的配置文件或者使用相关的管理工具来关闭和开启日志归档功能。例如,在人大金仓数据库的配置文件kingbase.conf中,找到archive_mode参数,将其值设置为off来关闭日志归档;迁移完成后,再将其值设置为on重新开启日志归档。 优化网络配置 确保源数据库(SQL Server 2022)和目标数据库(人大金仓)之间的网络连接稳定且带宽充足。可以通过调整网络参数,如 TCP 窗口大小、网络缓冲区大小等,来提高数据传输的效率。同时,尽量减少网络中的其他数据流量干扰,保证迁移过程中的网络资源。例如,在服务器的网络配置中,增大 TCP 接收窗口和发送窗口的大小,可以使用命令行工具或者修改系统配置文件来实现。
数据备份 在迁移前,对 SQL Server 2022 数据库和人大金仓数据库的原始数据进行完整备份是至关重要的。备份可以作为数据迁移失败或出现问题时的恢复依据,避免数据丢失带来的损失。对于 SQL Server 2022 数据库,可以使用其自带的备份工具,如通过 T - SQL 语句进行全量备份:
对于人大金仓数据库,也有相应的备份工具和方法,例如使用sys_dump命令进行备份:
回滚方案 在迁移过程中,记录详细的迁移日志是非常必要的。日志中应包含迁移操作的每一个步骤、执行时间、操作结果以及出现的错误信息等。一旦迁移过程中出现问题,如数据丢失、数据不一致或者迁移失败等,可以根据迁移日志快速定位问题所在,并采取相应的回滚措施 。 回滚操作可以根据备份的数据,将数据库恢复到迁移前的状态。例如,如果在迁移过程中发现人大金仓数据库中的部分数据出现错误,可以使用之前备份的人大金仓数据库数据进行恢复,具体操作可以通过sys_restore命令来实现:
迁移后的检查与优化

本文作者:高 强(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




