AWS DMS 不支持 RDS SQL Server 的 CDC/更改跟踪。

Posted

技术标签:

【中文标题】AWS DMS 不支持 RDS SQL Server 的 CDC/更改跟踪。【英文标题】:AWS DMS does not support CDC/Change tracking for RDS SQL Server. 【发布时间】:2016-09-27 16:46:09 【问题描述】:

AWS DMS(数据库迁移服务)似乎不支持 RDS SQL Server 的 CDC(更改跟踪)。我正在尝试创建 RDS SQL Server 只读副本以卸载主副本以进行报告。还需要一种解决方案来持续跨区域从美国东海岸到西海岸跨区域复制 RDS SQL Server。

任何变通方法或替代解决方案?

【问题讨论】:

CDC 与更改跟踪不同。 msdn.microsoft.com/en-us/library/bb933994(v=sql.110).aspx CDC 是“变更数据捕获”,您是对的,它在 RDS 上不受支持 docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…“Amazon RDS 目前不支持以下 SQL Server 功能...变更数据捕获 (CDC) - 考虑使用变更跟踪作为 CDC 的替代品。”我正在研究变更跟踪,但不确定这是否适用于 DMS。我认为这将是相当手动的设置,但对于暂存数据的 ETL 来说可能是一个良好的开端。 【参考方案1】:

作为一种传统方法,SQL CDC 不起作用,因为它需要 RDS 中具有 sysadmin privs 的用户,这是不可能的。

因此,Amazon 提供了一种解决方法来完成此操作。按照下面的操作并使用拥有 db_owner 的用户。 1. --为RDS数据库实例启用CDC

exec msdb.dbo.rds_cdc_enable_db '<database name>'

2.--开始跟踪表格

use <dbname_where_cdc_enabled>
exec sys.sp_cdc_enable_table   
@source_schema           = N'<source_schema>'
,  @source_name          = N'<source_name>'
,  @role_name            = N'<role name>'
,  @capture_instance     = '<capture_instance>'

    --查看CDC配置

    执行 sys.sp_cdc_help_change_data_capture

这应该可以完成工作。如需进一步说明,请点击链接。 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.CommonDBATasks.CDC.html

【讨论】:

【参考方案2】:

任何变通方法或替代解决方案?

您可以创建 RDS SQL Server 只读副本以卸载主要用于报告的任务,以及使用 AWS 上提供的 CloudBasic 的 RDS SQL Server HA/DR 工具从美国东海岸到西海岸持续跨区域复制 RDS SQL Server市场:https://aws.amazon.com/marketplace/pp/B00OU0PE5M

支持所有 SQL Server 版本,包括 Web 版。

在与您的 RDS SQL Server 源实例相同的 AWS VPC 中启动它。在新建复制设置部分,确保选择 SQL Server 到 SQL Server 复制(因为该工具还将数据从 SQL Server 流式传输到 Redshift 和 S3 数据湖)。

【讨论】:

以上是关于AWS DMS 不支持 RDS SQL Server 的 CDC/更改跟踪。的主要内容,如果未能解决你的问题,请参考以下文章

AWS DMS - 如何将 RDS 表数据写入单个 S3 目标文件?

AWS DMS - Oracle 到 PG RDS 完全加载操作错误 - 无法从 csv 文件加载数据

AWS DMS Redshift 作为目标

AWS DMS:复制任务已停止。停止原因 FULL_LOAD_ONLY_FINISHED

AWS DMS 任务在 CDC 模式下一段时间后失败

在 RDS 中访问 MySQL 或 MS SQL 时的 AWS Lambda node.js ETIMEDOUT