SQL Server 迁移同步到 SQL Server
NineData 数据复制支持自建 SQL Server 到自建 SQL Server 数据源之间的数据同步。
功能介绍
NineData 数据复制支持数据源之间的结构、全量数据、增量数据的高性能复制,对于部分数据源,还提供双向复制功能,实现快捷构建异地多活业务架构。
- 结构:支持同构及异构数据源之间的对象结构复制,很大程度上降低了两个数据源之间的数据复制门槛。
- 全量数据:通过智能数据分片实现行级并发批量复制能力,有效保障复制性能。自主研发的新型断点续传技术,保证无主键表的数据准确性。
- 增量数据:支持全对象类型的 DML|DDL 增量数据复制,结合行级并发、热点合并等技术,提供强劲复制性能。
- 双向数据实时复制:直接多个节点之间的数据双向复制,保证所有节点的数据均保持最新状态。
通过以上功能,可以轻松高效地实现全量|增量数据复制、全量|增量数据迁移、全量|增量数据同步、数据集成、不停机无缝迁移等场景,为企业提供灵活和可靠的数据复制解决方案。
前提条件
已将源数据源和目标数据源添加至 NineData。如何添加,请参见添加数据源。
源和目标数据源的版本见下表,注意源数据源版本必须小于等于目标数据源版本。
源数据源 目标数据源 SQL Server 2022 SQL Server 2022 SQL Server 2019 SQL Server 2022、2019 SQL Server 2017 SQL Server 2022、2019、2017 SQL Server 2016 SQL Server 2022、2019、2017、2016 SQL Server 2014 SQL Server 2022、2019、2017、2016、2014 SQL Server 2012 SQL Server 2022、2019、2017、2016、2014、2012 SQL Server 2008R2 SQL Server 2022、2019、2017、2016、2014、2012、2008R2 SQL Server 2008 SQL Server 2022、2019、2017、2016、2014、2012、2008R2、2008 您必须拥有源数据库的读权限以及目标数据源的读写权限。
使用限制
- 执行数据同步前需评估源数据源和目标数据源的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源数据源和目标数据源一定的读写资源,导致数据库负载上升。
- 需要确保同步对象中的每张表都有主键或唯一约束、列名具有唯一性,否则可能会重复同步相同数据。
操作步骤
登录 NineData 控制台。
在左侧导航栏单击数据复制 > 数据复制。
在数据复制页面,单击右上角的创建复制。
在数据源与目标页签,按照下表进行配置,并单击下一步。
参数 说明 任务名称 输入数据同步任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。 源数据源 同步对象所在的数据源。 目标数据源 接收同步对象的数据源。 目标对象命名规则 选择对象名称从源端迁移到目标端后的大小写转换规则。 - 全部转小写:无论源端的命名规则如何,目标端的命名规则全部为小写。
- 保持与源一致:沿用源端的命名规则。
- 全部转大写:无论源端的命名规则如何,目标端的命名规则全部为大写。
复制规格(仅结构复制的情况下不可选) 复制任务的规格,规格越大复制的速率越高,将鼠标悬浮于 图标上即可查看每个规格对应的速率和配置信息。每个规格中显示了可用数量及规格总数,当可用数量为 0 时将以灰度显示,无法选择。
目标表存量数据处理策略(未选中结构复制时需要选择) - 预检查报错并停止任务:预检查阶段检测到目标表中存在数据时,停止任务。
- 忽略存量数据,追加写入:预检查阶段检测到目标表中存在数据时,忽略该部分数据,追加写入其他数据。
- 清空存量数据,重新写入:预检查阶段检测到目标表中存在数据时,删除该部分数据,重新写入。
在选择复制对象页签,配置下列参数,然后单击下一步。
参数 说明 复制对象 选择需要复制的内容,您可以选择全部实例复制源库所有内容,也可以选择自定义对象,在源对象列表中选中需要复制的内容,单击>添加到右侧目标对象列表。 如果您需要创建多条相同复制对象的复制链路,可以创建一个配置文件,在新建任务的时候导入即可。单击右上角的导入配置,再单击下载模板,将配置文件模版下载到本地,编辑完成后单击上传文件上传该配置文件即可实现批量导入。配置文件说明:
在预检查页签,等待系统完成预检查,预检查通过后,单击启动任务。
您可以勾选开启数据一致性对比。在同步任务完成后,自动开启基于源数据源的数据一致性对比,保证两端数据一致。根据您选择的复制类型,开启数据一致性对比的启动时机如下:
- 全量复制:全量复制完成后启动。
如果预检查未通过,需要单击目标检查项右侧操作列的详情,排查失败的原因,手动修复后单击重新检查重新执行预检查,直到通过。
检查结果为警告的检查项,可视具体情况修复或忽略。
在启动任务页面,提示启动成功,同步任务开始运行。此时您可以进行如下操作:
单击查看详情查看同步任务各个阶段的执行情况。
- 单击返回列表可以返回数据复制任务列表页面。
查看同步结果
登录 NineData 控制台。
在左侧导航栏单击数据复制。
在数据复制页面单击目标同步任务的任务 ID,页面说明如下。

序号 功能 说明 1 同步延迟 源数据源和目标数据源之间的数据同步延迟,0 秒表示两端之间没有延迟,此时您可以选择将业务切换到目标数据源,实现平滑迁移。 2 配置告警 配置告警后,系统会在任务失败时通过您选择的方式通知您。更多信息,请参见运维监控简介。 3 更多 - 暂停:暂停任务,仅状态为运行中的任务可选。
- 终止:结束未完成或监听中(即增量同步中)的任务,终止任务后无法重启任务,请谨慎操作。如果同步对象中包含触发器,会弹出触发器复制选项,请按需选择。
- 删除:删除任务,任务删除后无法恢复,请谨慎操作。
4 结构复制(包含结构复制的场景下显示) 展示结构复制的进度和详细信息。 - 单击页面右侧的日志:查看结构复制的执行日志。
- 单击页面右侧的
:查看最新的信息。
- 单击列表中目标对象右侧操作列的查看 DDL:可以查看 SQL 回放。
5 全量复制(包含全量复制的场景下显示) 展示全量复制的进度和详细信息。 - 单击页面右侧的监控:查看全量复制过程中的各监控指标。全量复制过程中,还可以单击监控指标页面右侧的限流设置,限制每秒写入到目标数据源的速率。
- 单击页面右侧的日志:查看全量复制的执行日志。
- 单击页面右侧的
:查看最新的信息。
6 增量复制(包含增量复制的场景下显示) 展示增量复制的各项监控指标。 - 单击页面右侧的查看线程:查看当前复制任务正在执行中的操作,包含:
- 线程号:复制任务分多个线程执行复制操作,展示当前进行中的线程号。
- 执行 SQL:当前线程正在执行中的 SQL 语句详情。
- 提交响应时间:当前线程的响应时间,如果该数值变大,则代表当前线程可能由于某些原因卡住。
- 事件时间:当前线程开启的时间戳。
- 状态:当前线程的状态。
- 单击页面右侧的限流设置:限制每秒写入到目标数据源的速率。单位为行/秒。
- 单击页面右侧的日志:查看增量复制的执行日志。
- 单击页面右侧的
:查看最新的信息。
7 修改对象 展示同步对象的修改记录。 - 单击页面右侧的修改同步对象,可对同步对象进行配置。
- 单击页面右侧的
:查看最新的信息。
8 数据对比 展示源数据源和目标数据源之间数据对比的结果。包含结构对比和数据对比。如果您未开启数据对比,请单击页面中的开启数据对比。 - 单击页面右侧的重新对比:对当前源和目标两端数据重新发起对比。
- 单击页面右侧的日志:查看一致性对比的执行日志。
- 单击页面右侧的监控(仅数据对比显示):查看对比 RPS(每秒对比的记录数)的走势图。单击详情可以查看更早之前的记录。
- 在对比列表右侧操作列单击
:查看源端和目标端的对比详情。
- 在对比列表右侧操作列单击
(不一致情况下显示):生成变更 SQL,您可以直接复制该 SQL 到目标数据源执行,修改不一致的内容。
9 展开 展示当前复制任务的详细信息,包括复制类型、复制对象、开始时间等。
附录:预检查项一览表
| 检查项 | 检查内容 |
|---|---|
| 源库权限检查 | 检查源数据库的账号权限是否满足要求 |
| 目标库数据存在性检查 | 检查待复制对象在目标数据库中是否已存在数据 |
| 目标库同名对象存在性检查 | 检查待复制对象在目标数据库中是否已存在 |
| 源数据源连接检查 | 检查源数据源网关状态、实例是否可达、用户名及密码准确性 |
| 目标数据源连接检查 | 检查目标数据源网关状态、实例是否可达、用户名及密码准确性 |
| 目标库权限检查 | 检查目标数据库的账号权限是否满足要求 |
| 源数据源和目标数据源版本检查 | 检测源数据库与目标数据库的版本是否兼容 |