问题标签 [change-data-capture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 更改数据捕获 (CDC) 清理作业一次仅删除几条记录
我是 SQL Server 的初学者。对于一个项目,我需要打开 CDC。我将 cdc 数据复制到另一个(存档)数据库,之后可以立即清理 CDC 表。所以保留时间不需要很长,我只是把它放在 1 分钟,当清理作业运行时(在保留时间已经完成之后),它似乎只删除了几条记录(最旧的记录)。为什么不删除所有内容?有时它根本不会删除任何东西。运行该作业几次后,其他记录将被删除。我觉得这很奇怪,因为保留时间已经过去了。
我将保留时间设置为 1 分钟(我实际上想要 0,但这是不可能的)并且没有更改阈值(= 5000)。我禁用了计划,因为我希望在将 CDC 记录复制到我的存档数据库后立即运行清理作业,而不是在特定时间运行。
我对这个想法的逻辑是,例如下午会有更新。将 CDC 记录复制到存档数据库的任务应在凌晨 2:00 运行,在此任务之后将调用清理作业。因此,由于最短保留时间,清理作业应删除所有 CDC 记录。保留时间到底过了?
我只是想看看当我在工作中再次设置时间表时发生了什么,比如 CDC 的一般用途。时间过去后,我检查了 CDC 表,结果发现它也只删除了最旧的记录。那么我做错了什么?
我做了一个解决方法,我做了一个新工作,任务是删除 CDC 表中的所有记录(并禁用整个默认的 CDC 清理工作)。这会更好,因为它可以删除所有内容,但这让我很困扰,因为我想使用原始的清理工作,并且我认为它应该能够以我想要的方式工作。
谢谢,
金
sql - 使用 CDC 查找更新的列列表和数据
我正在创建一个设置来使用 CDC 维护一个包含历史数据的表。下面是我写的脚本:
上面的脚本将返回数据发生变化的列的值。我正在寻找以下输出,即字段名称列将包含更新数据的列列表,值列将包含前一个值和新值。CreatedDate 值将成为更新前行的 StartDate,ModifiedDate 将成为更新前行的 EndDate 和更新后行的 StartDate。
cassandra - 如何在 Cassandra 中实施 CDC?
我正在尝试在 Cassandra 中使用 CDC 尝试使用此链接中提到的增量备份,但 SSTables 的格式对于复合键非常奇怪。有没有办法在 cassandra 中实现 CDC。任何指针都会非常有用。
mysql - 使用 Apache Kafka 对 MYSQL 更改数据捕获进行并行处理(多个消费者)
我一直在研究如何实现一个系统来捕获 MySQL 数据库中的变化。我看过的一个例子是 LinkedIn 使用 DataBus ( http://www.slideshare.net/SunilNagaraj1/databus-eventbrite2013 ),以及不同地方的其他人使用 Apache Kafka。
在上述所有项目中,似乎都暗示在从 MySQL binlog 接收数据时,您有多个消费者并行工作。消费者应该在另一个 MySQL 数据库上重放他们收到的所有那些 INSERT/UPDATE/DELETE 命令,该数据库应该是原始源数据库的镜像。
但这是否意味着这些 INSERT/UPDATE/DELETE 命令在目标镜像 MySQL 数据库上执行时可能会被乱序解释?
例如,如果在 binlog 中,您有这两个按所示顺序的语句:
然后第一个语句到Consumer 1,然后第二个到Consumer 2,但是Consumer 2先执行,然后是Consumer 1,那会不会导致数据丢失?
因此,在使用 Apache Kafka 的情况下,目前似乎唯一的解决方法是拥有一个主题、一个分区和一个消费者(或消费者组)。
我想知道每个人对此有何看法。我知道这是在 MySQL binlog 中使用基于语句的更改。如果我们改用基于行的更改会有所不同吗?
谢谢是
h2 - 在 Talend MDM Server 上应用 SCD
我正在使用 Talend Open Studio for MDM,并且我需要对客户记录进行版本控制。
使用 Oracle 数据库时,我可以使用 tOracleSCD 来捕获更改。同样,对于 MySQL,我可以使用 tMysqlSCD。
但在 Talend Open Studio for MDM 中,唯一支持的数据库是 H2,因此我将所有主记录存储在 H2 数据库中。
在这种情况下,由于 Talend for H2 数据库中没有可用的组件,我该如何实现版本控制?
java - 开发用于确定数据可用性的算法
我们正在使用变更数据捕获工具将源数据近乎实时地迁移到目标数据库。挑战在于尽可能准确地识别源和目标之间存在的数据迁移延迟。该工具的延迟报告功能并不令我们满意,因此我的任务是开发一个可以更好地监控这个特定指标的流程。
我们需要知道这一点的主要原因有两个:
1:为我们的用户提供准确的数据可用性矩阵,以支持报告调度。例如,考虑到我们希望尽快获得此信息,在为前一天安排每日对账报告之前,应该在午夜之后经过多长时间?
2:识别数据镜像过程运行速度比平时慢(或什至停止)的情况。这将触发一封电子邮件给我们的支持团队进行调查。
我正在寻找一些关于如何最好地完成这个看似简单的任务的一般想法
cdc - 使用 CDC 捕获数据
为了捕获已删除的用户名,我在 CDC 表中添加了一个新列(例如:- cdc.dbo_testCDC_CT)来设置记录的 SQL 用户名。IE; ALTER TABLE cdc.dbo_testCDC_CT 添加用户名 VARCHAR(20) DEFAULT(SUSER_SNAME()))。该列中的值始终为“sa”,但我被记录为 Windows 身份验证。为什么会这样?
sql-server-2008-r2 - SQL Server 2008 R2 中的变更数据捕获问题
在为我正在处理的数据库激活 CDC 后,捕获作业无法实际捕获任何内容,我收到以下错误:
SQL Server 是 VMWare 10.x VM 上的 SQL Server 2008 R2 SP3,分配了 8GB RAM。
我所做的步骤基本上是为 cdc 启用数据库,然后为它启用一个表,在该表上创建一个修改,并注意到捕获作业没有完成它的工作:
任何建议将不胜感激!
更新: 问题终于没有解决,不得不重新安装 MSSQL 2008 R2,恢复数据库备份,启用 CDC 并像魅力一样工作,谁知道之前发生了什么。
- 铝
sql - 如何知道 CDC 中哪一列的值发生了变化
我在 sql 2012 中使用 CDC 功能,假设我有一个表名,Employee
并且其中也有一些记录。假设某人Last Name
在员工表中发生了变化。然后在CDC
表中有 2 个条目,在更改前和更改后都有记录。我想知道哪一列被改变了。
我正在关注本教程
sql - 从 cdc 表中删除数据
我在 sql 2008 中使用 CDC,我希望每当执行清理作业时,它只会从比当前日期大一个月的 cdc 表中删除数据。这可能吗 ?