我们有 2 个具有一些镜像数据库的 SQL 2012 SP2 Enterprise 服务器。其中一个数据库还在许多表上启用了 CDC,以便我们可以在表发生更改时运行一些业务逻辑。
昨天我们对镜像服务器做了一些维护(主服务器暴露在外)。几个小时后,我们重新启用了镜像,它按预期同步了。
我们发现,我们通常接近实时处理的 CDC 数据直到镜像恢复后才被收集。
其中有 2 个问题:
- 当你配置镜像的时候,CDC的数据是不是只有在镜像同步的时候才会收集?
- 有没有办法在镜像暂停时运行 CDC 捕获?
我们有 2 个具有一些镜像数据库的 SQL 2012 SP2 Enterprise 服务器。其中一个数据库还在许多表上启用了 CDC,以便我们可以在表发生更改时运行一些业务逻辑。
昨天我们对镜像服务器做了一些维护(主服务器暴露在外)。几个小时后,我们重新启用了镜像,它按预期同步了。
我们发现,我们通常接近实时处理的 CDC 数据直到镜像恢复后才被收集。
其中有 2 个问题:
CDC 使用日志读取器,与复制相同。当使用镜像或可用性组时,默认情况下,日志读取器不会处理尚未在所有镜像/可用性组辅助副本上加固的日志记录。
这可以通过跟踪标志 1448 进行更改,这使复制日志读取器能够向前移动,即使异步辅助副本尚未确认接收到更改也是如此。即使启用了此跟踪标志,日志读取器也始终等待同步辅助副本。
参考:
https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/replicate-track-change-data-capture-always-on-availability#CDC
https://support.microsoft.com/en-us/help/937041/fix-changes-in-the-publisher-database-are-not-replicated-to-the-subscr