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