NineData数据复制
NineData数据复制
NineData 数据复制支持两个数据源之间的全量数据同步和增量数据同步。
功能说明
NineData 支持多种数据源之间的数据复制功能,功能的具体支持情况请参见下表。
• 单向复制
• 双向复制
源数据源 | 目标数据源 | 结构复制 | 全量复制 | 增量复制 | 结构对比 | 数据对比 | 增量对比 |
MySQL | MySQL | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
MySQL | Oracle | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | PostgreSQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | SQL Server | - | ✔️ | ✔️ | - | ✔️ | - |
MySQL | TiDB | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | KingBase | ✔️ | ✔️ | ✔️ | - | ✔️ | ✔️ |
MySQL | GaussDB | ✔️ | ✔️ | - | - | ✔️ | - |
MySQL | DWS | - | ✔️ | - | - | ✔️ | - |
MySQL | ClickHouse | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | ADB PostgreSQL | ✔️ | ✔️ | ✔️ | - | - | - |
MySQL | Greenplum | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | Redshift | - | ✔️ | ✔️ | - | - | - |
MySQL | Doris | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | SelectDB | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | SingleStore | - | ✔️ | - | - | ✔️ | - |
MySQL | DB2 | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | Elasticsearch | ✔️ | ✔️ | ✔️ | - | - | - |
MySQL | Kafka | - | ✔️ | ✔️ | - | - | - |
MySQL | Hive | ✔️ | ✔️ | - | - | ✔️ | - |
MySQL | 库分组 | - | ✔️ | - | - | ✔️ | - |
MySQL | DataHub | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
MySQL | polardbx | - | ✔️ | ✔️ | ✔️ | ✔️ | - |
Oracle | Oracle | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
Oracle | MySQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | PostgreSQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | TiDB | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | 达梦 | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | KingBase | ✔️ | ✔️ | ✔️ | - | ✔️ | ✔️ |
Oracle | GaussDB | ✔️ | ✔️ | - | - | ✔️ | - |
Oracle | DWS | - | ✔️ | - | - | ✔️ | - |
Oracle | ClickHouse | ✔️ | ✔️ | - | - | ✔️ | - |
Oracle | ADB PostgreSQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | OB-Oracle | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
Oracle | Greenplum | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | Doris | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | SelectDB | - | ✔️ | - | - | ✔️ | - |
Oracle | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | SingleStore | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | Kafka | - | ✔️ | ✔️ | - | - | - |
Oracle | Hive | ✔️ | ✔️ | - | - | ✔️ | - |
Oracle | DataHub | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Oracle | polardboracle | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | PostgreSQL | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
PostgreSQL | MySQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | Oracle | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | SQL Server | - | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | TiDB | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | GaussDB | ✔️ | ✔️ | - | - | ✔️ | - |
PostgreSQL | DWS | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
PostgreSQL | ClickHouse | ✔️ | ✔️ | - | - | ✔️ | - |
PostgreSQL | ADB PostgreSQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | Greenplum | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | Doris | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | SelectDB | - | ✔️ | - | - | ✔️ | - |
PostgreSQL | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | SingleStore | - | ✔️ | - | - | ✔️ | - |
PostgreSQL | Sybase | - | ✔️ | ✔️ | - | ✔️ | - |
PostgreSQL | Kafka | - | ✔️ | ✔️ | - | - | - |
PostgreSQL | Hive | ✔️ | ✔️ | - | - | ✔️ | - |
SQL Server | SQL Server | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
SQL Server | MySQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
SQL Server | PostgreSQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
SQL Server | Doris | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
SQL Server | SelectDB | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
SQL Server | StarRocks | - | ✔️ | ✔️ | - | ✔️ | - |
SQL Server | Kafka | - | ✔️ | ✔️ | - | - | - |
SQL Server | sqldatabase | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
TDSQL MySQL | MySQL | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
TDSQL MySQL | Doris | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
TDSQL MySQL | Kafka | - | ✔️ | ✔️ | - | - | - |
TiDB | TiDB | ✔️ | ✔️ | - | - | ✔️ | - |
TiDB | MySQL | ✔️ | ✔️ | - | - | ✔️ | - |
TiDB | Oracle | ✔️ | ✔️ | - | - | ✔️ | - |
TiDB | PostgreSQL | ✔️ | ✔️ | - | - | ✔️ | - |
TiDB | ClickHouse | ✔️ | ✔️ | - | - | ✔️ | - |
TiDB | ADB PostgreSQL | ✔️ | ✔️ | - | - | ✔️ | - |
TiDB | Greenplum | ✔️ | ✔️ | - | - | ✔️ | - |
TiDB | Hive | ✔️ | ✔️ | - | - | ✔️ | - |
KingBase | KingBase | ✔️ | ✔️ | - | ✔️ | ✔️ | - |
KingBase | MySQL | ✔️ | ✔️ | - | - | ✔️ | - |
KingBase | Oracle | ✔️ | ✔️ | - | - | ✔️ | - |
KingBase | PostgreSQL | ✔️ | ✔️ | - | ✔️ | ✔️ | - |
KingBase | Doris | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
openGauss | GaussDB | ✔️ | ✔️ | - | - | ✔️ | - |
openGauss | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
openGauss | DataHub | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
GaussDB | GaussDB | ✔️ | ✔️ | - | - | ✔️ | - |
GaussDB | MySQL | ✔️ | ✔️ | - | - | ✔️ | - |
GaussDB | Oracle | ✔️ | ✔️ | - | - | ✔️ | - |
GaussDB | PostgreSQL | ✔️ | ✔️ | - | - | ✔️ | - |
GaussDB | openGauss | ✔️ | ✔️ | - | - | ✔️ | - |
GaussDB | DWS | ✔️ | ✔️ | - | - | ✔️ | - |
GaussDB | Doris | ✔️ | ✔️ | - | - | ✔️ | - |
GaussDB | SelectDB | ✔️ | ✔️ | - | - | ✔️ | - |
GaussDB | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
GaussDB | DataHub | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DWS | DWS | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DWS | GaussDB | ✔️ | ✔️ | - | - | ✔️ | - |
DWS | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DWS | DataHub | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
ClickHouse | ClickHouse | ✔️ | ✔️ | - | - | ✔️ | - |
ClickHouse | MySQL | - | ✔️ | - | - | ✔️ | - |
ClickHouse | Oracle | - | ✔️ | - | - | ✔️ | - |
ClickHouse | PostgreSQL | - | ✔️ | - | - | ✔️ | - |
ClickHouse | Greenplum | - | ✔️ | - | - | ✔️ | - |
ClickHouse | Doris | - | ✔️ | - | - | ✔️ | - |
ClickHouse | SelectDB | - | ✔️ | - | - | ✔️ | - |
ClickHouse | StarRocks | - | ✔️ | - | - | ✔️ | - |
ADB PostgreSQL | ADB PostgreSQL | ✔️ | ✔️ | - | - | ✔️ | - |
ADB PostgreSQL | MySQL | ✔️ | ✔️ | - | - | ✔️ | - |
ADB PostgreSQL | Oracle | ✔️ | ✔️ | - | - | ✔️ | - |
ADB PostgreSQL | PostgreSQL | ✔️ | ✔️ | - | - | ✔️ | - |
ADB PostgreSQL | TiDB | ✔️ | ✔️ | - | - | ✔️ | - |
OB-MySQL | OB-MySQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
OB-MySQL | MySQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
OB-MySQL | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
OB-MySQL | Kafka | - | ✔️ | ✔️ | - | - | - |
OB-MySQL | DataHub | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
OB-Oracle | OB-Oracle | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
OB-Oracle | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
OB-Oracle | Kafka | - | ✔️ | ✔️ | - | - | - |
OB-Oracle | DataHub | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Greenplum | Greenplum | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Greenplum | MySQL | ✔️ | ✔️ | - | - | ✔️ | - |
Greenplum | Oracle | ✔️ | ✔️ | - | - | ✔️ | - |
Greenplum | PostgreSQL | ✔️ | ✔️ | - | - | ✔️ | - |
Greenplum | TiDB | ✔️ | ✔️ | - | - | ✔️ | - |
Greenplum | ClickHouse | - | ✔️ | - | - | ✔️ | - |
Greenplum | Doris | - | ✔️ | - | - | ✔️ | - |
Greenplum | SelectDB | - | ✔️ | - | - | ✔️ | - |
Greenplum | StarRocks | - | ✔️ | - | - | ✔️ | - |
Greenplum | SingleStore | - | ✔️ | - | - | ✔️ | - |
Greenplum | Hive | ✔️ | ✔️ | - | - | ✔️ | - |
SelectDB | SelectDB | - | ✔️ | - | - | ✔️ | - |
SelectDB | MySQL | - | ✔️ | - | - | ✔️ | - |
SelectDB | Oracle | - | ✔️ | - | - | ✔️ | - |
SelectDB | PostgreSQL | - | ✔️ | - | - | ✔️ | - |
SelectDB | ClickHouse | - | ✔️ | - | - | ✔️ | - |
SelectDB | Greenplum | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
SelectDB | Doris | - | ✔️ | - | - | ✔️ | - |
SelectDB | StarRocks | - | ✔️ | - | - | ✔️ | - |
SelectDB | SingleStore | - | ✔️ | - | - | ✔️ | - |
StarRocks | StarRocks | - | ✔️ | - | - | ✔️ | - |
StarRocks | MySQL | - | ✔️ | - | - | ✔️ | - |
StarRocks | Oracle | - | ✔️ | - | - | ✔️ | - |
StarRocks | PostgreSQL | - | ✔️ | - | - | ✔️ | - |
StarRocks | ClickHouse | - | ✔️ | - | - | ✔️ | - |
StarRocks | Greenplum | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
StarRocks | Doris | - | ✔️ | - | - | ✔️ | - |
StarRocks | SelectDB | - | ✔️ | - | - | ✔️ | - |
StarRocks | SingleStore | - | ✔️ | - | - | ✔️ | - |
SingleStore | SingleStore | - | ✔️ | - | - | ✔️ | - |
SingleStore | MySQL | - | ✔️ | - | - | ✔️ | - |
SingleStore | Oracle | - | ✔️ | - | - | ✔️ | - |
SingleStore | PostgreSQL | - | ✔️ | - | - | ✔️ | - |
SingleStore | ClickHouse | - | ✔️ | - | - | ✔️ | - |
SingleStore | Greenplum | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
SingleStore | Doris | - | ✔️ | - | - | ✔️ | - |
SingleStore | SelectDB | - | ✔️ | - | - | ✔️ | - |
SingleStore | StarRocks | - | ✔️ | - | - | ✔️ | - |
DB2 | DB2 | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | MySQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | Oracle | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | PostgreSQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | SQL Server | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | TiDB | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | KingBase | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | openGauss | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | GaussDB | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | ClickHouse | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | ADB PostgreSQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | OB-MySQL | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | Greenplum | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | Redshift | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | Doris | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | SelectDB | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | StarRocks | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
DB2 | Sybase | ✔️ | ✔️ | ✔️ | - | ✔️ | - |
Redis | Redis | - | ✔️ | ✔️ | - | ✔️ | - |
MongoDB | MongoDB | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
Sybase | PostgreSQL | - | ✔️ | ✔️ | - | ✔️ | - |
Kafka | Kafka | - | - | ✔️ | - | - | - |
Kafka | MySQL | - | - | ✔️ | - | - | - |
Kafka | ClickHouse | - | - | ✔️ | - | - | - |
Hive | Hive | ✔️ | ✔️ | - | - | - | - |
Hive | MySQL | ✔️ | ✔️ | - | - | ✔️ | - |
Hive | Oracle | ✔️ | ✔️ | - | - | ✔️ | - |
Hive | PostgreSQL | ✔️ | ✔️ | - | - | ✔️ | - |
Hive | TiDB | ✔️ | ✔️ | - | - | ✔️ | - |
Hive | Greenplum | ✔️ | ✔️ | - | - | ✔️ | - |
库分组 | 库分组 | - | ✔️ | - | - | ✔️ | - |
库分组 | MySQL | - | ✔️ | - | - | ✔️ | - |
sqldatabase | sqldatabase | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
sqldatabase | SQL Server | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - |
polardbx | polardbx | - | ✔️ | - | - | ✔️ | - |
源数据源 | 目标数据源 | 结构复制 | 全量复制 | 增量复制 |
MySQL | MySQL | ✔️ | ✔️ | ✔️ |
MySQL | Oracle | ✔️ | ✔️ | ✔️ |
MySQL | polardbx | - | ✔️ | ✔️ |
Oracle | MySQL | ✔️ | ✔️ | ✔️ |
SQL Server | SQL Server | ✔️ | ✔️ | ✔️ |
SQL Server | sqldatabase | ✔️ | ✔️ | ✔️ |
OB-MySQL | OB-MySQL | ✔️ | ✔️ | ✔️ |
OB-Oracle | OB-Oracle | ✔️ | ✔️ | ✔️ |
Redis | Redis | - | ✔️ | ✔️ |
Sybase | PostgreSQL | - | ✔️ | ✔️ |
sqldatabase | sqldatabase | ✔️ | ✔️ | ✔️ |
sqldatabase | SQL Server | ✔️ | ✔️ | ✔️ |
通常,完整的单向数据复制过程包括三个阶段:
1. 结构复制:将源数据源中的库表结构同步到目标数据源。
2. 全量数据复制:将源数据源中的数据全量同步到目标数据源。
3. 增量数据复制:将源数据源中正在进行的数据变更实时同步到目标数据源。
双向复制在上述单向复制流程的基础上,增加了从目标数据源到源数据源方向的增量复制。
复制完成后,您可以先对目标数据源中的数据和结构进行兼容性验证,验证通过后即可将业务切换至目标数据源,实现平滑迁移。
同时,上述三个阶段均可单独进行,但是如果在不执行结构复制的情况下单独执行全量复制或增量复制,则目标数据源中必须包含源数据源中目标表的结构。
提示在不勾选全量复制的情况下,结构复制和增量数据复制不可一起进行。
前提条件
• 已将源数据源和目标数据源添加至 NineData。如何添加,请参见添加数据源。
• 双向复制的情况下,建议源数据源和目标数据源的版本保持一致。
• 不包含结构复制的场景下,目标数据源中必须包含源数据源中目标表的结构。例如,将 A 数据源中 A 表的增量数据复制到 B 数据源,则 B 数据源中必须包含 A 表,且表结构需要和 A 数据源中的 A 表一致。
使用限制
• 数据复制功能仅针对数据源中的用户数据库,系统库不会被复制。例如:MySQL 类型数据源中的 information_schema、mysql、performance_schema、sys 库不会被复制。
• 源数据源的账号必须拥有复制对象的 SELECT 权限(结构复制、全量复制)、SHOW VIEW权限(视图复制)以及 REPLICATION CLIENT、REPLICATION SLAVE 权限(增量复制),目标数据源的账号必须拥有DML、DDL权限。
• 执行数据同步前需评估源数据源和目标数据源的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源数据源和目标数据源一定的读写资源,导致数据库负载上升。
• 同步过程中,如果源数据源中包含视图(VIEW)、函数(FUNCTION)、存储过程(PROCEDURE)、触发器(TRIGGER)、事件(EVENT),则同步到目标数据源后,上述对象的定义者(DEFINER)信息将在目标数据源中被修改为当前同步任务中访问目标数据源的账号。
• 需要确保同步对象中的每张表都有主键或唯一约束、列名具有唯一性,否则可能会重复同步相同数据。
• 同步过程中,如果源数据源存在触发器,则系统会在增量同步结束以后才会同步触发器。
操作步骤
创建复制任务时,仅可选择您已购买的复制规格,未购买的规格将以灰度显示,无法选择。
1. 登录 NineData 控制台。
2. 在左侧导航栏单击数据复制 > 数据复制。
3. 在数据复制页面,单击右上角的创建复制。
4. 在数据源与目标页签,按照下表进行配置,并单击下一步。
参数 | 说明 |
任务名称 | 输入数据同步任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。 |
源数据源 | 同步对象所在的数据源。 |
目标数据源 | 接收同步对象的数据源。 |
复制方式 | 选择复制方式。 |
- 单向复制:从源数据源到目标数据源方向的单向数据复制任务。
- 双向复制:源和目标两个数据源之间进行的双向增量数据复制任务。
复制类型
仅在复制方式为单向复制时显示。
- 结构复制:只同步源数据源的库表结构,不同步数据。
- 全量复制:同步源数据源的所有对象和数据,即全量数据复制。右侧的开关为周期性全量复制的开关,更多信息,请参见周期性全量复制。
- 增量复制:在全量同步完成后,基于源数据源的日志进行增量同步。单击
图标,可以根据需求取消勾选某一些操作类型,取消勾选后,这些操作会在增量同步中被忽略。
正向复制类型
源数据源到目标数据源方向的复制类型,仅在复制方式为双向复制时显示。可选项请参见上述复制类型,其中增量复制默认选中,无法关闭。单击图标,可以根据需求取消勾选某一些操作类型,取消勾选后,这些操作会在增量同步中被忽略。
正向增量开始时间
复制方式为双向复制,且正向复制类型仅为增量复制时需要选择。
- 从启动时间开始:以当前复制任务开始时间为基准,进行增量复制。
- 自定义时间:选择增量复制开始的时间点,您可以根据您的业务所在地域按需选择时区。如果将时间点配置为当前复制任务开始前,则如果该时间段内有 DDL 操作,复制任务将失败。
反向复制类型
目标数据源到源数据源方向的复制类型,仅在复制方式为双向复制时显示。仅支持增量复制,且默认选中无法关闭。
支持 DDL 复制
增量复制时,是否复制 DDL 操作,仅在复制方式为双向复制时显示。
- 正向复制支持,反向不支持:源数据源中的增量 DDL 操作将同步到目标数据源。该场景下请不要在反向任务(目标数据源)中做 DDL 操作,否则任务可能报错。
- 均不支持:所有增量的 DDL 操作都不会同步。该场景下请不要在源或目标数据源中做 DDL 操作,否则任务可能报错。
增量开始时间
复制方式为单向复制,且复制类型仅为增量复制时需要选择。
- 从启动时间开始:以当前复制任务开始时间为基准,进行增量复制。
- 自定义时间:选择增量复制开始的时间点,您可以根据您的业务所在地域按需选择时区。如果将时间点配置为当前复制任务开始前,则如果该时间段内有 DDL 操作,复制任务将失败。
目标库同名对象处理策略(选中结构复制时需要选择)
- 预检查报错并停止任务:预检查阶段检测到同名表时,停止任务。
- 跳过并继续任务:预检查阶段检测到同名表时,发送提示并继续任务。 结构复制时,忽略该同名表。如果您同时进行了数据复制,则数据会在同名表中追加,而不会覆盖原有数据。
- 删除对象并重建:预检查阶段检测到同名表时,发送提示并继续任务。结构复制时,删除目标库同名表,并基于源库重新复制表结构。如果您同时进行了数据复制,则数据会在表结构复制完成后写入。
- 保留结构并清空数据,再覆盖写入(同时进行结构和数据复制时可选):预检查阶段检测到同名表时,发送提示并继续任务。结构复制时在目标库保留该表结构,并在数据复制开始时清空同名表中的数据,然后重新从原表中复制。
目标表存量数据处理策略(未选中结构复制时需要选择)
- 预检查报错并停止任务:预检查阶段检测到目标表中存在数据时,停止任务。
- 忽略存量数据,追加写入:预检查阶段检测到目标表中存在数据时,忽略该部分数据,追加写入其他数据。
- 清空存量数据,重新写入:预检查阶段检测到目标表中存在数据时,删除该部分数据,重新写入。
5. 在选择复制对象页签,配置下列参数,然后单击下一步。
参数 | 说明 |
复制对象 | 选择需要复制的内容,您可以选择全部实例复制源库所有内容,也可以选择自定义对象,在源对象列表中选中需要复制的内容,单击>添加到右侧目标对象列表。 |
黑名单(可选) | 单击添加增加一条黑名单记录,选择需要加入黑名单的库或对象,这些内容都不会被复制。用于在自定义对象的全库复制或全实例复制中排除某些库或对象。 |
- 左侧下拉框:选择需要加入黑名单的库名。
- 右侧下拉框:选择对应库中的对象,您可以单击多个对象进行多选,留空则将整个数据库加入黑名单。
如果要将多个库加入黑名单,您可以单击下方的添加按钮增加一行。
如果您需要创建多条相同复制对象的复制链路,可以创建一个配置文件,在新建任务的时候导入即可。单击右上角的导入配置,再单击下载模板,将配置文件模版下载到本地,编辑完成后单击上传文件上传该配置文件即可实现批量导入。配置文件说明:
参数 | 说明 |
source_table_name | 需同步的对象所在的源表名。 |
destination_table_name | 接收同步对象的目标表名。 |
source_schema_name | 需同步的对象所在的源 Schema 名。 |
destination_schema_name | 接收同步对象的目标 Schema 名。 |
source_database_name | 需同步的对象所在的源库名。 |
target_database_name | 接收同步对象的目标库名。 |
column_list | 需要同步的字段列表。 |
extra_configuration | 额外的配置信息,您可以在这里配置如下信息: |
- column_rules:用于定义字段的映射关系与取值规则。字段说明:
- column_name:原列名。
- destination_column_name:指定目标列名。
- column_value:指定字段值,可为 SQL 函数或常量值。
- filter_condition:用于指定行级数据的过滤条件,只有满足条件的行会被复制。
提示
- extra_configuration 的示例内容如下:{
"extra_config":{
"column_rules":[
{
"column_name": "created_time", //指定需要执行列名映射的原列名。
"destination_column_name": "migrated_time", //目标列名映射为 "migrated_time"。
"column_value": "current_timestamp()" //将列的字段取值更改为当前时间戳。
}
],
"filter_condition": "id != 0" //ID 不为 0 的行才会同步。
}
} - 配置文件的整体示例内容请参见下载的模版。
6. 在配置映射页签,根据所选的复制类型选择不同操作。如果在配置映射阶段,源和目标数据源中有更新,可以单击页面右上角的刷新元数据按钮,重新获取源和目标数据源的信息。
• 包含结构复制:配置目标表同步到目标数据源之后的表名,单击保存并预检查。
• 不包含结构复制:系统默认选择目标数据源中的同名数据库,如果不存在,则需要手动选择目标库。目标库中的表名、列名需要和同步对象一致。如果不一致,您也可以手动进行表名和列名的映射。
您可以单击页面右侧的映射与过滤,自定义列名同步到目标数据源之后的名称。除此之外,您还可以设置数据过滤条件,仅符合过滤条件的数据会同步到目标数据源。以测试数据 employees 表为例,将过滤条件设置为 emp_no>=10005,则 emp_no 列中小于 10005 的数据均不会同步到目标数据源。
7. 在预检查页签,等待系统完成预检查,预检查通过后,单击启动任务。
提示
- 您可以勾选开启数据一致性对比。在同步任务完成后,自动开启基于源数据源的数据一致性对比,保证两端数据一致。根据您选择的复制类型,开启数据一致性对比的启动时机如下:
- 结构复制:结构复制完成后启动。
- 结构复制+全量复制、全量复制:全量复制完成后启动。
- 结构复制+全量复制+增量复制、增量复制:当增量数据首次和源数据源一致且延迟为 0 秒时启动。您可以单击查看详情,在复制详情页面中查看同步延迟。
- 如果预检查未通过,需要单击目标检查项右侧操作列的详情,排查失败的原因,手动修复后单击重新检查重新执行预检查,直到通过。
- 检查结果为警告的检查项,可视具体情况修复或忽略。
8. 在启动任务页面,提示启动成功,同步任务开始运行。此时您可以进行如下操作:
• 单击查看详情查看同步任务各个阶段的执行情况。
• 单击返回列表可以返回数据复制任务列表页面。
查看同步结果
1. 登录 NineData 控制台。
2. 在左侧导航栏单击数据复制 > 数据复制。
3. 在数据复制页面单击目标同步任务的任务 ID,页面说明如下。
序号 | 功能 | 说明 |
1 | 同步延迟 | 源数据源和目标数据源之间的数据同步延迟,0 秒表示两端之间没有延迟,此时您可以选择将业务切换到目标数据源,实现平滑迁移。 |
2 | 配置告警 | 配置告警后,系统会在任务失败时通过您选择的方式通知您。更多信息,请参见运维监控简介。 |
3 | 更多 |
- 暂停:暂停任务,仅状态为运行中的任务可选。
- 终止:结束未完成或监听中(即增量同步中)的任务,终止任务后无法重启任务,请谨慎操作。如果同步对象中包含触发器,会弹出触发器复制选项,请按需选择。
- 删除:删除任务,任务删除后无法恢复,请谨慎操作。
4
结构复制(包含结构复制的场景下显示)
展示结构复制的进度和详细信息。
- 单击页面右侧的日志:查看结构复制的执行日志。
- 单击页面右侧的
:查看最新的信息。
- 单击列表中目标对象右侧操作列的查看 DDL:可以查看 SQL 回放。
5
全量复制(包含全量复制的场景下显示)
展示全量复制的进度和详细信息。
- 单击页面右侧的监控:查看全量复制过程中的各监控指标。全量复制过程中,还可以单击监控指标页面右侧的限流设置,限制每秒写入到目标数据源的速率。单位为行/秒。
- 单击页面右侧的日志:查看全量复制的执行日志。
- 单击页面右侧的
:查看最新的信息。
6
增量复制(包含增量复制的场景下显示)
展示增量复制的各项监控指标。
- 单击页面右侧的查看线程:查看当前复制任务正在执行中的操作,包含:
- 线程号:复制任务分多个线程执行复制操作,展示当前进行中的线程号。
- 执行 SQL:当前线程正在执行中的 SQL 语句详情。
- 提交响应时间:当前线程的响应时间,如果该数值变大,则代表当前线程可能由于某些原因卡住。
- 事件时间:当前线程开启的时间戳。
- 状态:当前线程的状态。
- 单击页面右侧的限流设置:限制每秒写入到目标数据源的速率。单位为行/秒。
- 单击页面右侧的日志:查看增量复制的执行日志。
- 单击页面右侧的
:查看最新的信息。
7
修改对象
展示同步对象的修改记录。
- 单击页面右侧的修改同步对象,可对同步对象进行配置。
- 单击页面右侧的
:查看最新的信息。
8
数据对比
展示源数据源和目标数据源之间数据对比的结果。包含结构对比和数据对比。如果您未开启数据对比,请单击页面中的开启数据对比。
- 单击页面右侧的重新对比:对当前源和目标两端数据重新发起对比。
- 单击页面右侧的日志:查看一致性对比的执行日志。
- 单击页面右侧的监控(仅数据对比显示):查看对比 RPS(每秒对比的记录数)的走势图。单击详情可以查看更早之前的记录。
- 在对比列表右侧操作列单击
(数据对比页面只在不一致情况下显示):查看源端和目标端的对比详情。
- 在对比列表右侧操作列单击
(不一致情况下显示):生成变更 SQL,您可以直接复制该 SQL 到目标数据源执行,修改不一致的内容。
9
查看反向
仅双向复制任务展示,单击可查看目标数据源到源数据源的复制详情。
10
展开
展示当前复制任务的详细信息,包括复制类型、复制对象、开始时间等。
相关文档
数据复制简介

浙公网安备 33010602011771号