在现代企业中,数据无处不在,贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同,还是实时应用的数据同步,数据的一致性和及时性都至关重要。在数字化转型的过程中,如何确保不同系统、地域、设备之间的数据同步,成为了企业面临的重要挑战。
本专题将基于实践经验,从常见需求入手,为大家介绍热门数据源与数据目标之间的数据同步(全量/增量)如何实现?了解如何快速搭建数据管道,实现数据的高效迁移与无缝同步。
本文教程为:SQL Server → Dameng 的数据同步任务。
在实际应用中,数据同步涉及诸多场景,如容灾备份、应用改造/替代、数据库版本升级/回退、数据库替代、业务分流等,不同的场景在数据流向、同步需求、数据处理等方面会有不同的需求,需要针对性地选择迁移工具和方案。
以 SQL Server 到 Dameng(DM) 的数据同步需求为例,和前一个教程类似,这些同步需求的增加,也印证了国产化浪潮下,对拥有自主知识产权的国产数据库重视程度的升级。DM 数据库和 SQL Server 结构存在差异,TSQL 语法也存在差异,DM 数据库对此做了针对性的兼容性适配,但在同步过程中,仍需注意数据类型的差异、索引与约束策略、事务管理机制以及批量数据导入与导出的性能优化。同时,字符集和编码的兼容性也是关键点,尤其是在多语言环境下。此外,在同步复杂数据和高并发场景中,也需根据 DM 的特性进行调整和优化,以确保数据的完整性和系统的高效运行。
一、什么是 SQL Server?
SQL Server 是由微软开发的一款企业级关系型数据库管理系统,广泛应用于各行业的数据库管理和数据处理。SQL Server 支持全面的 SQL 标准,并提供丰富的开发接口和编程语言支持,适用于多种应用场景,包括联机事务处理(OLTP)、联机分析处理(OLAP)以及混合负载(HTAP)场景。SQL Server 以其强大的可扩展性、稳定的性能和丰富的功能特性,成为全球范围内最常用的数据库之一,深受各类企业用户的信赖。
优势
- 微软生态集成:与微软的操作系统、开发工具(如 Visual Studio)和云平台(Azure)紧密集成,提供无缝的开发体验和强大的扩展性。
- 跨平台支持:最新版本支持跨平台运行,兼容 Windows 和 Linux 操作系统。
- 高性能与可扩展性:内置了先进的查询优化器和内存数据库技术,能够处理大规模的数据负载和复杂查询任务。
- 数据安全与合规性:SQL Server 提供全面的数据加密、审计和备份解决方案,并符合多项国际安全和隐私标准,如 GDPR 和 HIPAA。
- 丰富的分析与 BI 支持:SQL Server 提供集成的分析服务(SSAS)、报表服务(SSRS)和集成服务(SSIS),支持复杂的数据分析和商业智能(BI)场景。
二、什么是 Dameng?
Dameng 是新一代大型通用关系型数据库,全面支持 SQL 标准和主流编程语言接口/开发框架。行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应用场景。凭借其丰富的产品架构、优异的性能表现、绝对的安全保证适应各种应用场景需求得到了众多客户的信任,不仅在国产数据库市场中成功占有一席之地,成为国产化替代的常见选项,也逐渐成为国际竞争中的一股重要力量。
优势
- 自主研发: 拥有完全自主知识产权,符合国家信创工程的战略需求。
- 跨平台: 支持多种操作系统,如 Windows、Linux 以及国产操作系统。
- 高性能: 优化了查询和数据处理能力,适合处理大规模复杂数据。
- 兼容性强: 兼容主流数据库,如 Oracle、MySQL,便于数据迁移。
- 安全性: 已通过公安部安全四级评测,是安全等级最高的商业数据库之一。
三、方案选择:如何实现 SQL Server → Dameng 的数据同步?
实现 SQL Server 到 Dameng 的数据同步的常见方式包括,手动构建数据管道或使用自动化工具:
手动构建数据管道
类似方案通常适用于小规模数据或需要高度自定义的场景。开发人员可以编写自定义脚本,利用 SQL Server 的数据导出工具(如 BCP、SQLCMD)将数据导出为 CSV 或其他通用格式,再通过 Dameng 的导入命令(如 DMLOAD、DMRUL)将数据导入目标数据库。这种方式需要手动处理数据类型的转换、索引和约束的迁移,以及语法的调整。
手动构建数据管道虽然灵活,但也存在一些限制。首先,操作复杂且工作量大、耗时久,开发人员需要编写和维护大量脚本,尤其在面对复杂数据结构时容易出错。由于缺乏自动化工具的监控和错误处理机制,手动方式在出现问题时难以及时发现和恢复。此外,这种方法通常不具备实时同步能力,延迟较高,无法满足需要快速反映数据变化的场景。同时,手动方案扩展性差,随着数据规模增加或结构变化,脚本需要频繁调整,导致维护成本显著增加。性能方面,单线程操作在处理大规模数据时效率较低,容易形成瓶颈。因此,手动数据管道更适合小规模、定制化的数据同步需求,而不适用于大规模或高实时性场景。
自动化工具
例如选择使用 TapData 这样的自动化数据集成平台,只需三步就可以在几分钟内开启所需的数据同步任务:
- 将 SQL Server 设置为源连接
- 将 Dameng 设置为目标连接
- 定义要传输的数据以及传输频率
TapData 内置 100+ 数据连接器,提供了友好的用户界面和强大的实时同步功能,无需编写复杂的代码即可轻松实现数据的迁移和同步。这样不仅节省了大量的时间和人力成本,还能保障数据同步过程的稳定性和可靠性。对于那些希望快速、高效地完成 SQL Server 到 Dameng 数据同步的企业和开发者来说,这样的便捷工具无疑是一个理想的选择。
四、TapData 高效同步完整教程
完成 TapData Agent 部署后,即可跟随以下教程在 TapData 中添加源与目标的数据连接(支持版本:SQL Server 2005、2008、2008 R2、2012、2014、2016、2017、2019、2022;DM 7.x、8.x),并快速构建数据管道。(*涉及工具版本为 TapData 本地部署版)
版本指路:
点击登录 TapData Cloud
申请试用 TapData 本地部署版
① 准备工作(作为源库)
数据源:SQL Server
- 以管理员(例如 sa)身份,登录到 SQL Server Management Studio 或 sqlcmd。
- 启用 SQL Server 代理服务。
执行下述命令,启用变更数据捕获能力。
- 启用数据库级别的 CDC,在执行命令时,您需要替换 database_name 为真实的数据库名。
-- 启用变更数据捕获能力
USE database_name
GO
EXEC sys.sp_cdc_enable_db
GO
-- 查看是否启用变更数据捕获,is_cdc_enabled 值为 1 即表示已启用该功能
SELECT [name], database_id, is_cdc_enabled
FROM sys.databases
WHERE [name] = N'database_name'
GO
- 启用表级别的 CDC。
USE database_name
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'schema_name',
@source_name = N'table_name',
@role_name = N'role_name',
@supports_net_changes = 1
GO
- database_name:数据库名称。
- schema_name:架构名称,例如 dbo。
- table_name:数据表的名称。
- role_name:可以访问更改数据的角色,如不希望使用设置角色,可将其设置为 NULL,如果在启用增量复制时指定了角色,则需确保数据库用户具有适当的角色,以便 TapData 可以访问增量复制表。
- 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。
-- 创建登录账户
CREATE LOGIN login_name WITH PASSWORD='passwd', default_database=database_name;
-- 创建数据库操作用户
CREATE USER login_name FOR LOGIN login_name with default_schema=schema_name;
- login_name:登录名,即用户名。
- passwd:用户密码。
- database_name:与登录关联的默认数据库,即要登录的数据库名。
- schema_name:数据库架构名称(例如 dbo),它充当对象(例如表、视图、过程和函数)的命名空间或容器。相关资料,见创建数据库架构。
下述示例表示创建一个名为 tapdata 的用户,指定登录的数据库为 demodata,架构为 dbo:
-- 创建登录账户
CREATE LOGIN tapdata WITH password='Tap@123456', default_database=demodata;
-- 创建数据库操作用户
CREATE USER tapdata FOR LOGIN tapdata with default_schema=dbo;
- 为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。
-- 授予读取指定架构下所有表的权限
GRANT SELECT ON SCHEMA::schema_name TO tapdata;
-- 授予读取变更数据捕获的权限,其架构固定为 cdc
GRANT SELECT ON SCHEMA::cdc TO tapdata;
- login_name:登录名,即用户名。
- schema_name:数据库架构名称(例如 dbo),它充当对象(例如表、视图、过程和函数)的命名空间或容器。
下述示例表示授予 tapdata 用户,拥有 dbo 架构和 cdc 架构下所有表的读取权限。
GRANT SELECT ON SCHEMA::dbo TO tapdata;
GRANT SELECT ON SCHEMA::cdc TO tapdata;
- (可选)如需向从节点读取增量数据以实现数据同步,您需要为从节点设置上述步骤。
数据目标:Dameng
在连接 DM 之前,还需完成数据库账号的授权等准备工作。TapData 同时支持 DM 作为源或目标,当 DM 作为目标库时,准备工作包括:
- 以拥有 DBA 权限的身份登录达梦数据库。
- 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。
CREATE USER username IDENTIFIED BY "password" DEFAULT TABLESPACE table_space_name;
- username:用户名
- password:密码
- table_space_name:表空间名称
- 为刚创建的账号授予权限,也可以基于业务需求自定义权限控制。
-- 替换下述命令中的 username 为真实的用户名
GRANT CREATE TABLE, DELETE TABLE, INSERT TABLE, SELECT TABLE, UPDATE TABLE, CREATE INDEX TO username;
② 创建 SQL Server 的连接
- 进入 TapData 控制台,在左侧导航栏,单击连接管理。
- 单击页面右侧的创建,在弹框中,搜索并选择 SQL Server。
- 在跳转到的页面,根据下述说明填写 SQL Server 连接信息:
连接信息设置
- 连接名称:填写具有业务意义的独有名称。
- 连接类型:支持将 SQL Server 作为源或目标库。
- 数据库地址:数据库连接地址。
- 端口:数据库的服务端口。
- 数据库名称:数据库名称,即一个连接对应一个数据库,如有多个数据库则需创建多个数据连接。
- 账号:数据库的账号。
- 密码:数据库账号对应的密码。
- Schema:Schema 名称。
高级设置
- 其他连接串参数:额外的连接参数,默认为空。
- 时间类型的时区:默认为数据库所用的时区,您也可以根据业务需求手动指定。
- 使用 SSL/TLS:选择是否开启 SSL 连接数据源,可进一步提升数据安全性,开启该功能后还需要上传 CA 证书、证书密码和服务器主机名信息,相关文件已在开启 SSL 连接中获取。
- 共享挖掘:挖掘源库的增量日志,可为多个任务共享源库的增量日志,避免重复读取,从而最大程度上减轻增量同步对源库的压力,开启该功能后还需要选择一个外存用来存储增量日志信息。
- 包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
- 排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
- Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。
- 模型加载频率:数据源中模型数量大于 1 万时,TapData 将按照设置的时间定期刷新模型。
- 单击连接测试,测试通过后单击保存:
*提示:如提示连接测试失败,请根据页面提示进行修复。
③ 创建 Dameng 的连接
- 参照 SQL Server 连接创建流程,完成 DM 连接配置信息填写,添加数据目标:
- 测试 DM 的连接:
④ 创建数据复制/开发任务
- 左侧导航栏点击数据复制,并点击右侧创建:
- 进入 DAG 页面,构建数据复制任务,通过拖拉拽的方式添加源与目标节点,并连接源与目标
- 单击源与目标节点,即可按需对二者进行设置:
- 保存任务
⑤ 任务启动与监控
- 启动任务,任务全量同步正常运行:
- 增量同步开启
以上,便是借助 TapData 快速实现数据库 SQL Server 到 Dameng 的全、增量同步的模拟教程。
后续,我们还将持续输出本专题内容,欢迎关注 TapData 官方公众号,了解更多。
【推荐阅读】
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。