实时同步
实时同步是指在不同的系统之间,将数据通过同步技术从一个数据源拷贝到其他数据库,并保持一致,实现关键业务的数据实时流动。实时同步不同于迁移,迁移是以整体数据库搬迁为目的,而实时同步是维持不同业务之间的数据持续性流动。
支持的数据库类型
数据复制服务支持多种数据库类型的实时同步,且支持多个源数据库到同一个目标数据库之间的实时同步。
同步方向 |
数据流向 |
源数据库 |
目标数据库 |
目标库实例类型 |
---|---|---|---|---|
入云 |
MySQL->MySQL |
|
RDS for MySQL |
|
入云 |
PostgreSQL->PostgreSQL |
|
RDS for PostgreSQL |
|
入云 |
Oracle->PostgreSQL |
|
RDS for PostgreSQL |
|
入云 |
Oracle->MySQL |
|
RDS for MySQL |
|
出云 |
MySQL->MySQL |
RDS for MySQL |
|
- |
出云 |
MySQL->Kafka |
RDS for MySQL |
Kafka |
|
支持的同步方式
数据复制服务的同步方式分为全量、增量、全量+增量三种。
全量模式:数据库一次性同步,适用于可中断业务的数据库同步场景,全量同步将非系统数据库的全部数据库对象和数据一次性同步至目标端数据库。
增量模式:通过解析日志等技术,将源端产生的增量数据实时同步至目标端。
全量+增量模式:数据持续性实时同步,通过全量过程完成目标端数据库的初始化后,增量同步阶段通过解析日志等技术,将源端和目标端数据保持数据持续一致。
同步方向 |
数据流向 |
增量同步 |
全量同步 |
全量+增量同步 |
单向/双向同步 |
---|---|---|---|---|---|
入云 |
MySQL->MySQL |
支持 |
不支持 |
支持 |
支持单向同步 |
入云 |
PostgreSQL->PostgreSQL |
支持 |
支持 |
支持 |
支持单向同步 |
入云 |
Oracle->PostgreSQL |
不支持 |
支持 |
支持 |
支持单向同步 |
入云 |
Oracle->MySQL |
不支持 |
支持 |
支持 |
支持单向同步 |
出云 |
MySQL->MySQL |
支持 |
不支持 |
支持 |
支持单向同步 |
出云 |
MySQL->kafka |
支持 |
不支持 |
不支持 |
支持单向同步 |
支持的数据库版本
不支持从高版本同步到低版本。
同步方向 |
数据流向 |
源数据库版本 |
目标数据库版本 |
---|---|---|---|
入云 |
MySQL->MySQL |
|
|
入云 |
PostgreSQL->PostgreSQL |
|
|
入云 |
Oracle->PostgreSQL |
|
|
入云 |
Oracle-> MySQL |
|
|
出云 |
MySQL->MySQL |
|
|
出云 |
MySQL->Kafka |
|
Kafka 0.11及以上版本 |
自建-自建 |
Oracle->GaussDB主备版 |
|
GaussDB 1.0.0以上 |
自建-自建 |
Oracle->GaussDB分布式版 |
|
GaussDB 1.0.0以上 |
支持的网络方式
数据复制服务提供的实时同步功能支持通过多种网络方式进行实时同步,包括:VPC网络、VPN网络、专线网络和公网网络,在正式进行实时同步之前请参考表4了解网络类型的使用场景及准备工作。
网络类型 |
使用场景 |
准备工作 |
---|---|---|
VPC网络 |
适合云上同区域数据库之间的同步。 |
|
VPN网络 |
适合通过VPN网络,实现其他云下自建数据库与云上数据库之间的实时同步、或云上跨Region的数据库之间的实时同步。 |
用户需要确保本地数据中心和目标数据库所在VPC的VPN网络建立连接,确保VPN网络可正常访问的前提下,再进行数据同步。 |
专线网络 |
适合通过专线网络,实现其他云下自建数据库与云上数据库之间的实时同步、或云上跨Region的数据库之间的实时同步。 |
用户需要通过专线网络建立云与数据中心的专线连接。 |
公网网络 |
适合通过公网网络把其他云下或其他平台的数据库同步到目标数据库。 |
为了确保源数据库和目标数据库之间的网络互通,源数据库端和目标数据库端分别需要进行如下设置: |
同步方向 |
数据流向 |
VPC网络 |
公网网络 |
VPN、专线网络 |
---|---|---|---|---|
入云 |
MySQL->MySQL |
支持 |
支持 |
支持 |
入云 |
PostgreSQL->PostgreSQL |
支持 |
支持 |
支持 |
入云 |
Oracle->MySQL |
支持 |
支持 |
支持 |
入云 |
Oracle->PostgreSQL |
支持 |
支持 |
支持 |
出云 |
MySQL->MySQL |
支持 |
支持 |
支持 |
出云 |
MySQL->Kafka |
支持 |
支持 |
支持 |
支持的同步对象
数据复制服务提供的实时同步任务支持不同对象的选择,支持情况如下表。
同步方向 |
数据流向 |
表级同步 |
库级同步 |
导入对象文件 |
---|---|---|---|---|
入云 |
MySQL->MySQL |
支持 |
支持 |
支持 |
入云 |
PostgreSQL->PostgreSQL |
支持 |
支持 |
支持 |
入云 |
Oracle->MySQL |
支持 |
暂不支持 |
支持 |
入云 |
Oracle->PostgreSQL |
支持 |
暂不支持 |
支持 |
出云 |
MySQL->MySQL |
支持 |
支持 |
暂不支持 |
出云 |
MySQL->kafka |
支持 |
支持 |
支持 |
支持的高级特性
数据复制服务提供的实时同步任务支持多种特性,有效的帮助您提高实时同步的成功率。
特性 |
说明 |
---|---|
同步级别 |
数据复制服务提供的实时同步功能支持库级同步和表级同步。
|
对象名映射 |
实时同步功能可以支持源数据库和目标数据库中的同步对象(包括数据库、schema、表或列)的名称不同。如果同步的数据库对象在源数据库和目标数据库中的命名不同,那么可以使用数据复制服务提供的对象名映射功能进行映射。 目前数据复制服务提供的映射功能支持库映射、schema映射和表映射。 |
动态增减同步对象 |
在实时同步过程中,您可以通过编辑同步对象随时增加或减少需要同步的对象。 |
冲突处理 |
数据复制服务提供的实时同步功能使用了主键或唯一键冲突策略,这些策略可以由您自主选择,尽可能保证源数据库中有主键约束或唯一键约束的表同步到目标数据库是符合预期的。 目前支持的冲突策略有: 忽略和覆盖,都是以同步稳定性优先(不会因为数据冲突而中断任务),如果用户以同步稳定性为关键,则在这里二选一。 报错则是以数据质量为优先,即用户环境不应该出现任何数据冲突,无论是忽略还是覆盖都可能产生严重业务问题,所以DRS同步任务立即失败,并人为排查原因。但需注意,如果任务长期处于失败状态,可能会导致存储占满而无法修复任务。 |
数据结构同步能力 |
数据复制服务提供的实时同步功能不支持单独的数据结构同步,而是提供特殊的数据结构同步机制,在同步任务启动后,将数据和结构一并同步到目标数据库。 |