sql server ?
oracle ?
....
oracle
@空杯椰子: sql server 中有发布-订阅功能,oracle 不了解,应该也有,比如高级复制。另外,你也可以使用 Microsoft Sync Framework :http://msdn.microsoft.com/en-us/sync/bb736753.aspx,http://code.msdn.microsoft.com/Database-Sync-Oracle-and-037fb083。
1.复制分发
2.建一个 任务,每隔几秒钟去同步
任务还是不是实时,表数据量比较大,job执行过短也容易出现宕机。
@空杯椰子: 无绝对的实时,一般的操作系统也不是实时操作系统
看到你在为 38 个触发器头疼,这个场景确实挺复杂的。用触发器做跨数据库同步,维护成本高,性能也容易出问题,特别是数据量大的时候。
我之前也遇到过类似的实时同步需求,后来用了 SeaTunnel 的 CDC 功能,感觉比触发器方案要简单很多。
SeaTunnel CDC 在实时同步场景的优势:
无需触发器:通过读取数据库的事务日志来捕获数据变更,不需要在业务表上加触发器,对业务系统的影响很小。
配置简单:只需要配置 source(源数据库)和 sink(目标数据库),定义好同步规则就能运行,不需要写复杂的触发器逻辑。
支持多种数据库:MySQL、Oracle、SQL Server、PostgreSQL 等主流数据库都支持,可以灵活选择源端和目标端。
实时性好:基于日志解析,数据变更几乎可以实时同步到目标端,延迟很低。
容错性强:支持断点续传,任务中断后可以从上次的位置继续同步,不会丢失数据。
可扩展:基于分布式引擎,数据量大的时候可以水平扩展,性能表现不错。
使用场景举例:
对于你这种 38 个表的同步需求,用 SeaTunnel 可能只需要配置一个任务就能搞定,比维护 38 个触发器要简单很多。
官网地址:https://seatunnel.apache.org 上面有 CDC 相关的文档和配置示例,可以参考一下。
当然,上面提到的 Microsoft Sync Framework 也是可行的,但如果你需要跨多种数据库或者希望方案更轻量一些,SeaTunnel 值得考虑。