Data replication
NineData data replication supports full data synchronization and incremental data synchronization between two data sources.
Function Description
NineData supports data replication between various data sources, and the specific support for each function is detailed in the table below.
- One-Way Replication
- Bidirectional Replication
| Source Database | Target Database | Data Comp. | Schema Comp. | Incre Comp. |
|---|---|---|---|---|
| MySQL | MySQL | ✔️ | ✔️ | ✔️ |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| SQL Server | ✔️ | - | - | |
| TiDB | ✔️ | - | - | |
| KingBase | ✔️ | - | ✔️ | |
| GaussDB | ✔️ | - | - | |
| DWS | ✔️ | - | - | |
| ClickHouse | ✔️ | - | - | |
| ADB PostgreSQL | - | - | - | |
| Greenplum | ✔️ | - | - | |
| Redshift | - | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| SingleStore | ✔️ | - | - | |
| DB2 | ✔️ | - | - | |
| Elasticsearch | - | - | - | |
| Kafka | - | - | - | |
| Hive | ✔️ | - | - | |
| Database Group | ✔️ | - | - | |
| DataHub | ✔️ | - | - | |
| polardbx | ✔️ | ✔️ | - | |
| Oracle | Oracle | ✔️ | ✔️ | - |
| MySQL | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| TiDB | ✔️ | - | - | |
| Dameng | ✔️ | - | - | |
| KingBase | ✔️ | - | ✔️ | |
| GaussDB | ✔️ | - | - | |
| DWS | ✔️ | - | - | |
| ClickHouse | ✔️ | - | - | |
| ADB PostgreSQL | ✔️ | - | - | |
| OB-Oracle | ✔️ | ✔️ | - | |
| Greenplum | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| SingleStore | ✔️ | - | - | |
| Kafka | - | - | - | |
| Hive | ✔️ | - | - | |
| DataHub | ✔️ | - | - | |
| polardboracle | ✔️ | - | - | |
| PostgreSQL | PostgreSQL | ✔️ | ✔️ | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| SQL Server | ✔️ | - | - | |
| TiDB | ✔️ | - | - | |
| GaussDB | ✔️ | - | - | |
| DWS | ✔️ | ✔️ | - | |
| ClickHouse | ✔️ | - | - | |
| ADB PostgreSQL | ✔️ | - | - | |
| Greenplum | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| SingleStore | ✔️ | - | - | |
| Sybase | ✔️ | - | - | |
| Kafka | - | - | - | |
| Hive | ✔️ | - | - | |
| SQL Server | SQL Server | ✔️ | ✔️ | - |
| MySQL | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| Kafka | - | - | - | |
| sqldatabase | ✔️ | ✔️ | - | |
| TDSQL MySQL | MySQL | ✔️ | ✔️ | - |
| Doris | ✔️ | - | - | |
| Kafka | - | - | - | |
| TiDB | TiDB | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| ClickHouse | ✔️ | - | - | |
| ADB PostgreSQL | ✔️ | - | - | |
| Greenplum | ✔️ | - | - | |
| Hive | ✔️ | - | - | |
| KingBase | KingBase | ✔️ | ✔️ | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | ✔️ | - | |
| Doris | ✔️ | - | - | |
| openGauss | GaussDB | ✔️ | - | - |
| StarRocks | ✔️ | - | - | |
| DataHub | ✔️ | - | - | |
| GaussDB | GaussDB | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| openGauss | ✔️ | - | - | |
| DWS | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| DataHub | ✔️ | - | - | |
| DWS | DWS | ✔️ | - | - |
| GaussDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| DataHub | ✔️ | - | - | |
| ClickHouse | ClickHouse | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| Greenplum | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| ADB PostgreSQL | ADB PostgreSQL | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| TiDB | ✔️ | - | - | |
| OB-MySQL | OB-MySQL | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| Kafka | - | - | - | |
| DataHub | ✔️ | - | - | |
| OB-Oracle | OB-Oracle | ✔️ | - | - |
| StarRocks | ✔️ | - | - | |
| Kafka | - | - | - | |
| DataHub | ✔️ | - | - | |
| Greenplum | Greenplum | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| TiDB | ✔️ | - | - | |
| ClickHouse | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| SingleStore | ✔️ | - | - | |
| Hive | ✔️ | - | - | |
| SelectDB | SelectDB | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| ClickHouse | ✔️ | - | - | |
| Greenplum | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| SingleStore | ✔️ | - | - | |
| StarRocks | StarRocks | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| ClickHouse | ✔️ | - | - | |
| Greenplum | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| SingleStore | ✔️ | - | - | |
| SingleStore | SingleStore | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| ClickHouse | ✔️ | - | - | |
| Greenplum | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| DB2 | DB2 | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| SQL Server | ✔️ | - | - | |
| TiDB | ✔️ | - | - | |
| KingBase | ✔️ | - | - | |
| openGauss | ✔️ | - | - | |
| GaussDB | ✔️ | - | - | |
| ClickHouse | ✔️ | - | - | |
| ADB PostgreSQL | ✔️ | - | - | |
| OB-MySQL | ✔️ | - | - | |
| Greenplum | ✔️ | - | - | |
| Redshift | ✔️ | - | - | |
| Doris | ✔️ | - | - | |
| SelectDB | ✔️ | - | - | |
| StarRocks | ✔️ | - | - | |
| Sybase | ✔️ | - | - | |
| Redis | Redis | ✔️ | - | - |
| MongoDB | MongoDB | ✔️ | ✔️ | - |
| Sybase | PostgreSQL | ✔️ | - | - |
| Kafka | Kafka | - | - | - |
| MySQL | - | - | - | |
| ClickHouse | - | - | - | |
| Hive | Hive | - | - | - |
| MySQL | ✔️ | - | - | |
| Oracle | ✔️ | - | - | |
| PostgreSQL | ✔️ | - | - | |
| TiDB | ✔️ | - | - | |
| Greenplum | ✔️ | - | - | |
| Database Group | Database Group | ✔️ | - | - |
| MySQL | ✔️ | - | - | |
| sqldatabase | sqldatabase | ✔️ | ✔️ | - |
| SQL Server | ✔️ | ✔️ | - | |
| polardbx | polardbx | ✔️ | - | - |
| Source Database | Target Database | Schema Repl. | Full Repl. | Incre Repl. |
|---|---|---|---|---|
| MySQL | MySQL | ✔️ | ✔️ | ✔️ |
| Oracle | ✔️ | ✔️ | ✔️ | |
| polardbx | - | ✔️ | ✔️ | |
| Oracle | MySQL | ✔️ | ✔️ | ✔️ |
| SQL Server | SQL Server | ✔️ | ✔️ | ✔️ |
| sqldatabase | ✔️ | ✔️ | ✔️ | |
| OB-MySQL | OB-MySQL | ✔️ | ✔️ | ✔️ |
| OB-Oracle | OB-Oracle | ✔️ | ✔️ | ✔️ |
| Redis | Redis | - | ✔️ | ✔️ |
| Sybase | PostgreSQL | - | ✔️ | ✔️ |
| sqldatabase | sqldatabase | ✔️ | ✔️ | ✔️ |
| SQL Server | ✔️ | ✔️ | ✔️ |
Typically, a complete data replication process consists of three phases:
- Structure replication: Synchronize the library table structure in the source data source to the target data source.
- Full data replication: Synchronize full data from the source data source to the target data source.
- Incremental data replication: Synchronize ongoing data changes in the source data source to the target database in real time.
After the replication is complete, user can first verify the compatibility of the data and structure in the target data source. If passed, user can switch the business to the target data source to achieve smooth migration.
The above three stages can be performed separately. For example, you can separately perform structure replication, full data replication or incremental data replication according to business needs.
You cannot perform structure replication and incremental data replication at the same time without selecting full data replication.
Prerequisite
Added source and target data sources to NineData. For how to add, see Adding Data Sources .
In scenarios that do not involve table structure replication, the target data source must contain the structure of the table to be replicated.
When MySQL is the source, Binlog must be enabled, and the related parameters of Binlog are set as follows:
binlog_format=ROWbinlog_row_image=FULL
tipIf the source data source is the standby database, in order to obtain the complete Binlog, the
log_slave_updatesparameter must be turn on.
Restrictions
- The data replication function is only for the user databases in the data source, and the system databases will not be replicated. For example:
information_schema,mysql,performance_schema,sysdatabases in MySQL type data sources will not be replicated. - The account for source data must have SELECT (for replicate database structure and full data), SHOW VIEW (for replicate views), and REPLICATION CLIENT, REPLICATION SLAVE (for replicate incremental data) privileges on the objects to be replicated. The account for target must have DML and DDL privileges.
- Before performing data synchronization, user need to evaluate the performance of the source data source and the target data source, and it is recommended to perform data synchronization during off-peak time. Otherwise, the full data initialization will occupy a certain amount of read and write resources of the source data source and the target data source, increasing database load.
- During the synchronization process, if the source data contains views, functions, stored procedures, triggers, and events, after synchronizing to the target data source, the definer of the above objects information will be modified in the target data source to the account that accesses the target data source in the current synchronization task.
- It is necessary to ensure that each table in the synchronization object has a primary key or unique constraint, and the column name is unique, otherwise the same data may be synchronized repeatedly.
- During the synchronization process, if there are triggers in the source, the system will not synchronize the triggers until the incremental synchronization ends.
Steps
NineData’s data replication product has been commercialized. You can still use 10 replication tasks for free, with the following considerations:
Among the 10 replication tasks, you can include 1 Incremental task, with a specification of Micro.
Tasks with a status of Terminated do not count towards the 10-task limit. If you have already created 10 replication tasks and want to create more, you can terminate previous replication tasks and then create new ones.
When creating replication tasks, you can only select the Spec you have purchased. Specifications that have not been purchased will be grayed out and cannot be selected. If you need to purchase additional specifications, please contact us through the customer service icon at the bottom right of the page.
Log in to the NineData Console.
Click on Replication > Data Replication in the left navigation bar.
On the Replication page, click on Create Replication in the top right corner.
On the Source & Target tab, configure according to the table below, and click Next.
Parameter Description Name Enter the name of the data synchronization task for easy search and management. Please use meaningful names. Up to 64 characters are supported. Source Data source where the synchronization object is located. Target Data source receiving the synchronized object. Type Choose what to copy to the target data source. - Schema: Only synchronize the schema of the source data source, not the data.
- Full: Synchronize all objects and data from the source data source, i.e., full data replication.
- Incremental: After full synchronization, perform incremental synchronization based on the source data source's logs. Click the
icon to uncheck certain operation types according to your needs. Once unchecked, these operations will be ignored during incremental synchronization.
Target Table Preparation - If target table already exists (Select Schema):
- Pre-Check Error and Stop Task: Stop the task when a table with the same name is detected during the precheck stage.
- Skip and Continue Task: When a table with the same name is detected during the precheck stage, display a prompt and continue the task. During structural replication, ignore this same-named table. If you are also replicating data, the data will be appended to the same-named table without overwriting existing data.
- Delete Objects and Rewrite: When a table with the same name is detected during the precheck stage, display a prompt and continue the task. During structural replication, delete the same-named table in the target database and replicate the table structure based on the source database. If you are also replicating data, the data will be written after the table structure replication is completed.
- Keep Schema and Clear Data, then Rewrite (Selectable when performing both structural and data replication): When a table with the same name is detected during the precheck stage, display a prompt and continue the task. During structural replication, retain the table structure in the target database and clear the data in the same-named table when data replication starts, then replicate from the original table.
- Target Table Exists Data (Unselected when Schema is selected):
- Pre-Check Error and Stop Task: Stop the task when data is detected in the target table during the precheck stage.
- Ignore the existing data and append : Ignore the data detected in the target table during the precheck stage and append other data.
- Clear the existing data before write: Delete the data detected in the target table during the precheck stage and rewrite.
On the Objects tab, configure the following parameters, then click Next.
Parameter Description Replication Objects Choose what to replicate. You can select All Objects to replicate all contents of the source database, or choose Customized Object, select the items to be replicated in the Source Object list, and click > to add them to the right Target Object list. Blacklist (Optional) Click Add to add a blacklist record, select the databases or objects to be added to the blacklist. These contents will not be replicated. This is used to exclude certain databases or objects in the case of full database replication for Customized Object or Full Instance. - Left dropdown: Select the name of the database to be added to the blacklist.
- Right dropdown: Select the objects in the corresponding database. You can click to select multiple objects; leave it blank to add the entire database to the blacklist.
If you need to create multiple identical replication links, you can create a configuration file and import it when creating a new task. Click Import Config at the top right corner, then click Download Template to download the configuration file template to your local machine. After editing, click Upload to upload the configuration file for batch import.
Parameter Description source_table_nameName of the source table containing the objects to be synchronized. destination_table_nameName of the target table receiving the synchronized objects. source_schema_nameName of the source schema containing the objects to be synchronized. destination_schema_nameName of the target schema receiving the synchronized objects. source_database_nameName of the source database containing the objects to be synchronized. target_database_nameName of the target database receiving the synchronized objects. column_listList of columns to be synchronized. extra_configurationAdditional configuration information can be set here: column_rules: Used to define column mapping and value rules. Field descriptions:column_name: Original column name.destination_column_name: Target column name.column_value: Value to assign, which can be an SQL function or a constant.
filter_condition: Used to specify row-level filtering conditions; only rows that meet the criteria will be copied.
tipAn example of the
extra_configurationcontent is as follows:{
"extra_config": {
"column_rules": [
{
"column_name": "created_time", // Original column name to map.
"destination_column_name": "migrated_time", // Target column name mapped to "migrated_time".
"column_value": "current_timestamp()" // Change the column value to the current timestamp.
}
],
"filter_condition": "id != 0" // Only rows where ID is not 0 will be synchronized.
}
}For a complete example of the configuration file, refer to the downloaded template.
On the "Mapping" tab, choose different operations based on the selected replication type. If updates occur in the source and target data sources during the configuration mapping phase, you can click the Refresh Metadata button in the upper right corner of the page to refresh the information of the source and target data sources.
Includes Schema: Configure the table name after synchronization to the target data source. Click Save and Pre-Check.
Excludes Schema: The system automatically selects the same-named database in the target data source, if it exists; otherwise, you need to manually select the target database. The table names and column names in the target database need to match the synchronization objects. If they don't match, you can manually map the table names and column names.
You can click Mapping & Filtering on the right side of the page to customize the column names after synchronization to the target data source. Additionally, you can set Data Filter, and only data that meets the filtering conditions will be synchronized to the target data source. Taking the test data table
employeesas an example, if you set the filtering condition toemp_no>=10005, data with emp_no less than 10005 will not be synchronized to the target data source.On the "Pre-check" tab, wait for the system to complete the precheck. After passing the precheck, click Launch.
tip- You can check Enable data consistency comparison. After the synchronization task is completed, automatically start data consistency comparison based on the source data source to ensure data consistency on both ends. The startup timing of Enable data consistency comparison based on your selection of Type is as follows:
- Schema: Starts after structural replication is completed.
- Schema + Full, Full: Starts after full replication is completed.
- Schema + Full + Incremental, Incremental: Starts when incremental data is first consistent with the source data source and Delay is 0 seconds. You can click View Details to view the synchronization delay on the Details page.

- If the precheck fails, you need to click Details in the Actions column on the right of the target check item, identify the reason for the failure, manually fix it, and then click Check Again to perform the precheck again until it passes.
- For check items with Result as Warning, you can repair or ignore them based on the specific situation.
- You can check Enable data consistency comparison. After the synchronization task is completed, automatically start data consistency comparison based on the source data source to ensure data consistency on both ends. The startup timing of Enable data consistency comparison based on your selection of Type is as follows:
On the Launch page, you will receive a prompt Launch Successfully, indicating that the synchronization task has started. At this point, you can:
- Click View Details to view the execution status of the synchronization task at each stage.
- Click Back to list to return to the Replication task list page.
View sync results
Log in to the NineData Console.
Click on Replication > Data Replication in the left navigation bar.
On the Replication page, click on the Task ID of the target synchronization task, the page details are as follows.

Number Function Description 1 Sync Delay The data synchronization delay between the source data source and the target data source. 0 seconds means there is no delay between the two ends, at which point you can choose to switch the business to the target data source for smooth migration. 2 Configure Alerts After configuring alerts, the system will notify you in the way you choose when the task fails. For more information, please refer to Operations Monitoring Introduction. 3 More - Pause: Pause the task, only tasks with Running status are selectable.
- Duplicate: Create a new replication task with the same configuration as the current task.
- Terminate: End tasks that are unfinished or listening (i.e., in incremental synchronization). Once the task is terminated, it cannot be restarted, so please proceed with caution. If the synchronization objects contain triggers, a trigger replication option will pop up, please select as needed.
- Delete: Delete the task. Once the task is deleted, it cannot be recovered, so please proceed with caution.
4 Structure Replication (displayed in scenarios involving structure replication) Displays the progress and detailed information of structure replication. - Click on Log on the right side of the page: View the execution logs of structure replication.
- Click on
on the right side of the page: View the latest information.
- Click on View DDL in the Actions column on the right side of the target object in the list: View SQL playback.
5 Full Replication (displayed in scenarios involving full replication) Displays the progress and detailed information of full replication. - Click on Monitor on the right side of the page: View various monitoring indicators during full replication. During full replication, you can also click on Flow Control Settings on the right side of the monitoring indicator page to limit the rate of writing to the target data source per second. The unit is rows/second.
- Click on Log on the right side of the page: View the execution logs of full replication.
- Click on
on the right side of the page: View the latest information.
6 Incremental Replication (displayed in scenarios involving incremental replication) Displays various monitoring indicators of incremental replication. - Click on View Threads on the right side of the page: View the operations currently being executed by the current replication task, including:
- Thread ID: Replication tasks are executed in multiple threads, displaying the current thread number in progress.
- Execute SQL: Details of the SQL statement currently being executed by the current thread.
- Response Time: The response time of the current thread. If this value increases, it indicates that the current thread may be stuck for some reason.
- Event Time: The timestamp when the current thread was started.
- Status: The status of the current thread.
- Click on Flow Control Settings on the right side of the page: Limit the rate of writing to the target data source per second. The unit is rows/second.
- Click on Log on the right side of the page: View the execution logs of incremental replication.
- Click on
on the right side of the page: View the latest information.
7 Modify Object Displays the modification records of synchronization objects. - Click on Modify Objects on the right side of the page to configure the synchronization objects.
- Click on
on the right side of the page: View the latest information.
8 Data Comparison Displays the comparison results between the source data source and the target data source. If you have not enabled data comparison, please click on Enable Comparison on the page. - Click on Re-compare on the right side of the page: Re-initiate the comparison between the current source and target data sources.
- Click on Stop on the right side of the page: After the comparison task starts, you can click this button to stop the comparison task immediately.
- Click on Log on the right side of the page: View the execution logs of consistency comparison.
- Click on Monitor (displayed only in data comparison): View the trend chart of RPS (records per second) comparison. Click on Details to view earlier records.
- Click on
in the Actions column on the right side of the comparison list (displayed under the Data tab only in the case of inconsistency): View details of the comparison between the source and target sides.
- Click on
in the Actions column on the right side of the comparison list (displayed only in the case of inconsistency): Generate change SQL. You can directly copy this SQL to the target data source to execute and modify the inconsistent content.
9 Expand Display detailed information of the current replication task. Common Options: - Export table configuration: Export the current task's database and table configuration, allowing for quick import when creating a new replication task. This helps rapidly establish multiple replication links with the same replication objects.
- Alert Rules: Configure the alarm strategy for the current task.