SymmetricDS User Guide

Authors

Eric Long , Chris Henson , Mark Hanes , Greg Wilmer

v3.4

Permission to use, copy, modify, and distribute the SymmetricDS User Guide Version 3.4 for any purpose and without fee is hereby granted in perpetuity, provided that the above copyright notice and this paragraph appear in all copies.


Table of Contents

Preface
1. Introduction
1.1. System Requirements
1.2. Overview
1.2.1. A Node is Born
1.2.2. Capturing Changes
1.2.3. Change Delivery
1.2.4. Channeling Data
1.3. Features
1.3.1. Two-Way Table Synchronization
1.3.2. Data Channels
1.3.3. Change Notification
1.3.4. HTTP(S) Transport
1.3.5. Data Filtering and Rerouting
1.3.6. Transaction Awareness
1.3.7. Remote Management
1.4. Origins
1.5. Why Database Triggers?
1.6. Support
1.7. What's New in SymmetricDS 3
2. Quick Start Tutorial
2.1. Installing SymmetricDS
2.2. Creating and Populating Your Databases
2.3. Starting SymmetricDS
2.4. Registering a Node
2.5. Sending an Initial Load
2.6. Pulling Data
2.7. Pushing Data
2.8. Verifying Outgoing Batches
2.9. Verifying Incoming Batches
2.10. Multi-Homing
3. Planning
3.1. Identifying Nodes
3.2. Organizing Nodes
3.3. Defining Node Groups
3.4. Linking Nodes
3.5. Choosing Data Channels
3.6. Defining Data Changes to be Captured and Routed
3.6.1. Defining Triggers
3.6.2. Defining Routers
3.6.3. Mapping Triggers to Routers
3.6.3.1. Planning Initial Loads
3.6.3.2. Circular References and "Ping Back"
3.6.4. Planning for Registering Nodes
3.7. Planning Data Transformations
3.8. Planning Conflict Detection and Resolution
4. Configuration
4.1. Node Properties
4.2. Node
4.3. Node Group
4.4. Node Group Link
4.5. Channel
4.6. Triggers, Routers, and Trigger / Routers Mappings
4.6.1. Trigger
4.6.1.1. Large Objects
4.6.1.2. External Select
4.6.2. Router
4.6.2.1. Default Router
4.6.2.2. Column Match Router
4.6.2.3. Lookup Table Router
4.6.2.4. Subselect Router
4.6.2.5. Scripted Router
4.6.2.6. Audit Table Router
4.6.2.7. Utilizing External Select when Routing
4.6.3. Trigger / Router Mappings
4.6.3.1. Enable / disable trigger router
4.6.3.2. Initial Loads
4.6.3.3. Dead Triggers
4.6.3.4. Enabling "Ping Back"
4.7. Opening Registration
4.8. Transforming Data
4.8.1. Transform Configuration Tables
4.8.2. Transformation Types
4.9. Data Load Filters
4.9.1. Load Filter Configuration Table
4.9.2. Variables available to Data Load Filters
4.9.3. Data Load Filter Example
4.10. Conflict Detection and Resolution
4.11. Jobs
4.11.1. Route Job
4.11.1.1. Data Gaps
4.11.2. Push and Pull Jobs
4.11.3. Sync Triggers Job
4.11.4. Purge Jobs
5. Advanced Topics
5.1. Advanced Synchronization
5.1.1. Bi-Directional Synchronization
5.1.2. Multi-Tiered Synchronization
5.1.2.1. Registration Redirect
5.2. JMS Publishing
5.3. Deployment Options
5.3.1. Web Archive (WAR)
5.3.2. Embedded
5.4. Standalone
5.5. Running SymmetricDS as a Service
5.5.1. Running as a Windows Service
5.5.2. Running as a *nix Service
5.6. Clustering
5.7. Encrypted Passwords
5.8. Secure Transport
5.8.1. Sym Launcher
5.8.2. Tomcat
5.8.3. Keystores
5.8.4. Generating Keys
5.9. Basic Authentication
5.10. Extension Points
5.10.1. IParameterFilter
5.10.2. IDatabaseWriterFilter
5.10.3. IDatabaseWriterErrorHandler
5.10.4. IDataLoaderFactory
5.10.5. IAcknowledgeEventListener
5.10.6. IReloadListener
5.10.7. ISyncUrlExtension
5.10.8. IColumnTransform
5.10.9. INodeIdCreator
5.10.10. ITriggerCreationListener
5.10.11. IBatchAlgorithm
5.10.12. IDataRouter
5.10.13. IHeartbeatListener
5.10.14. IOfflineClientListener
5.10.15. IOfflineServerListener
5.10.16. INodePasswordFilter
6. Administration
6.1. Solving Synchronization Issues
6.1.1. Analyzing the Issue - Outgoing Batches
6.1.2. Analyzing the Issue - Incoming Batches
6.1.3. Resolving the Issue - Outgoing Batches
6.1.4. Resolving the Issue - Incoming Batches
6.2. Changing Triggers
6.3. Maintaining multiple synchronization configurations through Grouplets
6.3.1. Grouplet Example
6.4. Re-synchronizing Data
6.5. Changing Configuration
6.6. Logging Configuration
6.7. Java Management Extensions
6.8. Temporary Files
A. Data Model
A.1. NODE
A.2. NODE_SECURITY
A.3. NODE_IDENTITY
A.4. NODE_GROUP
A.5. NODE_GROUP_LINK
A.6. NODE_HOST
A.7. NODE_HOST_CHANNEL_STATS
A.8. NODE_HOST_STATS
A.9. NODE_HOST_JOB_STATS
A.10. CHANNEL
A.11. NODE_COMMUNICATION
A.12. NODE_CHANNEL_CTL
A.13. NODE_GROUP_CHANNEL_WINDOW
A.14. TRIGGER
A.15. ROUTER
A.16. TRIGGER_ROUTER
A.17. PARAMETER
A.18. REGISTRATION_REDIRECT
A.19. REGISTRATION_REQUEST
A.20. TRIGGER_HIST
A.21. DATA
A.22. DATA_GAP
A.23. DATA_EVENT
A.24. OUTGOING_BATCH
A.25. INCOMING_BATCH
A.26. LOCK
A.27. TRANSFORM_TABLE
A.28. TRANSFORM_COLUMN
A.29. CONFLICT
A.30. INCOMING_ERROR
A.31. SEQUENCE
A.32. LOAD_FILTER
A.33. TABLE_RELOAD_REQUEST
A.34. GROUPLET
A.35. GROUPLET_LINK
A.36. TRIGGER_ROUTER_GROUPLET
B. Parameters
B.1. Startup Parameters
B.2. Runtime Parameters
C. Database Notes
C.1. Oracle
C.2. MySQL
C.3. MariaDB
C.4. PostgreSQL
C.5. Greenplum
C.6. MS SQL Server
C.7. HSQLDB
C.8. H2
C.9. Apache Derby
C.10. IBM DB2
C.11. Firebird
C.12. Informix
C.13. Interbase
C.14. SQLite
D. Data Format
E. Upgrading from 2.x
F. Version Numbering