
Description
Every store runs its own local database while headquarters runs the central one; when the link drops, the stores keep taking orders, and when it comes back the data has to merge itself. Writing that sync yourself is fine until conflict handling and resumable transfer arrive: whose edit wins, how to resume a half-finished batch, what happens when the schema changes. SymmetricDS exists for exactly this class of problem — it captures changes with database triggers and pushes the deltas to other nodes over HTTP according to configured routing rules, resuming after an interruption.
It is not tied to one engine, and the two ends need not match: Oracle, MySQL, PostgreSQL, SQL Server, MariaDB, DB2 and SQLite can replicate between each other, which suits head office to branch, cloud to edge, and migrations between heterogeneous systems. Multi-master (both sides writable with conflict rules), master-slave and multi-tier distribution topologies are all configurable, one-way or two-way as you define it.
The open-source edition is GPL, written in Java, and runs as a standalone service or embedded in your own application; a commercial Pro edition adds a management GUI and support.
Trigger-based change capture: triggers on the source tables record inserts, updates and deletes, so what travels is the delta rather than a full table scan — far lighter on the production database than periodic whole-table comparison.
Heterogeneous replication: Oracle, MySQL, PostgreSQL, SQL Server, MariaDB, DB2 and SQLite are supported and the endpoints do not have to match, which is what makes migrations and old-and-new parallel running practical.
Multiple topologies: master-slave, multi-master and multi-tier distribution, with nodes organized into groups and routing rules deciding which data reaches which nodes.
Conflict resolution: for bidirectional sync, competing edits to the same row resolve by newest timestamp, node precedence or manual intervention, with the policy in configuration rather than scattered through scripts.
Resumable transfer: transport runs over HTTP(S) and picks up where it left off after a network drop, so unreliable branch connections do not cost data.
Filtering and transformation: data can be filtered by row and by column and transformed in flight, so a branch receives only its own slice rather than the whole database.
Initial load: a new node can take a full initial load and then switch to incremental, instead of a manual export, import and reconciliation.
Two deployment shapes: run it as a standalone service or embed it as a Java library, with a web interface for node status and sync batches.
Open source plus commercial: the GPL edition is free to use, while the commercial Pro edition adds a graphical management console, monitoring and vendor support.
It is not tied to one engine, and the two ends need not match: Oracle, MySQL, PostgreSQL, SQL Server, MariaDB, DB2 and SQLite can replicate between each other, which suits head office to branch, cloud to edge, and migrations between heterogeneous systems. Multi-master (both sides writable with conflict rules), master-slave and multi-tier distribution topologies are all configurable, one-way or two-way as you define it.
The open-source edition is GPL, written in Java, and runs as a standalone service or embedded in your own application; a commercial Pro edition adds a management GUI and support.
Features
Trigger-based change capture: triggers on the source tables record inserts, updates and deletes, so what travels is the delta rather than a full table scan — far lighter on the production database than periodic whole-table comparison.
Heterogeneous replication: Oracle, MySQL, PostgreSQL, SQL Server, MariaDB, DB2 and SQLite are supported and the endpoints do not have to match, which is what makes migrations and old-and-new parallel running practical.
Multiple topologies: master-slave, multi-master and multi-tier distribution, with nodes organized into groups and routing rules deciding which data reaches which nodes.
Conflict resolution: for bidirectional sync, competing edits to the same row resolve by newest timestamp, node precedence or manual intervention, with the policy in configuration rather than scattered through scripts.
Resumable transfer: transport runs over HTTP(S) and picks up where it left off after a network drop, so unreliable branch connections do not cost data.
Filtering and transformation: data can be filtered by row and by column and transformed in flight, so a branch receives only its own slice rather than the whole database.
Initial load: a new node can take a full initial load and then switch to incremental, instead of a manual export, import and reconciliation.
Two deployment shapes: run it as a standalone service or embed it as a Java library, with a web interface for node status and sync batches.
Open source plus commercial: the GPL edition is free to use, while the commercial Pro edition adds a graphical management console, monitoring and vendor support.
