前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高效数据移动指南 | 如何快速实现数据库 SQL Server 到 Dameng 的数据同步?

高效数据移动指南 | 如何快速实现数据库 SQL Server 到 Dameng 的数据同步?

作者头像
Tapdata
发布2024-09-27 16:10:17
340
发布2024-09-27 16:10:17
举报
文章被收录于专栏:Tapdata

在现代企业中,数据无处不在,贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同,还是实时应用的数据同步,数据的一致性和及时性都至关重要。在数字化转型的过程中,如何确保不同系统、地域、设备之间的数据同步,成为了企业面临的重要挑战。

本专题将基于实践经验,从常见需求入手,为大家介绍热门数据源与数据目标之间的数据同步(全量/增量)如何实现?了解如何快速搭建数据管道,实现数据的高效迁移与无缝同步。

>>> 本文教程为: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

1. 以管理员(例如 sa)身份,登录到 SQL Server Management Studio 或 sqlcmd。

2. 启用 SQL Server 代理服务。

3. 执行下述命令,启用变更数据捕获能力

  1. 启用数据库级别的 CDC,在执行命令时,您需要替换 database_name 为真实的数据库名。

代码语言:javascript
复制
-- 启用变更数据捕获能力
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

b. 启用表级别的 CDC。

代码语言:javascript
复制
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 可以访问增量复制表。

4. 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。

代码语言:javascript
复制
-- 创建登录账户
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

代码语言:javascript
复制
-- 创建登录账户
CREATE LOGIN tapdata WITH password='Tap@123456', default_database=demodata;

-- 创建数据库操作用户
CREATE USER tapdata FOR LOGIN tapdata with default_schema=dbo;

5. 为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。

代码语言:javascript
复制
-- 授予读取指定架构下所有表的权限
GRANT SELECT ON SCHEMA::schema_name TO tapdata;

-- 授予读取变更数据捕获的权限,其架构固定为 cdc
GRANT SELECT ON SCHEMA::cdc TO tapdata;
  • login_name:登录名,即用户名。
  • schema_name:数据库架构名称(例如 dbo),它充当对象(例如表、视图、过程和函数)的命名空间或容器。

下述示例表示授予 tapdata 用户,拥有 dbo 架构和 cdc 架构下所有表的读取权限。

代码语言:javascript
复制
GRANT SELECT ON SCHEMA::dbo TO tapdata;
GRANT SELECT ON SCHEMA::cdc TO tapdata;

6. (可选)如需向从节点读取增量数据以实现数据同步,您需要为从节点设置上述步骤。

数据目标:Dameng

在连接 DM 之前,还需完成数据库账号的授权等准备工作。TapData 同时支持 DM 作为源或目标,当 DM 作为目标库时,准备工作包括:

1. 以拥有 DBA 权限的身份登录达梦数据库。

2. 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。

代码语言:javascript
复制
CREATE USER username IDENTIFIED BY "password" DEFAULT TABLESPACE table_space_name;
  • username:用户名
  • password:密码
  • table_space_name:表空间名称

3. 为刚创建的账号授予权限,也可以基于业务需求自定义权限控制。

代码语言:javascript
复制
-- 替换下述命令中的 username 为真实的用户名
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. 单击连接测试,测试通过后单击保存

*提示:如提示连接测试失败,请根据页面提示进行修复。

③ 创建 Dameng 的连接

1. 参照 SQL Server 连接创建流程,完成 DM 连接配置信息填写,添加数据目标:

2. 测试 DM 的连接:

④ 创建数据复制/开发任务

1. 左侧导航栏点击数据复制,并点击右侧创建:

2. 进入 DAG 页面,构建数据复制任务,通过拖拉拽的方式添加源与目标节点,并连接源与目标:

3. 单击源与目标节点,即可按需对二者进行设置:

4. 保存任务

⑤ 任务启动与监控

1. 启动任务,任务全量同步正常运行:

2. 增量同步开启

以上,便是借助 TapData 快速实现数据库 SQL Server 到 Dameng 的全、增量同步的模拟教程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tapdata 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档