SymmetricDS

SymmetricDS

跨库跨地点的数据库复制同步

开发官网

应用介绍

连锁门店每家一套本地库,总部一套中心库,网断了门店照常开单,网通了数据要自己合回去——这种活儿自己写同步脚本,写到冲突处理和断点续传那一步就开始头大:谁的改动算数、断在一半怎么接着传、表结构变了怎么办。SymmetricDS 专门解决这一类:用数据库触发器捕获变更,按配置好的路由规则把数据增量推到其他节点,走 HTTP 传输,断了会接着传。

它不挑数据库,也不要求两端是同一种:Oracle、MySQL、PostgreSQL、SQL Server、MariaDB、DB2、SQLite 之间可以互相同步,常见于总部与分支、云端与边缘、异构系统之间迁移这几类场景。支持多主(两边都能写、按规则解决冲突)、主从、多级分发等拓扑,单向还是双向由配置决定,不是只有一种模式。

开源版按 GPL 发布,Java 实现,能作为独立服务跑,也能嵌进自己的应用里;另有商业的 Pro 版提供图形管理界面和技术支持。

软件功能



触发器捕获变更:在源表上装触发器记录增删改,同步的是增量而不是整表扫描,对生产库的压力和延迟都比定时全量比对小得多。

异构数据库互通:Oracle、MySQL、PostgreSQL、SQL Server、MariaDB、DB2、SQLite 等主流库都支持,两端不必是同一种,做系统迁移或者新旧并行时很有用。

多种拓扑:主从、多主、多级分发都能配,节点按组划分、按路由规则决定哪些数据流向哪些节点,不是只能两两对拷。

冲突解决策略:双向同步时两边可能改同一行,可以按时间戳较新者胜、按节点优先级、或者手动介入等策略处理,规则写在配置里而不是散在脚本中。

断网续传:走 HTTP(S) 传输,网络中断后恢复会从断点继续,门店这类网络不稳的场景不会因为掉线丢数据。

数据过滤与转换:可以按行、按列筛选要同步的数据,也能在传输过程中做字段转换,分支只拿自己那部分数据而不是整库。

初始装载:新节点接入时能做一次全量初始装载再转增量,不用手工导出导入再对齐。

两种部署形态:既可以作为独立服务运行,也能作为 Java 库嵌入自己的应用,Web 管理端可查看节点状态和同步批次。

开源与商业版:开源版 GPL 协议免费使用,商业 Pro 版另外提供图形化管理界面、监控和官方支持。

应用截图