1 数据迁移
数据迁移是指将源数据库的对象一次性迁移到目标数据库,适用于同构或异构数据库之间的数据迁移,一般用于迁移后源数据库业务会中断的场景。数据迁移提供稳定、高效的数据库全量数据迁移。数据迁移的部署方式及特点如下所示。
部署服务包括源DMDRS和目标DMDRS。
数据迁移直接查询抽取源数据库对象定义或数据,将其发送至目标DMDRS,实现数据迁移。采用多种迁移技术,如分组装载、快速装载和断点续传等,保障迁移的完整性和高效性。
1.2 数据同步
数据同步是指通过全量数据装载和增量数据同步功能,保证源数据库和目标数据库数据的持续一致性,适用于同构或异构数据库之间的数据实时同步。数据同步支持一对一、双向、一对多、多对一、级联实时、环形和主备同步等多种拓扑结构。
1.2.1 一对一同步
一对一同步是指将源数据库的数据通过DMDRS单向地同步到目标数据库。主要应用于源数据库的业务数据仅需传递到单个目标数据库实例的场景,实现双业务中心、实时备份和报表服务等业务。一对一同步的部署方式及特点如下所示。
部署服务包括源DMDRS和目标DMDRS。
源数据库与目标数据库通过DMDRS进行实时数据同步,保持数据一致性,目标数据库可进行读写访问。
基于目标数据库系统的读写访问,可构建”双活“业务系统,分担源数据库的系统压力。
目标数据库可作为备机服务,承担部分查询业务,分担源数据库系统的压力,应用于数据分析和报表服务等业务。
目标数据库可作为实时备份,在源数据库出现故障时,可进行业务切换,保障业务连续性,降低业务中断风险。
目标数据库系统的同步表数据不能被修改,否则可能导致同步表数据不一致。
注意将目标DMDRS服务的配置参数topology配置为NORMAL模式,有助于提升同步的性能。
1.2.2 双向同步
双向同步是指将两端数据库的数据分别通过DMDRS同步到对端数据库。主要应用于两端数据库均有业务操作,且必须保持两端数据库的数据一致性的场景。双向同步的部署方式及特点如下所示。
部署服务包括两端数据库的双向DMDRS服务。
同步两端的数据库均有业务操作,导致同步表数据的增量变化。
任一端数据库的增量操作均可通过DMDRS服务同步到对端,保持数据一致性。
注意
- 需要将目标DMDRS服务的配置参数topology配置为RING模式。
- 双向同步无法保证事务在两端执行的先后顺序,当同步的数据存在冲突时,以后面执行的为准。
- DDL操作双向同步支持的数据库为DM和Oracle系列数据库。
- 不能过滤DRS_$开头的辅助表。
- 两端DMDRS服务的站点号不允许重复。
1.2.3 一对多同步
一对多同步是指将源数据库的数据通过DMDRS同步到多个目标数据库。主要应用于源数据库需要将业务系统的数据全部同步到多个目标数据库,或者将业务系统的数据分类同步到不同的目标数据库的场景。一对多同步的部署方式及特点如下所示。
部署服务包括源DMDRS服务(包含多个CPT模块)和多个目标DMDRS服务。
源DMDRS服务包含多个CPT模块,可根据需要启用或停止某个数据同步链路。
源DMDRS服务可根据过滤规则,将操作数据分类同步到对应的目标DMDRS,实现分类同步。
一对多同步属于单向数据实时同步,因此目标数据库不能修改对应同步表数据,否则可能导致数据不一致。
注意
- 所有源DMDRS服务的CPT模块arch配置的clear_flag参数应配置为0,应在调度服务采用配置多CPT联合删除归档功能。
- 需要对每个同步链路单独做全量数据装载或字典装载。
- 每个CPT模块的dict_dir参数配置的路径不能重复。
1.2.4 多对一同步
多对一同步是指将多个源数据库的数据通过DMDRS同步到单个目标数据库。主要应用于多个源数据库的业务数据向单个目标数据库进行汇总的业务场景。多对一同步的部署方式及特点如下所示。
部署服务包括多个源DMDRS服务和单个目标DMDRS服务。
多个源数据库同步表的数据汇集到目标数据库中,适用于汇总分析、数据分析和数据仓库等业务场景。
由于多个源数据库的数据汇集到单个目标数据库,如果多个源数据库的数据质量存在问题,可能导致目标数据库汇集的冲突问题。例如同步表有主键,当不同源数据库的数据存在相同主键时,在各自数据库中不会出现冲突,但是汇集在一起后,就会引起冲突。
某个源数据库进行表的删除或清空等操作,会导致目标数据库删除或清空同步的其他源数据库的数据。
注意
- 目标DMDRS服务会为每个源DMDRS同步链路创建私有的缓存,私有缓存的大小由参数site_buffer控制,当配置多对一同步时,需要评估目标DMDRS所在服务器内存是否充足。
- 目标DMDRS服务会为每个源DMDRS同步链路创建私有的装载缓存,该缓存的大小由参数load_buffer_limit控制,并且受源DMDRS服务CPT模块load配置的nets参数影响,当装载有多条链路时,目标DMDRS服务会创建多个装载缓存。当配置多对一同步时,需要评估目标DMDRS所在服务器内存是否充足。
1.2.5 级联同步
级联同步是指在有3个或3个以上数据库的场景下,通过DMDRS实现源数据库→级联数据库→目标数据库的数据的级联同步。主要应用于业务系统的同步数据具有层次或者包含关系的场景。级联同步的部署方式及特点如下所示。
部署服务包括源DMDRS、至少1个级联DMDRS和目标DMDRS,级联DMDRS作为级联同步中的中间节点,既产生增量同步数据,也接收上一级节点发送的同步数据。
级联同步的同步数据具有层次或者包含关系,目标数据库的同步数据可包含所有其他同步数据库的数据。
由于级联同步的特点,首节点、中间节点以及尾节点同步数据可能不一致。
注意将目标DMDRS服务的配置参数topology配置为NORMAL模式,有助于提升同步的性能。
1.2.6 环形同步
环形同步是指在有3个或3个以上数据库的场景下,通过DMDRS实现数据库A→数据库B→数据库C→数据库A的数据的环形同步。主要应用于多个数据库业务系统需要保持数据一致,且每个数据库上的业务数据均需同步到其他数据库的场景。环形同步的部署方式及特点如下所示。
每个同步数据库均部署级联DMDRS服务,级联DMDRS作为环形同步中的节点,既产生增量同步数据,也接收上一级节点发送的同步数据。
每个数据库的操作均会同步到环形结构的其他数据库中。
环形结构中的同步表数据,在所有节点保持一致。
注意环形同步的注意事项请参考双向同步。
1.2.7 主备同步
主备同步是指当数据库搭建了集群或者主备的情况下,在对应数据库节点上搭建DMDRS主节点服务和DMDRS备节点服务。
主备同步是指在源数据库或目标数据库为集群或者主备的场景下,将源数据库的数据通过DMDRS主备同步到目标数据库。DMDRS主节点服务承担同步功能,DMDRS备节点服务处于等待就绪状态,持续同步主节点服务的环境。当DMDRS主节点服务所在的数据库节点故障后,DMDRS备节点服务会自动成为主节点,避免同步中断。
DMDRS主节点服务负责全量数据和增量数据的同步。
DMDRS备节点服务实时同步主节点的环境。
DMDRS主节点服务所在的数据库节点故障后,DMDRS备节点将会成为主节点继续同步服务,原来的DMDRS主节点将履行备节点职责。
1.3 数据订阅
数据订阅是指DMDRS将源数据库的全量数据和增量数据缓存到DMDSSA中,第三方应用程序可以通过DMDSSA提供的API订阅接口按需订阅源数据库的数据。主要应用于第三方应用对DMDRS的数据有订阅需求的场景。数据订阅的部署方式及特点如下所示。
部署服务包括源DMDRS和DMDSSA。
源DMDRS将数据同步到DMDSSA指定的Topic主题,进行高性能地存储。
第三方应用通过DMDSSA API订阅接口连接DMDSSA获取数据,支持DML和DDL订阅。
注意数据订阅场景不支持双向和环形同步。
1.4 数据分发
数据分发是指源DMDRS服务与DMDSS服务共同构建基于高性能的流存储的数据分发同步服务,源DMDRS服务将源数据库的同步数据发送至DMDSS流存储进行持久化存储,以供下一级的目标DMDRS服务进行访问,并完成同步。基于DMDSS的高性能分发服务,使得源DMDRS服务在进行数据同步时,不用等待目标DMDRS执行的响应,不会受到目标DMDRS执行性能的影响,高效快速的进行源数据库数据的同步,适用于大规模数据量的高效同步,避免源数据库归档文件由于分析不及时被删除,造成同步归档不连续的情况。数据分发的部署方式及特点如下所示。
部署服务包括源DMDRS、DMDSS和多个目标DMDRS。
适用于源数据库大规模数据量的同步要求,通常应用于TB级及以上数据量同步的应用场景。
对于源数据库增量操作数据量大或归档文件保留时间较短的情况,可应用本同步架构,通过DMDSS对日志数据进行持久化存储,避免源DMDRS归档被删导致的断档风险。
DMDSS服务对服务器磁盘性能以及容量具有较高要求。
基于高性能、高吞吐量的DMDSS服务,可以实现多个目标的数据分发服务,适用于要求进行一对多的同步业务场景。
由于同步数据流多了DMDSS的中间存储,相比于源DMDRS与目标DMDRS网络直连的同步架构,在数据同步实时性方面,可能存在一定损耗。
DMDSS流存储服务可部署为DMDSS主备服务,提高可靠性,避免单点故障。
1.5 数据转换
数据转换是指对源数据库的全量数据和增量数据进行自定义转换,数据转换功能可用于数据迁移、数据同步、数据分发和数据订阅等场景,满足多样化的数据转化场景。数据转换的部署方式及特点如下所示。
在源DMDRS服务或者目标DMDRS服务中启动CVT数据转换功能,可以在源DMDRS中进行数据转换,也可以在目标DMDRS中进行数据转换。
数据转换支持实时对增量数据进行数据内容转换、数据拆分和函数处理等功能,CVT模块针对每一行记录进行实时转换。
提供自定义可编程的方式进行转换功能及转换逻辑编写,提供丰富的处理流程及处理函数,支持复杂的HASH、B树等数据结构进行数据处理。
如下示意图是在数据同步场景中,需要在目标DMDRS中对数据进行转换后再同步到目标数据库。
如下示意图是在数据分发场景中,需要在源DMDRS中对数据进行转换后再发给目标DMDRS,同步到目标数据库。