SymmetricDS Pro 3.6 User Guide

Authors

Eric Long , Chris Henson , Mark Hanes , Greg Wilmer

v3.6

Permission to use, copy, modify, and distribute the SymmetricDS User Guide Version 3.6 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. Concepts
1.2.1. Nodes
1.2.2. Change Data Capture
1.2.3. Change Data Delivery
1.2.4. Data Channels
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.3.8. File Synchronization
1.4. Why Database Triggers?
2. Setup
2.1. Engine Files
3. Configuration
3.1. Groups
3.2. Group Links
3.3. Channels
3.4. Table Triggers
3.4.1. Linking Triggers
3.4.1.1. Enable / disable trigger router
3.4.1.2. Enabling "Ping Back"
3.4.2. Large Objects
3.4.3. External Select
3.4.4. Dead Triggers
3.4.5. Changing Triggers
3.5. File Triggers / File Synchronization
3.5.1. Overview
3.5.2. Operation
3.5.3. File Sync Bean Shell Scripts
3.5.4. File Sync Examples
3.5.4.1. Sync Text Files From Server To Client
3.5.4.2. Route changes to a specific node based on a directory name
3.6. Routers
3.6.1. Default Router
3.6.2. Column Match Router
3.6.3. Lookup Table Router
3.6.4. Subselect Router
3.6.5. Scripted Router
3.6.6. Audit Table Router
3.6.7. Utilizing External Select when Routing
3.7. Conflicts
3.7.1. Conflict Detection and Resolution
3.8. Transforms
3.8.1. Transform Configuration Tables
3.8.2. Transformation Types
3.9. Load Filters
3.9.1. Load Filter Configuration Table
3.9.2. Variables available to Data Load Filters
3.9.3. Data Load Filter Example
3.10. Grouplets
3.10.1. Grouplet Example
3.11. Parameters
3.12. Export
3.13. Import
3.14. Uninstall
4. Manage
4.1. Identifying Nodes
4.2. Creating Nodes
4.2.1. Registration
4.2.2. Initial Loads
4.2.2.1. Target table prep for initial load
4.2.2.2. Loading subsets of data
4.2.2.3. Splitting an Initial Load for a Table Across Multiple Batches
4.2.2.4. Reverse Initial Loads
4.2.3. Data Reloads
4.3. Jobs
4.3.1. Route Job
4.3.1.1. Data Gaps
4.3.2. Push and Pull Jobs for Database changes
4.3.3. File Sync Push and Pull Jobs
4.3.4. File System Tracker Job
4.3.5. Sync Triggers Job
4.3.6. Purge Jobs
4.4. Outgoing Batches
4.4.1. Analyzing the Issue
4.4.2. Resolving the Issue
4.5. Incoming Batches
4.5.1. Analyzing the Issue
4.5.2. Resolving the Issue
4.6. Staging Area
4.7. Logging
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. Deployment Options
5.2.1. Web Archive (WAR)
5.2.2. Embedded
5.2.3. Standalone
5.3. Running SymmetricDS as a Service
5.3.1. Running as a Windows Service
5.3.2. Running as a Linux/Unix daemon
5.4. Clustering
5.5. Encrypted Passwords
5.6. Secure Transport
5.6.1. Sym Launcher
5.6.2. Tomcat
5.6.3. Keystores
5.6.4. Generating Keys
5.7. Basic Authentication
5.8. Data Loaders
5.8.1. Bulk Data Loaders
5.8.2. MongoDB
5.9. Java Management Extensions
5.10. JMS Publishing
6. Developer
6.1. Extension Points
6.1.1. IParameterFilter
6.1.2. IDatabaseWriterFilter
6.1.3. IDatabaseWriterErrorHandler
6.1.4. IDataLoaderFactory
6.1.5. IAcknowledgeEventListener
6.1.6. IReloadListener
6.1.7. ISyncUrlExtension
6.1.8. IColumnTransform
6.1.9. INodeIdCreator
6.1.10. ITriggerCreationListener
6.1.11. IBatchAlgorithm
6.1.12. IDataRouter
6.1.13. IHeartbeatListener
6.1.14. IOfflineClientListener
6.1.15. IOfflineServerListener
6.1.16. INodePasswordFilter
6.2. Embedding in Android
A. Data Model
A.1. CHANNEL
A.2. CONFLICT
A.3. DATA
A.4. DATA_EVENT
A.5. DATA_GAP
A.6. EXTRACT_REQUEST
A.7. FILE_INCOMING
A.8. FILE_SNAPSHOT
A.9. FILE_TRIGGER
A.10. FILE_TRIGGER_ROUTER
A.11. GROUPLET
A.12. GROUPLET_LINK
A.13. INCOMING_BATCH
A.14. INCOMING_ERROR
A.15. LOAD_FILTER
A.16. LOCK
A.17. NODE
A.18. NODE_COMMUNICATION
A.19. NODE_CHANNEL_CTL
A.20. NODE_GROUP
A.21. NODE_GROUP_CHANNEL_WND
A.22. NODE_GROUP_LINK
A.23. NODE_HOST
A.24. NODE_HOST_CHANNEL_STATS
A.25. NODE_HOST_JOB_STATS
A.26. NODE_HOST_STATS
A.27. NODE_IDENTITY
A.28. NODE_SECURITY
A.29. OUTGOING_BATCH
A.30. PARAMETER
A.31. REGISTRATION_REDIRECT
A.32. REGISTRATION_REQUEST
A.33. ROUTER
A.34. SEQUENCE
A.35. TABLE_RELOAD_REQUEST
A.36. TRANSFORM_TABLE
A.37. TRANSFORM_COLUMN
A.38. TRIGGER
A.39. TRIGGER_HIST
A.40. TRIGGER_ROUTER
A.41. TRIGGER_ROUTER_GROUPLET
B. Parameters
B.1. Startup Parameters
B.2. Runtime Parameters
B.3. Server Configuration
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
C.15. Sybase Active Server Enterprise
C.16. Sybase SQL Anywhere
D. Data Format
E. Upgrading from 2.x
F. Version Numbering