本章介绍实时同步功能。实时同步是指在不同的系统之间,将数据通过同步技术从一个数据源拷贝到其他数据库,并保持一致,实现关键业务的数据实时流动。实时同步不同于迁移,迁移是以整体数据库搬迁为目的,而实时同步是维持不同业务之间的数据持续性流动。
支持的数据库类型
数据复制服务支持多种数据库类型的实时同步,且支持多个源数据库到同一个目标数据库之间的实时同步。
数据库类型
同步方向 | 数据流向 | 源数据库 | 目标数据库 | 目标库实例类型 |
---|---|---|---|---|
入云 | MySQL->MySQL | 本地自建数据库 ECS自建数据库 其他云上数据库 RDS for MySQL |
RDS for MySQL | 单机实例 主备实例 |
入云 | MySQL->DWS | 本地自建数据库 ECS自建数据库 其他云上数据库 RDS for MySQL |
DWS集群 | 集群 |
入云 | MySQL->GaussDB(for MySQL) | 本地自建数据库 ECS自建数据库 其他云上数据库 RDS for MySQL |
GaussDB(for MySQL) | 主备实例 |
入云 | PostgreSQL->PostgreSQL | 本地自建数据库 ECS自建数据库 其他云上数据库 RDS for PostgreSQL |
RDS for PostgreSQL | 单机实例 主备实例 |
入云 | Oracle->DWS | 本地自建数据库 ECS自建数据库 |
DWS集群 | 集群 |
入云 | Oracle->PostgreSQL | 本地自建数据库 ECS自建数据库 |
RDS for PostgreSQL | 单机实例 主备实例 |
入云 | Oracle->MySQL | 本地自建数据库 ECS自建数据库 |
RDS for MySQL | 单机实例 主备实例 |
入云 | Oracle->GaussDB(for MySQL) | 本地自建数据库 ECS自建数据库 |
GaussDB(for MySQL) | 主备实例 |
入云 | Oracle->DRDS | 本地自建数据库 ECS自建数据库 |
DRDS | - |
入云 | DRDS->MySQL | DRDS | RDS for MySQL | 单机实例 主备实例 |
入云 | DRDS->DRDS | DRDS | DRDS | 集群 |
出云 | MySQL->MySQL | RDS for MySQL | 本地自建数据库 ECS自建数据库 其他云上数据库 RDS for MySQL |
- |
出云 | DRDS->MySQL | DRDS | 本地自建数据库 ECS自建数据库 |
单机实例 主备实例 |
自建-自建 | Oracle->Kafka | 本地自建数据库 ECS自建数据库 |
Kafka | 集群 单机 |
自建-自建 | MySQL->Kafka | 本地自建数据库 ECS自建数据库 |
Kafka | 集群 单机 |
支持的同步方式
数据复制服务的同步方式分为全量、增量、全量+增量三种。
全量模式:数据库一次性同步,适用于可中断业务的数据库同步场景,全量同步将非系统数据库的全部数据库对象和数据一次性同步至目标端数据库。
增量模式:通过解析日志等技术,将源端产生的增量数据实时同步至目标端。
全量+增量模式:数据持续性实时同步,通过全量过程完成目标端数据库的初始化后,增量同步阶段通过解析日志等技术,将源端和目标端数据保持数据持续一致。
同步方式
同步方向 | 数据流向 | 增量同步 | 全量同步 | 全量+增量同步 | 单向/双向同步 |
---|---|---|---|---|---|
入云 | MySQL->MySQL | 支持 | 不支持 | 支持 | 支持单向同步 |
入云 | MySQL->GaussDB(for MySQL) | 支持 | 不支持 | 支持 | 支持单向同步 |
入云 | PostgreSQL->PostgreSQL | 支持 | 支持 | 支持 | 支持单向同步 |
入云 | DRDS->MySQL | 不支持 | 不支持 | 支持 | 支持单向同步 |
入云 | DRDS->DRDS | 不支持 | 不支持 | 支持 | 支持单向同步 |
入云 | MySQL->DWS | 支持 | 支持 | 支持 | 支持单向同步 |
入云 | Oracle->DWS | 不支持 | 支持 | 支持 | 支持单向同步 |
入云 | Oracle->PostgreSQL | 不支持 | 支持 | 支持 | 支持单向同步 |
入云 | Oracle->MySQL | 不支持 | 支持 | 支持 | 支持单向同步 |
入云 | Oracle->GaussDB(for MySQL) | 不支持 | 支持 | 支持 | 支持单向同步 |
入云 | Oracle->DRDS | 不支持 | 支持 | 支持 | 支持单向同步 |
出云 | MySQL->MySQL | 支持 | 不支持 | 支持 | 支持单向同步 |
出云 | DRDS->MySQL | 不支持 | 不支持 | 支持 | 支持单向同步 |
自建-自建 | Oracle->Kafka | 支持 | 不支持 | 不支持 | 支持单向同步 |
自建-自建 | MySQL->Kafka | 支持 | 不支持 | 支持 | 支持单向同步 |
支持的数据库版本
说明
不支持从高版本同步到低版本。
数据库版本信息
同步方向 | 数据流向 | 源数据库版本 | 目标数据库版本 |
---|---|---|---|
入云 | MySQL->MySQL | MySQL 5.5.x MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
入云 | MySQL->DWS | MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
以现网版本为准 |
入云 | MySQL->GaussDB(for MySQL) | MySQL 5.5.x MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
GaussDB(for MySQL)-MySQL 8.0 |
入云 | PostgreSQL->PostgreSQL | PostgreSQL 9.4.x PostgreSQL 9.5.x PostgreSQL 9.6.x PostgreSQL 10.x PostgreSQL 11.x PostgreSQL 12.x PostgreSQL 13.x PostgreSQL 14.x |
PostgreSQL 9.5.x PostgreSQL 9.6.x PostgreSQL 10.x PostgreSQL 11.x PostgreSQL 12.x PostgreSQL 13.x PostgreSQL 14.x |
入云 | DRDS->MySQL | 以现网版本为准 | MySQL 5.6.x MySQL 5.7.x |
入云 | DRDS->DRDS | 以现网版本为准 | 以现网版本为准 |
入云 | Oracle->DWS | Oracle 10g Oracle 11g Oracle 12c Oracle 18C Oracle 19C |
以现网版本为准 |
入云 | Oracle->PostgreSQL | Oracle 10g Oracle 11g Oracle 12c Oracle 18C Oracle 19C |
PostgreSQL 9.5.x PostgreSQL 9.6.x PostgreSQL 10.x PostgreSQL 11.x PostgreSQL 12.x |
入云 | Oracle-> MySQL | Oracle 10g Oracle 11g Oracle 12c Oracle 18C Oracle 19C |
MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
入云 | Oracle->GaussDB(for MySQL) | Oracle 10g Oracle 11g Oracle 12c Oracle 18c Oracle 19c |
GaussDB(for MySQL)-MySQL 8.0 |
入云 | Oracle->DRDS | Oracle 10g Oracle 11g Oracle 12c Oracle 18c Oracle 19c |
以现网版本为准 |
出云 | MySQL->MySQL | MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
出云 | DRDS->MySQL | 以现网版本为准 | MySQL 5.6.x MySQL 5.7.x |
自建-自建 | Oracle->Kafka | Oracle 10g Oracle 11g Oracle 12c Oracle 18C Oracle 19C |
Kafka 0.11及以上版本 |
自建-自建 | MySQL->Kafka | MySQL 5.5.x MySQL 5.6.x MySQL 5.7.x MySQL 8.0.x |
Kafka 0.11及以上版本 |
支持的网络方式
数据复制服务提供的实时同步功能支持通过多种网络方式进行实时同步,包括:VPC网络、VPN网络、专线网络和公网网络,在正式进行实时同步之前请参考下表了解网络类型的使用场景及准备工作。
网络类型
网络类型 | 使用场景 | 准备工作 |
---|---|---|
VPC网络 | 适合云上同区域数据库之间的同步。 | 源数据库所在的区域要和目标数据库实例所在的区域保持一致。 源数据库可以和目标数据库在同一VPC内,也可以在不同VPC内。 当源数据库和目标数据库处于同一个VPC内的时候,默认网络是连通的,不需要单独设置安全组。 当源数据库和目标数据库不在同一个VPC内的时候,要求源数据库和目标数据库所处的子网处于不同网段,不能重复或交叉, 此时需要通过对等连接实现网络互通。针对这种情况,DRS会在测试连接时自动按照单IP最小范围打通建立路由。 |
VPN网络 | 适合通过VPN网络,实现其他云下自建数据库与云上数据库之间的实时同步、或云上跨Region的数据库之间的实时同步。 | 用户需要确保本地数据中心和目标数据库所在VPC的VPN网络建立连接,确保VPN网络可正常访问的前提下,再进行数据同步。 |
专线网络 | 适合通过专线网络,实现其他云下自建数据库与云上数据库之间的实时同步、或云上跨Region的数据库之间的实时同步。 | 用户需要通过专线网络建立云与数据中心的专线连接。 |
公网网络 | 适合通过公网网络把其他云下或其他平台的数据库同步到目标数据库 | 为了确保源数据库和目标数据库之间的网络互通,源数据库端和目标数据库端分别需要进行如下设置: 1.开启公网访问 源数据库端实例需要根据具体的场景,由用户端开启公网访问。 2.设置安全组规则 源数据库需要将DRS同步实例的弹性IP添加到其网络入口白名单内,使源数据库与DRS同步实例可以连通。 由于目标数据库和DRS同步实例处于同一个VPC内,默认网络是连通的,不需要单独设置安全组。 说明 DRS同步实例创建成功后,可在“源库及目标库”页面获取DRS同步实例的弹性公网IP。 在选择公网网络进行同步时,如果没有开启SSL安全连接加密同步链路的功能,请确保待同步的数据为非机密数据,再进行数据同步。 |
支持的网络类型
同步方向 | 数据流向 | VPC网络 | 公网网络 | VPN、专线网络 |
---|---|---|---|---|
入云 | MySQL->MySQL | 支持 | 支持 | 支持 |
入云 | MySQL->GaussDB(for MySQL) | 支持 | 支持 | 支持 |
入云 | MySQL->DWS | 支持 | 支持 | 支持 |
入云 | PostgreSQL->PostgreSQL | 支持 | 支持 | 支持 |
入云 | DRDS->MySQL | 支持 | 支持 | 支持 |
入云 | DRDS->DRDS | 支持 | 支持 | 支持 |
入云 | Oracle->MySQL | 支持 | 支持 | 支持 |
入云 | Oracle->GaussDB(for MySQL) | 支持 | 支持 | 支持 |
入云 | Oracle->DRDS | 支持 | 支持 | 支持 |
入云 | Oracle->DWS | 支持 | 支持 | 支持 |
入云 | Oracle->PostgreSQL | 支持 | 支持 | 支持 |
出云 | MySQL->MySQL | 支持 | 支持 | 支持 |
出云 | DRDS->MySQL | 支持 | 支持 | 支持 |
自建-自建 | Oracle->Kafka | 支持 | 支持 | 支持 |
自建-自建 | MySQL->Kafka | 支持 | 支持 | 支持 |
支持的同步对象
数据复制服务提供的实时同步任务支持不同对象的选择,支持情况如下表。
支持的同步对象
同步方向 | 数据流向 | 表级同步 | 库级同步 | 导入对象文件 |
---|---|---|---|---|
入云 | MySQL->MySQL | 支持 | 支持 | 支持 |
入云 | MySQL->GaussDB(for MySQL) | 支持 | 支持 | 支持 |
入云 | MySQL->DWS | 支持 | 支持 | 支持 |
入云 | PostgreSQL->PostgreSQL | 支持 | 支持 | 支持 |
入云 | DRDS->MySQL | 支持 | 暂不支持 | 暂不支持 |
入云 | DRDS->DRDS | 支持 | 支持 | 暂不支持 |
入云 | Oracle->MySQL | 支持 | 支持 | 支持 |
入云 | Oracle->GaussDB(for MySQL) | 支持 | 支持 | 支持 |
入云 | Oracle->DRDS | 支持 | 暂不支持 | 暂不支持 |
入云 | Oracle->DWS | 支持 | 暂不支持 | 支持 |
入云 | Oracle->PostgreSQL | 支持 | 暂不支持 | 支持 |
出云 | MySQL->MySQL | 支持 | 支持 | 暂不支持 |
出云 | DRDS->MySQL | 支持 | 暂不支持 | 暂不支持 |
自建-自建 | Oracle->Kafka | 支持 | 暂不支持 | 支持 |
自建-自建 | MySQL->Kafka | 支持 | 支持 | 支持 |
支持的高级特性
数据复制服务提供的实时同步任务支持多种特性,有效的帮助您提高实时同步的成功率。
高级特性列表
特性 | 说明 |
---|---|
同步级别 | 数据复制服务提供的实时同步功能支持库级同步和表级同步。 库级同步是以库为单位的同步,不可单独选择表,且库中新增表会自动加入同步关系之中。 表级同步是以表为单位的同步,不可以单独选择库,新增表需要再次编辑同步任务,将新的表追加到同步关系中。 |
对象名映射 | 实时同步功能可以支持源数据库和目标数据库中的同步对象(包括数据库、schema、表或列)的名称不同。 如果同步的数据库对象在源数据库和目标数据库中的命名不同,那么可以使用数据复制服务提供的对象名映射功能进行映射。 目前数据复制服务提供的映射功能支持库映射、schema映射和表映射。 |
动态增减同步对象 | 在实时同步过程中,您可以通过编辑同步对象随时增加或减少需要同步的对象。 |
冲突处理 | 数据复制服务提供的实时同步功能使用了主键或唯一键冲突策略,这些策略可以由您自主选择,尽可能保证源数据库中有主键约束或唯一键约束的表同步到目标数据库是符合预期的。 目前支持的冲突策略有: 忽略 当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),以目标数据为准,DRS将跳过冲突数据,继续进行后续同步。 覆盖 当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),以源数据为准,DRS将覆盖原来的冲突数据。 报错 当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),同步任务将失败并立即中止。忽略和覆盖,都是以同步稳定性优先(不会因为数据冲突而中断任务),如果用户以同步稳定性为关键,则在这里二选一。 报错则是以数据质量为优先,即用户环境不应该出现任何数据冲突,无论是忽略还是覆盖都可能产生严重业务问题,所以DRS同步任务立即失败,并人为排查原因。但需注意,如果任务长期处于失败状态,可能会导致存储占满而无法修复任务。 |
数据结构同步能力 | 数据复制服务提供的实时同步功能不支持单独的数据结构同步,而是提供特殊的数据结构同步机制,在同步任务启动后,将数据和结构一并同步到目标数据库。 |