Skip to main content

Data Replication

NineData Data Replication helps you synchronize schema and data between two data sources by combining schema replication, full data replication, and incremental data replication.

Overview​

Use this page to create a standard data replication task. The available replication phases and supported capabilities depend on the selected source and target data sources, so review the support tables before you create the task.

Source DatabaseTarget DatabaseSchema Repl.Full Repl.Incre Repl.Schema Comp.Data Comp.Incre Comp.
MySQLMySQL✔️✔️✔️✔️✔️✔️
MySQLPolarDB MySQL-compatible✔️✔️✔️✔️✔️✔️
MySQLTDSQL-C MySQL (no datasource)✔️✔️✔️✔️✔️✔️
MySQLOceanBase MySQL✔️✔️✔️-✔️-
MySQLTDSQL Centralized MySQL (no datasource)✔️✔️✔️-✔️-
MySQLGaussDB Centralized MySQL✔️✔️✔️-✔️-
MySQLopenGauss MySQL✔️✔️✔️-✔️-
MySQLSQL Server✔️✔️✔️-✔️-
MySQLPostgreSQL✔️✔️✔️-✔️✔️
MySQLPolarDB PostgreSQL-compatible✔️✔️✔️-✔️✔️
MySQLTDSQL Centralized PostgreSQL✔️✔️✔️-✔️✔️
MySQLAnalyticDB PostgreSQL✔️✔️✔️---
MySQLGaussDB Centralized PostgreSQL✔️✔️✔️-✔️-
MySQLopenGauss PostgreSQL✔️✔️✔️-✔️-
MySQLKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️✔️
MySQLVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
MySQLOracle✔️✔️✔️-✔️✔️
MySQLOceanBase Oracle✔️✔️✔️-✔️-
MySQLGaussDB Centralized Oracle✔️✔️✔️-✔️-
MySQLopenGauss Oracle✔️✔️✔️-✔️-
MySQLKingbaseES Oracle-compatible✔️✔️✔️-✔️-
MySQLPolarDB Oracle-compatible✔️✔️✔️-✔️✔️
MySQLVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
MySQLDb2✔️✔️✔️-✔️-
MySQLDoris✔️✔️✔️-✔️-
MySQLSelectDB (no datasource)✔️✔️✔️-✔️-
MySQLClickHouse✔️✔️✔️-✔️-
MySQLElasticsearch✔️✔️✔️---
MySQLKafka-✔️✔️---
MySQLDameng✔️✔️✔️-✔️-
MySQLDWS✔️✔️✔️-✔️-
MySQLGreenplum✔️✔️✔️-✔️-
MySQLRedshift-✔️✔️---
MySQLStarRocks✔️✔️✔️-✔️-
MySQLSingleStore-✔️✔️-✔️-
MySQLTiDB✔️✔️✔️-✔️✔️
MySQLHive✔️✔️--✔️-
MySQLShardingJDBC-✔️✔️-✔️-
MySQLDataHub✔️✔️✔️-✔️-
MySQLPolarDB-X 2.0 Distributed✔️✔️✔️-✔️-
MySQLPolarDB-X 2.0 Centralized✔️✔️✔️✔️✔️✔️
OracleMySQL✔️✔️✔️-✔️✔️
OraclePolarDB MySQL-compatible✔️✔️✔️-✔️✔️
OracleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️✔️
OracleOceanBase MySQL✔️✔️✔️-✔️✔️
OracleTDSQL Centralized MySQL (no datasource)✔️✔️✔️-✔️-
OracleGaussDB Centralized MySQL✔️✔️✔️-✔️✔️
OracleopenGauss MySQL✔️✔️✔️-✔️-
OracleSQL Server✔️✔️✔️-✔️-
OraclePostgreSQL✔️✔️✔️-✔️✔️
OraclePolarDB PostgreSQL-compatible✔️✔️✔️-✔️✔️
OracleTDSQL Centralized PostgreSQL✔️✔️✔️-✔️✔️
OracleAnalyticDB PostgreSQL✔️✔️✔️-✔️-
OracleGaussDB Centralized PostgreSQL✔️✔️✔️-✔️✔️
OracleopenGauss PostgreSQL✔️✔️✔️-✔️-
OracleKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️✔️
OracleVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
OracleOracle✔️✔️✔️✔️✔️✔️
OracleOceanBase Oracle✔️✔️✔️-✔️✔️
OracleGaussDB Centralized Oracle✔️✔️✔️-✔️✔️
OracleopenGauss Oracle✔️✔️✔️-✔️-
OracleKingbaseES Oracle-compatible✔️✔️✔️-✔️-
OraclePolarDB Oracle-compatible✔️✔️✔️-✔️-
OracleVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
OracleDb2✔️✔️✔️-✔️-
OracleDoris✔️✔️✔️-✔️-
OracleSelectDB (no datasource)✔️✔️✔️-✔️-
OracleClickHouse✔️✔️✔️-✔️-
OracleKafka-✔️✔️---
OracleDameng✔️✔️✔️-✔️-
OracleDWS✔️✔️✔️-✔️-
OracleGreenplum✔️✔️✔️-✔️-
OracleStarRocks✔️✔️✔️-✔️-
OracleTiDB✔️✔️✔️-✔️✔️
OracleDataHub✔️✔️✔️-✔️-
OraclePolarDB-X 2.0 Distributed✔️✔️✔️-✔️-
OraclePolarDB-X 2.0 Centralized✔️✔️✔️-✔️-
OracleGoldenDB✔️✔️✔️-✔️-
PostgreSQLMySQL✔️✔️✔️-✔️✔️
PostgreSQLPolarDB MySQL-compatible✔️✔️✔️-✔️✔️
PostgreSQLTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️✔️
PostgreSQLOceanBase MySQL✔️✔️✔️-✔️-
PostgreSQLGaussDB Centralized MySQL✔️✔️✔️-✔️-
PostgreSQLopenGauss MySQL✔️✔️✔️-✔️-
PostgreSQLSQL Server✔️✔️✔️-✔️-
PostgreSQLPostgreSQL✔️✔️✔️✔️✔️✔️
PostgreSQLPolarDB PostgreSQL-compatible✔️✔️✔️✔️✔️✔️
PostgreSQLTDSQL Centralized PostgreSQL✔️✔️✔️✔️✔️✔️
PostgreSQLAnalyticDB PostgreSQL✔️✔️✔️-✔️-
PostgreSQLGaussDB Centralized PostgreSQL✔️✔️✔️-✔️-
PostgreSQLopenGauss PostgreSQL✔️✔️✔️-✔️-
PostgreSQLKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
PostgreSQLVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
PostgreSQLOracle✔️✔️✔️-✔️✔️
PostgreSQLOceanBase Oracle✔️✔️✔️-✔️✔️
PostgreSQLGaussDB Centralized Oracle✔️✔️✔️-✔️-
PostgreSQLopenGauss Oracle✔️✔️✔️-✔️-
PostgreSQLKingbaseES Oracle-compatible✔️✔️✔️-✔️-
PostgreSQLPolarDB Oracle-compatible✔️✔️✔️-✔️-
PostgreSQLVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
PostgreSQLDb2✔️✔️✔️-✔️-
PostgreSQLDoris✔️✔️✔️-✔️-
PostgreSQLSelectDB (no datasource)✔️✔️✔️-✔️-
PostgreSQLClickHouse✔️✔️✔️-✔️-
PostgreSQLKafka-✔️✔️---
PostgreSQLDameng✔️✔️✔️-✔️-
PostgreSQLDWS✔️✔️✔️-✔️-
PostgreSQLGreenplum✔️✔️✔️-✔️-
PostgreSQLStarRocks✔️✔️✔️-✔️-
PostgreSQLTiDB✔️✔️✔️-✔️✔️
PostgreSQLSybase-✔️✔️-✔️-
SQL ServerMySQL✔️✔️✔️-✔️-
SQL ServerPolarDB MySQL-compatible✔️✔️✔️-✔️-
SQL ServerTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
SQL ServerOceanBase MySQL✔️✔️✔️-✔️-
SQL ServerTDSQL Centralized MySQL (no datasource)✔️✔️✔️-✔️-
SQL ServeropenGauss MySQL✔️✔️✔️-✔️-
SQL ServerSQL Server✔️✔️✔️✔️✔️-
SQL ServerAzure SQL Database✔️✔️✔️-✔️-
SQL ServerPostgreSQL✔️✔️✔️-✔️-
SQL ServerPolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
SQL ServerTDSQL Centralized PostgreSQL✔️✔️✔️-✔️-
SQL ServerAnalyticDB PostgreSQL✔️✔️✔️-✔️-
SQL ServeropenGauss PostgreSQL✔️✔️✔️-✔️-
SQL ServerKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
SQL ServerVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
SQL ServerOracle✔️✔️✔️-✔️-
SQL ServerOceanBase Oracle✔️✔️✔️-✔️-
SQL ServeropenGauss Oracle✔️✔️✔️-✔️-
SQL ServerKingbaseES Oracle-compatible✔️✔️✔️-✔️-
SQL ServerPolarDB Oracle-compatible✔️✔️✔️-✔️-
SQL ServerVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
SQL ServerDb2✔️✔️✔️-✔️-
SQL ServerDoris✔️✔️✔️-✔️-
SQL ServerSelectDB (no datasource)✔️✔️✔️-✔️-
SQL ServerClickHouse✔️✔️✔️-✔️-
SQL ServerKafka-✔️✔️---
SQL ServerDameng✔️✔️✔️-✔️-
SQL ServerDWS✔️✔️✔️-✔️-
SQL ServerGreenplum✔️✔️✔️-✔️-
SQL ServerStarRocks✔️✔️✔️-✔️-
SQL ServerTiDB✔️✔️✔️-✔️-
PolarDB MySQL-compatibleMySQL✔️✔️✔️✔️✔️✔️
PolarDB MySQL-compatiblePolarDB MySQL-compatible✔️✔️✔️✔️✔️✔️
PolarDB MySQL-compatibleTDSQL-C MySQL (no datasource)✔️✔️✔️✔️✔️✔️
PolarDB MySQL-compatibleOceanBase MySQL✔️✔️✔️-✔️-
PolarDB MySQL-compatibleTDSQL Centralized MySQL (no datasource)✔️✔️✔️-✔️-
PolarDB MySQL-compatibleGaussDB Centralized MySQL✔️✔️✔️-✔️-
PolarDB MySQL-compatibleopenGauss MySQL✔️✔️✔️-✔️-
PolarDB MySQL-compatibleSQL Server✔️✔️✔️-✔️-
PolarDB MySQL-compatiblePostgreSQL✔️✔️✔️-✔️✔️
PolarDB MySQL-compatiblePolarDB PostgreSQL-compatible✔️✔️✔️-✔️✔️
PolarDB MySQL-compatibleTDSQL Centralized PostgreSQL✔️✔️✔️-✔️✔️
PolarDB MySQL-compatibleAnalyticDB PostgreSQL✔️✔️✔️---
PolarDB MySQL-compatibleGaussDB Centralized PostgreSQL✔️✔️✔️-✔️-
PolarDB MySQL-compatibleopenGauss PostgreSQL✔️✔️✔️-✔️-
PolarDB MySQL-compatibleKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️✔️
PolarDB MySQL-compatibleVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
PolarDB MySQL-compatibleOracle✔️✔️✔️-✔️✔️
PolarDB MySQL-compatibleGaussDB Centralized Oracle✔️✔️✔️-✔️-
PolarDB MySQL-compatibleopenGauss Oracle✔️✔️✔️-✔️-
PolarDB MySQL-compatibleKingbaseES Oracle-compatible✔️✔️✔️-✔️-
PolarDB MySQL-compatiblePolarDB Oracle-compatible✔️✔️✔️-✔️✔️
PolarDB MySQL-compatibleVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
PolarDB MySQL-compatibleDb2✔️✔️✔️-✔️-
PolarDB MySQL-compatibleDoris✔️✔️✔️-✔️-
PolarDB MySQL-compatibleSelectDB (no datasource)✔️✔️✔️-✔️-
PolarDB MySQL-compatibleClickHouse✔️✔️✔️-✔️-
PolarDB MySQL-compatibleElasticsearch✔️✔️✔️---
PolarDB MySQL-compatibleKafka-✔️✔️---
PolarDB MySQL-compatibleDameng✔️✔️✔️-✔️-
PolarDB MySQL-compatibleDWS✔️✔️✔️-✔️-
PolarDB MySQL-compatibleGreenplum✔️✔️✔️-✔️-
PolarDB MySQL-compatibleRedshift-✔️✔️---
PolarDB MySQL-compatibleStarRocks✔️✔️✔️-✔️-
PolarDB MySQL-compatibleSingleStore-✔️✔️-✔️-
PolarDB MySQL-compatibleTiDB✔️✔️✔️-✔️✔️
PolarDB MySQL-compatibleHive✔️✔️--✔️-
PolarDB MySQL-compatibleShardingJDBC-✔️✔️-✔️-
PolarDB MySQL-compatibleDataHub✔️✔️✔️-✔️-
PolarDB MySQL-compatiblePolarDB-X 2.0 Distributed✔️✔️✔️-✔️-
PolarDB MySQL-compatiblePolarDB-X 2.0 Centralized✔️✔️✔️✔️✔️✔️
TDSQL-C MySQLMySQL✔️✔️✔️✔️✔️✔️
TDSQL-C MySQLPolarDB MySQL-compatible✔️✔️✔️✔️✔️✔️
TDSQL-C MySQLTDSQL-C MySQL (no datasource)✔️✔️✔️✔️✔️✔️
TDSQL-C MySQLOceanBase MySQL✔️✔️✔️-✔️-
TDSQL-C MySQLTDSQL Centralized MySQL (no datasource)✔️✔️✔️-✔️-
TDSQL-C MySQLGaussDB Centralized MySQL✔️✔️✔️-✔️-
TDSQL-C MySQLopenGauss MySQL✔️✔️✔️-✔️-
TDSQL-C MySQLSQL Server✔️✔️✔️-✔️-
TDSQL-C MySQLPostgreSQL✔️✔️✔️-✔️✔️
TDSQL-C MySQLPolarDB PostgreSQL-compatible✔️✔️✔️-✔️✔️
TDSQL-C MySQLTDSQL Centralized PostgreSQL✔️✔️✔️-✔️✔️
TDSQL-C MySQLAnalyticDB PostgreSQL✔️✔️✔️---
TDSQL-C MySQLGaussDB Centralized PostgreSQL✔️✔️✔️-✔️-
TDSQL-C MySQLopenGauss PostgreSQL✔️✔️✔️-✔️-
TDSQL-C MySQLKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️✔️
TDSQL-C MySQLVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
TDSQL-C MySQLOracle✔️✔️✔️-✔️✔️
TDSQL-C MySQLOceanBase Oracle✔️✔️✔️-✔️-
TDSQL-C MySQLGaussDB Centralized Oracle✔️✔️✔️-✔️-
TDSQL-C MySQLopenGauss Oracle✔️✔️✔️-✔️-
TDSQL-C MySQLKingbaseES Oracle-compatible✔️✔️✔️-✔️-
TDSQL-C MySQLPolarDB Oracle-compatible✔️✔️✔️-✔️✔️
TDSQL-C MySQLVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
TDSQL-C MySQLDb2✔️✔️✔️-✔️-
TDSQL-C MySQLDoris✔️✔️✔️-✔️-
TDSQL-C MySQLSelectDB (no datasource)✔️✔️✔️-✔️-
TDSQL-C MySQLClickHouse✔️✔️✔️-✔️-
TDSQL-C MySQLElasticsearch✔️✔️✔️---
TDSQL-C MySQLKafka-✔️✔️---
TDSQL-C MySQLDameng✔️✔️✔️-✔️-
TDSQL-C MySQLDWS✔️✔️✔️-✔️-
TDSQL-C MySQLGreenplum✔️✔️✔️-✔️-
TDSQL-C MySQLRedshift-✔️✔️---
TDSQL-C MySQLStarRocks✔️✔️✔️-✔️-
TDSQL-C MySQLSingleStore-✔️✔️-✔️-
TDSQL-C MySQLTiDB✔️✔️✔️-✔️✔️
TDSQL-C MySQLHive✔️✔️--✔️-
TDSQL-C MySQLShardingJDBC-✔️✔️-✔️-
TDSQL-C MySQLDataHub✔️✔️✔️-✔️-
TDSQL-C MySQLPolarDB-X 2.0 Distributed✔️✔️✔️-✔️-
TDSQL-C MySQLPolarDB-X 2.0 Centralized✔️✔️✔️✔️✔️✔️
PolarDB PostgreSQL-compatibleMySQL✔️✔️✔️-✔️✔️
PolarDB PostgreSQL-compatiblePolarDB MySQL-compatible✔️✔️✔️-✔️✔️
PolarDB PostgreSQL-compatibleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️✔️
PolarDB PostgreSQL-compatibleOceanBase MySQL✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleTDSQL Centralized MySQL (no datasource)✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleGaussDB Centralized MySQL✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleopenGauss MySQL✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleSQL Server✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatiblePostgreSQL✔️✔️✔️✔️✔️✔️
PolarDB PostgreSQL-compatiblePolarDB PostgreSQL-compatible✔️✔️✔️✔️✔️✔️
PolarDB PostgreSQL-compatibleTDSQL Centralized PostgreSQL✔️✔️✔️✔️✔️✔️
PolarDB PostgreSQL-compatibleGaussDB Centralized PostgreSQL✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleopenGauss PostgreSQL✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleOracle✔️✔️✔️-✔️✔️
PolarDB PostgreSQL-compatibleOceanBase Oracle✔️✔️✔️-✔️✔️
PolarDB PostgreSQL-compatibleGaussDB Centralized Oracle✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleopenGauss Oracle✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleKingbaseES Oracle-compatible✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatiblePolarDB Oracle-compatible✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleDb2✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleDoris✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleSelectDB (no datasource)✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleClickHouse✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleKafka-✔️✔️---
PolarDB PostgreSQL-compatibleDameng✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleDWS✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleGreenplum✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleStarRocks✔️✔️✔️-✔️-
PolarDB PostgreSQL-compatibleTiDB✔️✔️✔️-✔️✔️
PolarDB PostgreSQL-compatibleSybase-✔️✔️-✔️-
TDSQL Centralized PostgreSQLMySQL✔️✔️✔️-✔️✔️
TDSQL Centralized PostgreSQLPolarDB MySQL-compatible✔️✔️✔️-✔️✔️
TDSQL Centralized PostgreSQLTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️✔️
TDSQL Centralized PostgreSQLOceanBase MySQL✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLopenGauss MySQL✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLSQL Server✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLPostgreSQL✔️✔️✔️✔️✔️✔️
TDSQL Centralized PostgreSQLPolarDB PostgreSQL-compatible✔️✔️✔️✔️✔️✔️
TDSQL Centralized PostgreSQLTDSQL Centralized PostgreSQL✔️✔️✔️✔️✔️✔️
TDSQL Centralized PostgreSQLopenGauss PostgreSQL✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLOracle✔️✔️✔️-✔️✔️
TDSQL Centralized PostgreSQLOceanBase Oracle✔️✔️✔️-✔️✔️
TDSQL Centralized PostgreSQLopenGauss Oracle✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLKingbaseES Oracle-compatible✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLPolarDB Oracle-compatible✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLDb2✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLDoris✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLClickHouse✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLDameng✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLGreenplum✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLStarRocks✔️✔️✔️-✔️-
TDSQL Centralized PostgreSQLTiDB✔️✔️✔️-✔️✔️
OceanBase OracleMySQL✔️✔️✔️-✔️-
OceanBase OraclePolarDB MySQL-compatible✔️✔️✔️-✔️-
OceanBase OracleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
OceanBase OracleOceanBase MySQL✔️✔️✔️-✔️✔️
OceanBase OracleopenGauss MySQL✔️✔️✔️-✔️-
OceanBase OracleSQL Server✔️✔️✔️-✔️-
OceanBase OraclePostgreSQL✔️✔️✔️-✔️✔️
OceanBase OraclePolarDB PostgreSQL-compatible✔️✔️✔️-✔️✔️
OceanBase OracleopenGauss PostgreSQL✔️✔️✔️-✔️-
OceanBase OracleKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
OceanBase OracleOracle✔️✔️✔️-✔️✔️
OceanBase OracleOceanBase Oracle✔️✔️✔️✔️✔️✔️
OceanBase OracleopenGauss Oracle✔️✔️✔️-✔️-
OceanBase OracleKingbaseES Oracle-compatible✔️✔️✔️-✔️-
OceanBase OraclePolarDB Oracle-compatible✔️✔️✔️-✔️-
OceanBase OracleDb2✔️✔️✔️-✔️-
OceanBase OracleDoris✔️✔️✔️-✔️-
OceanBase OracleClickHouse✔️✔️✔️-✔️-
OceanBase OracleKafka-✔️✔️---
OceanBase OracleDameng✔️✔️✔️-✔️-
OceanBase OracleGreenplum✔️✔️✔️-✔️-
OceanBase OracleStarRocks✔️✔️✔️-✔️-
OceanBase OracleTiDB✔️✔️✔️-✔️✔️
OceanBase MySQLMySQL✔️✔️✔️-✔️-
OceanBase MySQLPolarDB MySQL-compatible✔️✔️✔️-✔️-
OceanBase MySQLTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
OceanBase MySQLOceanBase MySQL✔️✔️✔️✔️✔️✔️
OceanBase MySQLopenGauss MySQL✔️✔️✔️-✔️-
OceanBase MySQLSQL Server✔️✔️✔️-✔️-
OceanBase MySQLPostgreSQL✔️✔️✔️-✔️-
OceanBase MySQLPolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
OceanBase MySQLopenGauss PostgreSQL✔️✔️✔️-✔️-
OceanBase MySQLKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
OceanBase MySQLOracle✔️✔️✔️-✔️-
OceanBase MySQLOceanBase Oracle✔️✔️✔️-✔️-
OceanBase MySQLopenGauss Oracle✔️✔️✔️-✔️-
OceanBase MySQLKingbaseES Oracle-compatible✔️✔️✔️-✔️-
OceanBase MySQLPolarDB Oracle-compatible✔️✔️✔️-✔️-
OceanBase MySQLDb2✔️✔️✔️-✔️-
OceanBase MySQLDoris✔️✔️✔️-✔️-
OceanBase MySQLClickHouse✔️✔️✔️-✔️-
OceanBase MySQLKafka-✔️✔️---
OceanBase MySQLDameng✔️✔️✔️-✔️-
OceanBase MySQLGreenplum✔️✔️✔️-✔️-
OceanBase MySQLStarRocks✔️✔️✔️-✔️-
OceanBase MySQLTiDB✔️✔️✔️-✔️-
OceanBase MySQLPolarDB-X 2.0 Distributed✔️✔️✔️-✔️-
TDSQL Centralized MySQLMySQL✔️✔️✔️-✔️-
TDSQL Centralized MySQLPolarDB MySQL-compatible✔️✔️✔️-✔️-
TDSQL Centralized MySQLTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
TDSQL Centralized MySQLOceanBase MySQL✔️✔️✔️-✔️-
TDSQL Centralized MySQLTDSQL Centralized MySQL (no datasource)✔️✔️✔️✔️✔️-
TDSQL Centralized MySQLGaussDB Centralized MySQL✔️✔️✔️-✔️-
TDSQL Centralized MySQLopenGauss MySQL✔️✔️✔️-✔️-
TDSQL Centralized MySQLSQL Server✔️✔️✔️-✔️-
TDSQL Centralized MySQLPostgreSQL✔️✔️✔️-✔️-
TDSQL Centralized MySQLPolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
TDSQL Centralized MySQLAnalyticDB PostgreSQL✔️✔️✔️---
TDSQL Centralized MySQLGaussDB Centralized PostgreSQL✔️✔️✔️-✔️-
TDSQL Centralized MySQLopenGauss PostgreSQL✔️✔️✔️-✔️-
TDSQL Centralized MySQLKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
TDSQL Centralized MySQLOracle✔️✔️✔️-✔️-
TDSQL Centralized MySQLGaussDB Centralized Oracle✔️✔️✔️-✔️-
TDSQL Centralized MySQLopenGauss Oracle✔️✔️✔️-✔️-
TDSQL Centralized MySQLKingbaseES Oracle-compatible✔️✔️✔️-✔️-
TDSQL Centralized MySQLDb2✔️✔️✔️-✔️-
TDSQL Centralized MySQLDoris✔️✔️✔️-✔️-
TDSQL Centralized MySQLSelectDB (no datasource)✔️✔️✔️-✔️-
TDSQL Centralized MySQLClickHouse✔️✔️✔️-✔️-
TDSQL Centralized MySQLKafka-✔️✔️---
TDSQL Centralized MySQLDWS✔️✔️✔️---
TDSQL Centralized MySQLGreenplum✔️✔️✔️-✔️-
TDSQL Centralized MySQLStarRocks✔️✔️✔️-✔️-
TDSQL Centralized MySQLTiDB✔️✔️✔️-✔️-
TDSQL Centralized MySQLPolarDB-X 2.0 Distributed✔️✔️✔️-✔️-
TDSQL Centralized MySQLPolarDB-X 2.0 Centralized✔️✔️✔️-✔️-
Db2MySQL✔️✔️✔️-✔️-
Db2PolarDB MySQL-compatible✔️✔️✔️-✔️-
Db2TDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
Db2OceanBase MySQL✔️✔️✔️-✔️-
Db2TDSQL Centralized MySQL (no datasource)✔️✔️✔️-✔️-
Db2openGauss MySQL✔️✔️✔️-✔️-
Db2SQL Server✔️✔️✔️-✔️-
Db2PostgreSQL✔️✔️✔️-✔️-
Db2PolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
Db2TDSQL Centralized PostgreSQL✔️✔️✔️-✔️-
Db2openGauss PostgreSQL✔️✔️✔️-✔️-
Db2KingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
Db2Oracle✔️✔️✔️-✔️-
Db2OceanBase Oracle✔️✔️✔️-✔️-
Db2openGauss Oracle✔️✔️✔️-✔️-
Db2KingbaseES Oracle-compatible✔️✔️✔️-✔️-
Db2PolarDB Oracle-compatible✔️✔️✔️-✔️-
Db2Db2✔️✔️✔️-✔️-
Db2Doris✔️✔️✔️-✔️-
Db2ClickHouse✔️✔️✔️-✔️-
Db2Kafka-✔️✔️---
Db2Dameng✔️✔️✔️-✔️-
Db2Greenplum✔️✔️✔️-✔️-
Db2StarRocks✔️✔️✔️-✔️-
Db2TiDB✔️✔️✔️-✔️-
Db2GoldenDB✔️✔️✔️-✔️-
Db2SelectDB (no datasource)Data replication supportedData comparison supported
MongoDBMongoDB✔️✔️✔️✔️✔️-
RedisRedis-✔️✔️-✔️-
DorisMySQL✔️✔️--✔️-
DorisPolarDB MySQL-compatible✔️✔️--✔️-
DorisTDSQL-C MySQL (no datasource)✔️✔️--✔️-
DorisOceanBase MySQL✔️✔️--✔️-
DorisTDSQL Centralized MySQL (no datasource)✔️✔️--✔️-
DorisopenGauss MySQL✔️✔️--✔️-
DorisSQL Server✔️✔️--✔️-
DorisPostgreSQL✔️✔️--✔️-
DorisPolarDB PostgreSQL-compatible✔️✔️--✔️-
DorisTDSQL Centralized PostgreSQL✔️✔️--✔️-
DorisopenGauss PostgreSQL✔️✔️--✔️-
DorisKingbaseES PostgreSQL-compatible✔️✔️--✔️-
DorisVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
DorisOracle✔️✔️--✔️-
DorisOceanBase Oracle✔️✔️--✔️-
DorisopenGauss Oracle✔️✔️--✔️-
DorisKingbaseES Oracle-compatible✔️✔️--✔️-
DorisPolarDB Oracle-compatible✔️✔️--✔️-
DorisVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
DorisDb2✔️✔️--✔️-
DorisDoris✔️✔️--✔️-
DorisClickHouse✔️✔️--✔️-
DorisDameng✔️✔️--✔️-
DorisGreenplum✔️✔️--✔️-
DorisStarRocks✔️✔️--✔️-
DorisTiDB✔️✔️--✔️-
SelectDBMySQL✔️✔️--✔️-
SelectDBPolarDB MySQL-compatible✔️✔️--✔️-
SelectDBTDSQL-C MySQL (no datasource)✔️✔️--✔️-
SelectDBTDSQL Centralized MySQL (no datasource)✔️✔️--✔️-
SelectDBPostgreSQL✔️✔️--✔️-
SelectDBPolarDB PostgreSQL-compatible✔️✔️--✔️-
SelectDBTDSQL Centralized PostgreSQL✔️✔️--✔️-
SelectDBOracle✔️✔️--✔️-
SelectDBSelectDB (no datasource)✔️✔️--✔️-
SelectDBClickHouse✔️✔️--✔️-
SelectDBGreenplum✔️✔️✔️-✔️-
SelectDBStarRocks✔️✔️--✔️-
ClickHouseMySQL✔️✔️--✔️-
ClickHousePolarDB MySQL-compatible✔️✔️--✔️-
ClickHouseTDSQL-C MySQL (no datasource)✔️✔️--✔️-
ClickHouseOceanBase MySQL✔️✔️--✔️-
ClickHouseTDSQL Centralized MySQL (no datasource)✔️✔️--✔️-
ClickHouseopenGauss MySQL✔️✔️--✔️-
ClickHouseSQL Server✔️✔️--✔️-
ClickHousePostgreSQL✔️✔️--✔️-
ClickHousePolarDB PostgreSQL-compatible✔️✔️--✔️-
ClickHouseTDSQL Centralized PostgreSQL✔️✔️--✔️-
ClickHouseopenGauss PostgreSQL✔️✔️--✔️-
ClickHouseKingbaseES PostgreSQL-compatible✔️✔️--✔️-
ClickHouseVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
ClickHouseOracle✔️✔️--✔️-
ClickHouseOceanBase Oracle✔️✔️--✔️-
ClickHouseopenGauss Oracle✔️✔️--✔️-
ClickHouseKingbaseES Oracle-compatible✔️✔️--✔️-
ClickHousePolarDB Oracle-compatible✔️✔️--✔️-
ClickHouseVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
ClickHouseDb2✔️✔️--✔️-
ClickHouseDoris✔️✔️--✔️-
ClickHouseClickHouse✔️✔️--✔️-
ClickHouseDameng✔️✔️--✔️-
ClickHouseGreenplum✔️✔️--✔️-
ClickHouseStarRocks✔️✔️--✔️-
ClickHouseTiDB✔️✔️--✔️-
DamengMySQL✔️✔️✔️-✔️-
DamengPolarDB MySQL-compatible✔️✔️✔️-✔️-
DamengTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
DamengOceanBase MySQL✔️✔️✔️-✔️-
DamengopenGauss MySQL✔️✔️✔️-✔️-
DamengSQL Server✔️✔️✔️-✔️-
DamengPostgreSQL✔️✔️✔️-✔️-
DamengPolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
DamengTDSQL Centralized PostgreSQL✔️✔️✔️-✔️-
DamengopenGauss PostgreSQL✔️✔️✔️-✔️-
DamengKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
DamengVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
DamengOracle✔️✔️✔️-✔️-
DamengOceanBase Oracle✔️✔️✔️-✔️-
DamengopenGauss Oracle✔️✔️✔️-✔️-
DamengKingbaseES Oracle-compatible✔️✔️✔️-✔️-
DamengPolarDB Oracle-compatible✔️✔️✔️-✔️-
DamengVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
DamengDb2✔️✔️✔️-✔️-
DamengClickHouse✔️✔️✔️-✔️-
DamengDameng✔️✔️✔️✔️✔️✔️
DamengTiDB✔️✔️✔️-✔️-
DWS (no datasource)DWS✔️✔️✔️-✔️-
GreenplumMySQL✔️✔️--✔️-
GreenplumPolarDB MySQL-compatible✔️✔️--✔️-
GreenplumTDSQL-C MySQL (no datasource)✔️✔️--✔️-
GreenplumOceanBase MySQL✔️✔️--✔️-
GreenplumTDSQL Centralized MySQL (no datasource)✔️✔️--✔️-
GreenplumSQL Server✔️✔️--✔️-
GreenplumPostgreSQL✔️✔️--✔️-
GreenplumPolarDB PostgreSQL-compatible✔️✔️--✔️-
GreenplumTDSQL Centralized PostgreSQL✔️✔️--✔️-
GreenplumVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
GreenplumOracle✔️✔️--✔️-
GreenplumOceanBase Oracle✔️✔️--✔️-
GreenplumPolarDB Oracle-compatible✔️✔️--✔️-
GreenplumVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
GreenplumDb2✔️✔️--✔️-
GreenplumDoris✔️✔️--✔️-
GreenplumClickHouse✔️✔️--✔️-
GreenplumDameng✔️✔️--✔️-
GreenplumGreenplum✔️✔️--✔️-
GreenplumStarRocks✔️✔️--✔️-
GreenplumTiDB✔️✔️--✔️-
StarRocksMySQL✔️✔️--✔️-
StarRocksPolarDB MySQL-compatible✔️✔️--✔️-
StarRocksTDSQL-C MySQL (no datasource)✔️✔️--✔️-
StarRocksOceanBase MySQL✔️✔️--✔️-
StarRocksTDSQL Centralized MySQL (no datasource)✔️✔️--✔️-
StarRocksopenGauss MySQL✔️✔️--✔️-
StarRocksSQL Server✔️✔️--✔️-
StarRocksPostgreSQL✔️✔️--✔️-
StarRocksPolarDB PostgreSQL-compatible✔️✔️--✔️-
StarRocksTDSQL Centralized PostgreSQL✔️✔️--✔️-
StarRocksopenGauss PostgreSQL✔️✔️--✔️-
StarRocksKingbaseES PostgreSQL-compatible✔️✔️--✔️-
StarRocksVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
StarRocksOracle✔️✔️--✔️-
StarRocksOceanBase Oracle✔️✔️--✔️-
StarRocksopenGauss Oracle✔️✔️--✔️-
StarRocksKingbaseES Oracle-compatible✔️✔️--✔️-
StarRocksPolarDB Oracle-compatible✔️✔️--✔️-
StarRocksVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
StarRocksDb2✔️✔️--✔️-
StarRocksDoris✔️✔️--✔️-
StarRocksClickHouse✔️✔️--✔️-
StarRocksDameng✔️✔️--✔️-
StarRocksGreenplum✔️✔️--✔️-
StarRocksStarRocks✔️✔️--✔️-
StarRocksTiDB✔️✔️--✔️-
TiDBMySQL✔️✔️✔️-✔️✔️
TiDBPolarDB MySQL-compatible✔️✔️✔️-✔️✔️
TiDBTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️✔️
TiDBOceanBase MySQL✔️✔️✔️-✔️-
TiDBopenGauss MySQL✔️✔️✔️-✔️-
TiDBSQL Server✔️✔️✔️-✔️-
TiDBPostgreSQL✔️✔️✔️-✔️✔️
TiDBPolarDB PostgreSQL-compatible✔️✔️✔️-✔️✔️
TiDBTDSQL Centralized PostgreSQL✔️✔️✔️-✔️✔️
TiDBopenGauss PostgreSQL✔️✔️✔️-✔️-
TiDBKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
TiDBVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
TiDBOracle✔️✔️✔️-✔️✔️
TiDBOceanBase Oracle✔️✔️✔️-✔️-
TiDBopenGauss Oracle✔️✔️✔️-✔️-
TiDBKingbaseES Oracle-compatible✔️✔️✔️-✔️-
TiDBVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
TiDBDoris✔️✔️✔️-✔️-
TiDBClickHouse✔️✔️✔️-✔️-
TiDBDameng✔️✔️✔️-✔️-
TiDBGreenplum✔️✔️✔️-✔️-
TiDBStarRocks✔️✔️✔️-✔️-
TiDBTiDB✔️✔️✔️✔️✔️✔️
TiDBPolarDB-X 2.0 Distributed✔️✔️✔️-✔️-
TiDBDb2Data replication supportedData comparison supported
SybasePostgreSQL-✔️✔️-✔️-
SybaseTDSQL Centralized PostgreSQL-✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)MySQL✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)PolarDB MySQL-compatible✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)TDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)GaussDB Centralized MySQL✔️✔️✔️-✔️✔️
GaussDB Centralized MySQL (B/M compatible)openGauss MySQL✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)PostgreSQL✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)GaussDB Centralized PostgreSQL✔️✔️✔️-✔️✔️
GaussDB Centralized MySQL (B/M compatible)openGauss PostgreSQL✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)Oracle✔️✔️✔️-✔️✔️
GaussDB Centralized MySQL (B/M compatible)GaussDB Centralized Oracle✔️✔️✔️-✔️✔️
GaussDB Centralized MySQL (B/M compatible)openGauss Oracle✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)Doris✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)SelectDB (no datasource)✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)Kafka-✔️✔️---
GaussDB Centralized MySQL (B/M compatible)DWS✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)StarRocks✔️✔️✔️-✔️-
GaussDB Centralized MySQL (B/M compatible)DataHub✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleMySQL✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatiblePolarDB MySQL-compatible✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleGaussDB Centralized MySQL✔️✔️✔️-✔️✔️
GaussDB Centralized Oracle-compatibleopenGauss MySQL✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatiblePostgreSQL✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleGaussDB Centralized PostgreSQL✔️✔️✔️-✔️✔️
GaussDB Centralized Oracle-compatibleopenGauss PostgreSQL✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleOracle✔️✔️✔️-✔️✔️
GaussDB Centralized Oracle-compatibleGaussDB Centralized Oracle✔️✔️✔️-✔️✔️
GaussDB Centralized Oracle-compatibleopenGauss Oracle✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleDoris✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleSelectDB (no datasource)✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleKafka-✔️✔️---
GaussDB Centralized Oracle-compatibleDWS✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleStarRocks✔️✔️✔️-✔️-
GaussDB Centralized Oracle-compatibleDataHub✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleMySQL✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatiblePolarDB MySQL-compatible✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleGaussDB Centralized MySQL✔️✔️✔️-✔️✔️
GaussDB Centralized PostgreSQL-compatibleopenGauss MySQL✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatiblePostgreSQL✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleGaussDB Centralized PostgreSQL✔️✔️✔️-✔️✔️
GaussDB Centralized PostgreSQL-compatibleopenGauss PostgreSQL✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleOracle✔️✔️✔️-✔️✔️
GaussDB Centralized PostgreSQL-compatibleGaussDB Centralized Oracle✔️✔️✔️-✔️✔️
GaussDB Centralized PostgreSQL-compatibleopenGauss Oracle✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleDoris✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleSelectDB (no datasource)✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleKafka-✔️✔️---
GaussDB Centralized PostgreSQL-compatibleDWS✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleStarRocks✔️✔️✔️-✔️-
GaussDB Centralized PostgreSQL-compatibleDataHub✔️✔️✔️-✔️-
openGauss MySQLMySQL✔️✔️✔️-✔️-
openGauss MySQLPolarDB MySQL-compatible✔️✔️✔️-✔️-
openGauss MySQLTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
openGauss MySQLOceanBase MySQL✔️✔️✔️-✔️-
openGauss MySQLopenGauss MySQL✔️✔️✔️✔️✔️-
openGauss MySQLSQL Server✔️✔️✔️-✔️-
openGauss MySQLopenGauss PostgreSQL✔️✔️✔️✔️✔️-
openGauss MySQLopenGauss Oracle✔️✔️✔️✔️✔️-
openGauss MySQLPolarDB Oracle-compatible✔️✔️✔️-✔️-
openGauss MySQLVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
openGauss MySQLDb2✔️✔️✔️-✔️-
openGauss MySQLDoris✔️✔️✔️-✔️-
openGauss MySQLClickHouse✔️✔️✔️-✔️-
openGauss MySQLDameng✔️✔️✔️-✔️-
openGauss MySQLGreenplum✔️✔️✔️-✔️-
openGauss MySQLStarRocks✔️✔️✔️-✔️-
openGauss MySQLTiDB✔️✔️✔️-✔️-
openGauss OracleMySQL✔️✔️✔️-✔️-
openGauss OraclePolarDB MySQL-compatible✔️✔️✔️-✔️-
openGauss OracleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
openGauss OracleOceanBase MySQL✔️✔️✔️-✔️-
openGauss OracleopenGauss MySQL✔️✔️✔️✔️✔️-
openGauss OracleSQL Server✔️✔️✔️-✔️-
openGauss OracleopenGauss PostgreSQL✔️✔️✔️✔️✔️-
openGauss OracleOracle✔️✔️✔️-✔️-
openGauss OracleOceanBase Oracle✔️✔️✔️-✔️-
openGauss OracleopenGauss Oracle✔️✔️✔️✔️✔️-
openGauss OraclePolarDB Oracle-compatible✔️✔️✔️-✔️-
openGauss OracleVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
openGauss OracleDb2✔️✔️✔️-✔️-
openGauss OracleDoris✔️✔️✔️-✔️-
openGauss OracleClickHouse✔️✔️✔️-✔️-
openGauss OracleDameng✔️✔️✔️-✔️-
openGauss OracleGreenplum✔️✔️✔️-✔️-
openGauss OracleStarRocks✔️✔️✔️-✔️-
openGauss OracleTiDB✔️✔️✔️-✔️-
openGauss PostgreSQLMySQL✔️✔️✔️-✔️-
openGauss PostgreSQLPolarDB MySQL-compatible✔️✔️✔️-✔️-
openGauss PostgreSQLTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
openGauss PostgreSQLOceanBase MySQL✔️✔️✔️-✔️-
openGauss PostgreSQLopenGauss MySQL✔️✔️✔️✔️✔️-
openGauss PostgreSQLopenGauss PostgreSQL✔️✔️✔️✔️✔️-
openGauss PostgreSQLOracle✔️✔️✔️-✔️-
openGauss PostgreSQLOceanBase Oracle✔️✔️✔️-✔️-
openGauss PostgreSQLopenGauss Oracle✔️✔️✔️✔️✔️-
openGauss PostgreSQLPolarDB Oracle-compatible✔️✔️✔️-✔️-
openGauss PostgreSQLVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
openGauss PostgreSQLDb2✔️✔️✔️-✔️-
openGauss PostgreSQLDoris✔️✔️✔️-✔️-
openGauss PostgreSQLClickHouse✔️✔️✔️-✔️-
openGauss PostgreSQLDameng✔️✔️✔️-✔️-
openGauss PostgreSQLGreenplum✔️✔️✔️-✔️-
openGauss PostgreSQLStarRocks✔️✔️✔️-✔️-
openGauss PostgreSQLTiDB✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleMySQL✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatiblePolarDB MySQL-compatible✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleOceanBase MySQL✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleopenGauss MySQL✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleSQL Server✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatiblePostgreSQL✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatiblePolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleTDSQL Centralized PostgreSQL✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleopenGauss PostgreSQL✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleKingbaseES PostgreSQL-compatible✔️✔️✔️✔️✔️-
KingbaseES PostgreSQL-compatibleVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleOracle✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleOceanBase Oracle✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleopenGauss Oracle✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleKingbaseES Oracle-compatible✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatiblePolarDB Oracle-compatible✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleDoris✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleSelectDB (no datasource)✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleClickHouse✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleKafka✔️✔️✔️---
KingbaseES PostgreSQL-compatibleDameng✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleGreenplum✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleStarRocks✔️✔️✔️-✔️-
KingbaseES PostgreSQL-compatibleTiDB✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleMySQL✔️✔️✔️-✔️-
KingbaseES Oracle-compatiblePolarDB MySQL-compatible✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleOceanBase MySQL✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleopenGauss MySQL✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleSQL Server✔️✔️✔️-✔️-
KingbaseES Oracle-compatiblePostgreSQL✔️✔️✔️-✔️-
KingbaseES Oracle-compatiblePolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleTDSQL Centralized PostgreSQL✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleopenGauss PostgreSQL✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleKingbaseES PostgreSQL-compatible✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleOracle✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleOceanBase Oracle✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleopenGauss Oracle✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleKingbaseES Oracle-compatible✔️✔️✔️✔️✔️-
KingbaseES Oracle-compatiblePolarDB Oracle-compatible✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleDb2✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleDoris✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleSelectDB (no datasource)✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleClickHouse✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleKafka✔️✔️✔️---
KingbaseES Oracle-compatibleDameng✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleGreenplum✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleStarRocks✔️✔️✔️-✔️-
KingbaseES Oracle-compatibleTiDB✔️✔️✔️-✔️-
PolarDB Oracle-compatibleMySQL✔️✔️✔️-✔️-
PolarDB Oracle-compatiblePolarDB MySQL-compatible✔️✔️✔️-✔️-
PolarDB Oracle-compatibleTDSQL-C MySQL (no datasource)✔️✔️✔️-✔️-
PolarDB Oracle-compatibleOceanBase MySQL✔️✔️✔️-✔️-
PolarDB Oracle-compatibleopenGauss MySQL✔️✔️✔️-✔️-
PolarDB Oracle-compatibleSQL Server✔️✔️✔️-✔️-
PolarDB Oracle-compatiblePostgreSQL✔️✔️✔️-✔️-
PolarDB Oracle-compatiblePolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
PolarDB Oracle-compatibleopenGauss PostgreSQL✔️✔️✔️-✔️-
PolarDB Oracle-compatibleVastbase G100 PostgreSQL-compatible✔️✔️✔️-✔️-
PolarDB Oracle-compatibleOracle✔️✔️✔️-✔️-
PolarDB Oracle-compatibleOceanBase Oracle✔️✔️✔️-✔️-
PolarDB Oracle-compatibleopenGauss Oracle✔️✔️✔️-✔️-
PolarDB Oracle-compatiblePolarDB Oracle-compatible✔️✔️✔️✔️✔️✔️
PolarDB Oracle-compatibleVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
PolarDB Oracle-compatibleDb2✔️✔️✔️-✔️-
PolarDB Oracle-compatibleDoris✔️✔️✔️-✔️-
PolarDB Oracle-compatibleClickHouse✔️✔️✔️-✔️-
PolarDB Oracle-compatibleDameng✔️✔️✔️-✔️-
PolarDB Oracle-compatibleGreenplum✔️✔️✔️-✔️-
PolarDB Oracle-compatibleStarRocks✔️✔️✔️-✔️-
PolarDB Oracle-compatibleTiDB✔️✔️✔️-✔️-
PolarDB-X 2.0 DistributedPolarDB-X 1.0 Distributed✔️✔️✔️-✔️-
PolarDB-X 1.0 DistributedPolarDB-X 2.0 Centralized✔️✔️✔️---
PolarDB-X 2.0 CentralizedPolarDB-X 2.0 Centralized✔️✔️✔️✔️✔️✔️
Azure SQL DatabaseSQL Server✔️✔️✔️-✔️-
Azure SQL DatabaseAzure SQL Database✔️✔️✔️✔️✔️-
Azure SQL DatabasePostgreSQL✔️✔️✔️-✔️-
Azure SQL DatabasePolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
Azure SQL DatabaseTDSQL Centralized PostgreSQL✔️✔️✔️-✔️-
Vastbase G100 OracleMySQL✔️✔️✔️-✔️-
Vastbase G100 OraclePolarDB MySQL-compatible✔️✔️✔️-✔️-
Vastbase G100 OracleOceanBase MySQL✔️✔️✔️-✔️-
Vastbase G100 OraclePolarDB PostgreSQL-compatible✔️✔️✔️-✔️-
Vastbase G100 OracleOceanBase Oracle✔️✔️✔️-✔️-
Vastbase G100 OraclePolarDB Oracle-compatible✔️✔️✔️-✔️-
Vastbase G100 OracleVastbase G100 Oracle-compatible✔️✔️✔️-✔️-
Vastbase G100 OracleDb2✔️✔️✔️-✔️-
Vastbase G100 OracleStarRocks✔️✔️✔️-✔️-
Vastbase G100 OracleTiDB✔️✔️✔️-✔️-
Vastbase G100 PostgreSQLMySQL✔️✔️✔️-✔️-
Vastbase G100 PostgreSQLPolarDB MySQL-compatible✔️✔️✔️-✔️-
Vastbase G100 PostgreSQLOceanBase Oracle✔️✔️✔️-✔️-
GoldenDBOracle✔️✔️✔️-✔️-
GoldenDBDb2✔️✔️✔️-✔️-
GoldenDBGoldenDB✔️✔️✔️-✔️-

A complete one-way data replication workflow can include the following phases:

  1. Schema replication: Synchronizes database and table structures from the source data source to the target data source.
  2. Full data replication: Synchronizes existing data from the source data source to the target data source.
  3. Incremental data replication: Synchronizes ongoing source-side data changes to the target database in real time.

After replication completes, verify data and schema compatibility on the target data source. If verification passes, switch application traffic or downstream workloads to the target data source.

Run these phases together or separately based on your business requirements. For example, run only schema replication, only full data replication, or only incremental data replication.

Bidirectional replication adds reverse incremental replication from the target data source back to the source data source.

  • When a relational database replicates to Kafka, the delivery format can be Canal JSON or Avro. Avro delivery requires a Confluent Schema Registry endpoint and, when applicable, its authentication credentials.
  • YashanDB can be used as a target for schema and full replication from relational sources such as MySQL, Oracle, PostgreSQL, and SQL Server. Incremental availability depends on the replication types displayed for the selected link. When YashanDB is the source, schema and full replication are currently supported, but incremental replication is not.
  • For Oracle-source incremental replication, the writer resolves conflicts between dependent rows and adjusts the write order, reducing write failures caused by dependencies such as foreign keys.
  • For SQL Server sources, incremental DDL replication can convert TRUNCATE TABLE.
  • Oracle-to-TiDB and TiDB-to-Oracle incremental DDL replication can convert COMMENT syntax.
  • PostgreSQL-to-GaussDB replication supports column type mapping.
  • A replication task that has reached a terminal state cannot be started again, preventing a terminated task from running again and causing inconsistent data.
  • Oracle-to-PolarDB Oracle schema and incremental replication support Materialized View Log objects.
  • When row-level logical merge by primary key is disabled, table-batch writing can group and write INSERT, UPDATE, and DELETE operations concurrently by operation type while preserving intermediate DML for downstream subscribers.
  • SQL Server metadata retrieval filters a broader set of system tables to avoid subscribing to system-table changes.
  • Incremental replication tasks that involve Kafka periodically check Kafka server connectivity. If the server is unavailable, use the error displayed in the replication task details to check the Kafka address, network, and authentication settings.
  • Data Replication prechecks check object-configuration conflicts in unfinished replication tasks, including replication loops and multiple tasks that replicate the same table.
  • After you create a bidirectional replication task, starting the forward task does not depend on the reverse task having started. If the precheck reports an object-configuration conflict, resolve the conflicting task as instructed before starting.
  • PostgreSQL incremental replication supports parsing and replicating COMMENT ON CONSTRAINT statements.
  • When GaussDB is the source, incremental replication supports CREATE and DROP DDL for non-table objects such as procedure, function, and sequence.
  • Oracle full replication supports ROWID-based sharding for tables with composite primary keys and tables without primary keys.
tip

Schema replication and incremental data replication cannot be selected together unless full data replication is also selected.

Before you begin​

  • Add the source and target data sources to NineData. For details, see Add a Data Source.

  • For bidirectional replication, keep the source and target database versions consistent when possible.

  • If the task does not include schema replication, make sure the target data source already contains the table structures to be replicated.

  • When MySQL is the source, enable Binlog and set the following Binlog parameters:

    • binlog_format=ROW

    • binlog_row_image=FULL

      tip

      If the source data source is a standby database, enable log_slave_updates so NineData can obtain the complete Binlog.

Restrictions​

  • Data replication applies only to user databases in the data source. System databases are not replicated. For example, MySQL system databases such as information_schema, mysql, performance_schema, and sys are not replicated.
  • The source account must have SELECT privileges for schema and full data replication, SHOW VIEW privileges for view replication, and REPLICATION CLIENT and REPLICATION SLAVE privileges for incremental replication. The target account must have DML and DDL privileges.
  • Before starting data synchronization, evaluate the performance of the source and target data sources. Run synchronization during off-peak hours when possible. Otherwise, full data initialization consumes read and write resources on both data sources and increases database load.
  • If the source data source contains views, functions, stored procedures, triggers, or events, the definer information of these objects is changed on the target data source to the account used by the current synchronization task to access the target data source.
  • Make sure every table in the synchronization objects has a primary key or unique constraint, and that column names are unique. Otherwise, duplicate rows may be synchronized.
  • If triggers exist in the source data source, NineData synchronizes the triggers only after incremental synchronization ends.

Procedure​

  1. Sign in to the NineData Console.

  2. In the left navigation pane, click Replication > Data Replication.

  3. On the Replication page, click Create Replication.

  4. On the Source & Target tab, configure the fields in the table, and click Next.

    Parameter
    Description
    NameEnter a name for the data synchronization task. To make the task easier to find and manage later, use a meaningful name. Up to 64 characters are supported.
    SourceThe data source that contains the objects to synchronize.
    TargetThe data source that receives the synchronized objects.
    Target Object NameSelect the case conversion rule for object names after they are migrated from the source to the target.
    • Convert all to Lowercase: Regardless of the naming rule on the source, all target names are lowercase.
    • Consistent with Source: Keep the naming rule of the source.
    • Convert all to Uppercase: Regardless of the naming rule on the source, all target names are uppercase.
    Replication ModeSelect the replication mode.
    • Uni-directional: A unidirectional data replication task from the source data source to the target data source.
    • Bi-directional: A bidirectional incremental data replication task between the source and target data sources.
    TypeRequired when Replication Mode is Bi-directional.Select the replication type.
    • Schema: Synchronize only the database and table schemas of the source data source, without synchronizing data.
    • Full: Synchronize all objects and data from the source data source, namely full data replication. The switch on the right enables periodic full replication. For more information, see Periodic Full Replication.
    • Incremental: After full synchronization completes, perform incremental synchronization based on the logs of the source data source.The setting icon is used to configure incremental operation types. Clear the operation types to exclude. Cleared operation types will be ignored during incremental synchronization.
    Forward TypeRequired when Replication Mode is Bi-directional. Select the forward replication type.
    • Schema: Synchronize only the database and table schemas of the source data source, without synchronizing data.
    • Full: Synchronize all objects and data from the source data source, namely full data replication.
    • Incremental: After full synchronization completes, perform incremental synchronization based on the logs of the source data source.The setting icon is used to configure incremental operation types. Clear the operation types to exclude. Cleared operation types will be ignored during incremental synchronization.
    Incremental StartedRequired only when Type is Incremental.
    • From Started: Use the current replication task start time as the baseline for incremental replication.
    • Customized Time: Select the point in time from which incremental replication starts. Select a time zone based on the region of your business. If the configured time point is earlier than the current replication task start time and DDL operations occurred during that period, the replication task will fail.
    Forward Incremental StartedRequired only when Forward Type is Incremental.
    • From Started: Use the current replication task start time as the baseline for incremental replication.
    • Customized Time: Select the point in time from which incremental replication starts. Select a time zone based on the region of your business. If the configured time point is earlier than the current replication task start time and DDL operations occurred during that period, the replication task will fail.
    Reverse TypeThe replication type from the target data source to the source data source. This parameter is displayed only when Replication Mode is Bi-directional. Only Incremental is supported, and it is selected by default and cannot be disabled.
    SpecThe specification of the replication task. A larger specification provides a higher replication rate. Hover over the details icon to view the rate and configuration information of each specification. If you configure the data replication task before purchasing resources, you can select the required specification here. If you purchase resources before configuring the task, NineData selects the specification specified during purchase, and you cannot change it in the task configuration.
    If target table already exists (Required when Schema is selected)
    • 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 message and continue the task. During schema replication, ignore the table with the same name. If you also perform data replication, data is appended to the table with the same name and existing data is not overwritten.
    • Delete Objects and Rewrite: When a table with the same name is detected during the precheck stage, display a message and continue the task. During schema replication, delete the table with the same name in the target database and replicate the table schema again based on the source database. If you also perform data replication, data is written after schema replication completes.
    Target Table Exists Data (Required when Full is selected)
    • Pre-Check Error and Stop Task: Stop the task when data is detected in the target table during the precheck stage.
    • Ignore existing target data and append to it.: When data is detected in the target table during the precheck stage, ignore that data and append other data.
    • Clear target existing data before write: When data is detected in the target table during the precheck stage, delete that data and write it again.
    Incremental data conflict handling strategy for target table (Required when Incremental is selected)
    • Runtime error: During incremental replication, report an error when target data already exists and wait for manual intervention.
    • Do not update target data: During incremental replication, do not write data when target data already exists, and continue subsequent tasks.
    • Update target data: During incremental replication, overwrite the target data when target data already exists.
  5. On the Objects tab, configure the parameters in the table, and click Next.

    Parameter
    Description
    Replication ObjectsSelect the content to replicate. Select All Objects to replicate all content in the source database, or select Customized Object, select the content to replicate in the Source Object list, and click > to add it to the Target Object list on the right.
    BlacklistClick Add to add a blacklist record, and select the database or object to add to the blacklist. The selected content will not be replicated. This is used to exclude specific databases or objects when performing full-database replication for Customized Object or Full Instance.
    • Left drop-down list: Select the database name to add to the blacklist.
    • Right drop-down list: Select objects in the corresponding database. Select multiple objects if required. Leave it empty to add the entire database to the blacklist.
    To add multiple databases to the blacklist, click the Add button below to add another row.

    To create multiple replication tasks with the same replication objects, import a configuration file. Click Import Config, click Download Template to download the template, edit the file, and then click Upload to upload it and import the objects in bulk. For field descriptions and examples, see Import Replication Object Templates. The configuration file uses these fields:

    Parameter
    DescriptionExample
    source_table_nameThe exact source table name of the object to synchronize.example_tbl_name
    target_table_nameThe target table name that receives the synchronized object.example_tbl_name
    source_database_nameThe source database name of the object to synchronize.test_db
    target_database_nameThe target database name that receives the synchronized object.test_db_bak
    column_listThe list of columns to synchronize.["col1", "clo2", "col3"]
    extra_configurationA JSON string containing additional configuration. Use column_rules for column mappings and value rules: column_name is the source column, target_column_name is the target column, target_column_type is the target column type, and column_value is the column value. Use filter_condition for row-level filtering.{"extra_config": {"column_rules": [...]}}
    tip

    The following JSON represents the two example rows in the downloaded Excel template. When uploading the file, keep the Excel column names and enter the extra_configuration value as a JSON string. This code block is not a JSON file that you can upload directly.

    [
    {
    "source_table_name": "example_tbl_name",
    "target_table_name": "example_tbl_name",
    "source_database_name": "test_db",
    "target_database_name": "test_db_bak",
    "column_list": ["col1", "clo2", "col3"],
    "extra_configuration": {
    "extra_config": {
    "column_rules": [
    {
    "column_name": "example_column_name",
    "target_column_name": "example_target_column_name",
    "target_column_type": "int",
    "column_value": "current_timestamp()"
    },
    {
    "column_name": "example_column_name",
    "target_column_name": "example_target_column_name",
    "target_column_type": "int"
    }
    ],
    "filter_condition": "example_condition_expression"
    }
    }
    },
    {
    "source_table_name": "example_order_tbl",
    "target_table_name": "example_order_tbl",
    "source_database_name": "test_db",
    "target_database_name": "test_db_bak",
    "column_list": ["col1", "clo2", "col3"],
    "extra_configuration": {
    "extra_config": {
    "column_rules": [
    {
    "column_name": "example_column_name",
    "target_column_name": "example_target_column_name",
    "target_column_type": "int",
    "column_value": "current_timestamp()"
    },
    {
    "column_name": "example_column_name",
    "target_column_name": "example_target_column_name",
    "target_column_type": "int"
    }
    ],
    "filter_condition": "example_condition_expression"
    }
    }
    }
    ]
  6. On the Mapping tab, configure the mapping that matches the selected replication type, then click Save and Pre-Check. If source or target metadata changes while you configure mappings, click Refresh Metadata to refresh the metadata.

    • Includes Schema: Configure the table name after synchronization to the target data source.

    • Does not include Schema: NineData selects the database with the same name in the target data source by default. If no such database exists, select the target database manually. The table names and column names in the target database must match the synchronization objects. If they do not match, map the table names and column names manually.

    Other available actions:

    • Click Mapping & Filtering to customize the column names after synchronization to the target data source.
    • On the Mapping & Filtering page, enter a comparison expression in the text box below Data Filter as the filtering condition. Only data that meets the filtering conditions is synchronized to the target data source. For example, if the filtering condition is set to emp_no>=10005, data whose emp_no column value is less than 10005 is not synchronized to the target data source.
    • Click the replace_tablename icon to the right of "Target Table" to search for a table name and replace it with the target name.
    • Enter a table name in the Search Table text box to quickly locate the target table.
    • Click Batch Configuration to define common rules in batches, such as table name and column name case conversion, prefix or suffix addition, and replacement. Use this option to apply mapping configuration to many tables and columns at the same time.
  1. On the Pre-check tab, wait for the precheck to finish. After it passes, open the saved task's details from the replication task list and start the task.

    • Select Enable data consistency comparison to start a data consistency comparison task based on the source data source after synchronization completes. Based on the selected Type, Enable data consistency comparison starts at these times:

      • Schema: Starts after schema replication completes.
      • Schema+Full: Starts after full replication completes.
      • Full: Starts after full replication completes.
      • Schema+Full+Incremental, Incremental: Starts when incremental data is consistent with the source data source for the first time and Delay is 0 seconds. Click View Details to view synchronization delay on the Details page. sync_delay
    • If the precheck fails, click Details in the Actions column for the failed check item, review the cause, fix the issue, and then click Check Again to run the precheck again until it passes.

    • Items with Warning in Result can be fixed or ignored if required.

  2. After the replication task starts, you can perform the following actions:

    • Click View Details to view the execution status of each stage of the synchronization task.
    • Click Back to list to return to the Replication task list page.

Modify incremental synchronization positions​

For a task whose replication type includes Incremental and whose task details provide position management, you can view and modify synchronization positions. The available position types and input format depend on the data source and replication link. Follow the options displayed for the current task. If a position is shown as - or no position type is available for selection, the current task has no position available for modification.

This feature is intended for specific operations and maintenance scenarios where you need to specify a new log-read position or synchronization-write position for an incremental task. The read position controls where the task continues reading from the source, while the write position controls where it continues processing synchronized writes. After you submit the change, the task pauses and restarts so that the new position can take effect.

  1. In the replication task list, click the Task ID of the target task to open its details.

  2. On the Incremental tab, click Synchronous site management to view the current read site and write site.

  3. Click modify site. Under site type, select the read site or write site to adjust, and then enter the value for Adjustment point according to the position type displayed for the task.

  4. Confirm the value and scope of impact, and click Verify and submit. The task enters a pause and relaunch process. After the task resumes running, open Synchronous site management again to confirm that the position has been updated.

danger

Modifying the synchronization point will adjust the point of log reading or synchronization writing, which may cause data loss, so operate with caution! Modifying either position may cause data loss or inconsistency between the source and target. Perform this operation only in an authorized test environment or during a maintenance window with a backup and rollback plan. A task whose incremental replication has finished cannot have its position reset.

Result​

  1. Sign in to the NineData Console.

  2. In the navigation menu, select Replication > Data Replication.

  3. On the Replication page, click the Task ID of the target synchronization task. The task details page shows the following information.

    result

    Number
    Function
    Description
    1Sync DelayThe synchronization delay between the source and target data sources. 0 seconds means the target has caught up with the source. Switch traffic based on your migration plan.
    2Configure AlertsWhen the task fails, NineData notifies the selected channel through the configured alert.
    3More
    • 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: Terminate tasks that are incomplete or still listening (that is, in incremental synchronization). After a task is terminated, it cannot be restarted, so proceed with caution. If the replication objects include triggers or events, the dialog displays termination options for the applicable object type:
      • Migrate triggers and terminate or Migrate events and terminate: Migrate the applicable objects to the target data source before terminating the task.
      • Do not migrate triggers; terminate immediately or Do not migrate events; terminate immediately: Terminate the task immediately without migrating the applicable objects.
    • Delete: Delete the task. Once deleted, it cannot be recovered, so proceed with caution.
    4Structure Replication (displayed in scenarios involving structure replication)Displays the progress and detailed information of structure replication.
    • Select Log to view the execution logs of structure replication.
    • Select the refresh to view the latest information.
    • Select View DDL in the Actions column for the target object in the list to view SQL replay.
    5Full Replication (displayed in scenarios involving full replication)Displays the progress and detailed information of full replication.
    • Select Monitor to view various monitoring indicators during full replication. During full replication, select Flow Control Settings on the monitoring page to limit the rate of writing to the target data source per second. The unit is rows/second.
    • Select Log to view the execution logs of full replication.
    • Select the refresh to view the latest information.
    6Incremental Replication (displayed in scenarios involving incremental replication)Displays incremental replication indicators.
    • Select View Threads to view the operations currently being executed by the current replication task, including:
      • Thread ID: Replication tasks are executed in multiple threads, and this shows the current thread number.
      • 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.
    • Select Flow Control Settings to limit the rate of writing to the target data source per second. The unit is rows/second.
    • Select Log to view the execution logs of incremental replication.
    • Select the refresh to view the latest information.
    7Modify ObjectDisplays the modification records of synchronization objects.
    • Select Modify Objects to configure the synchronization objects.
    • Select the refresh to view the latest information.
    8Data ComparisonDisplays the comparison results between the source and target data sources. If data comparison is not enabled, select Enable Comparison on the page to enable it.
    • Select Re-compare to rerun the comparison for the current source and target data sources.
    • Select Stop to stop the comparison task immediately after it starts.
    • Select Log to view the execution logs of consistency comparison.
    • Select Monitor (displayed only in data comparison) to view the trend chart of RPS (records per second) comparison. Select Details to view earlier records.
    • Select the details in the Actions column in the comparison list (displayed under the Data tab only when inconsistencies are found) to view details of the comparison between the source and target data sources.
    • Select the sql in the Actions column in the comparison list (displayed only when inconsistencies are found): Generate SQL to address the mismatch. The SQL may modify data on the target. Before running it, manually review each statement, target object, and impact scope, and confirm a target backup or an applicable rollback plan. Run the statements in the reviewed order; do not execute generated SQL in bulk without review.
    9ExpandDisplays detailed information of the current replication task. Common actions:
    • Export table configuration: Export the current task's database and table configuration for quick import when creating another replication task with the same objects.
    • Alert Rules: Configure alerts for the current task.

Next steps​

Introduction to data replication

Import Replication Object Templates