我们正在逐步淘汰旧系统并迁移到新系统。上一次我们淘汰旧系统时,我们并行运行两个系统并在两者之间集成数据,直到我们领域中的所有内容都完全迁移出去。在此过程中,我能够在我们的旧系统和我们的新系统之间构建集成,该系统利用 SQL Server 的变更数据捕获来跟踪变更并逐步集成这些变更。
对于下一次迁移,我们将逐步淘汰的旧系统基于 MySQL v5.1.69 而不是 SQL Server。我不熟悉 MySQL,我想知道是否有任何类似于 CDC 的技术可以在我们当前版本的 MySQL 或值得迁移的新版本上利用?
LinkedIn 已开源其支持 MySQL 的 CDC 工具Databus。您可以在项目的 wiki 上阅读有关如何支持 MySQL 的信息:Databus for MySQL并在此处阅读博客声明:开源数据总线:LinkedIn 的低延迟更改数据捕获系统
但是,您应该注意可能存在一些限制:
另一个开源 CDC 工具是 FlexCDC(用 PHP 实现),它是作为FlexViews项目的一部分编写的。
最近我有一个学术项目,我需要将 CDC 与 MySQL 一起使用。市场上有一些可用的工具。我能够使用 Maxwell CDC 创建 POC。
Maxwell 的一个独特功能是它也可以解析 DDL 语句。这是 Maxwell http://maxwells-daemon.io页面的链接
以下是所有 CDC 的编译列表: https ://github.com/wushujames/mysql-cdc-projects/wiki
我建议您看看Debezium一个开源 CDC 平台,除其他外,它还支持 MySQL。
您可以使用 Debezium 将更改流式传输到 Apache Kafka,但通过其嵌入式模式,您还可以将 Debezium 连接器用作 Java 应用程序中的库,并轻松地将数据更改传播到其他流式 API,例如 Kinesis 等。
披露:我是 Debezium 项目负责人。
您可以尝试根据触发器(插入、删除、更新后)来酿造一些东西。我认为这取决于目标系统。疾控中心是如何工作的?它是否将所有数据和结构传播到 MySQL 数据库?
您可以使用触发器来填充一种工作队列,这样如果表中的条目 EntryARownrX
A
被更改,您可以将该信息(表 A、行 nr X、更新/插入/删除)填充到队列表中,然后对其进行转换更改为您的新系统(直接从 A 读取数据的实际值以进行插入或更新)。如果您不介意使用数据库代理,请查看MariaDB MaxScale 的 CDC 协议,该协议利用MariaDB MaxScale AVRO 路由器将二进制日志事件转换为 AVRO 文件。然后,CDC 协议使注册客户端可以使用更改数据捕获事件。(MaxScale 应该与 MySQL 兼容,或者至少与旧的 MySQL 版本兼容。)