更新时间:2024-04-15 GMT+08:00
产品架构和功能原理
DRS的产品架构以及功能原理如下图所示:
图1 DRS产品架构
架构说明
- 最小权限设计
- 采用JDBC连接,无需在用户的源数据库、目标数据库节点部署程序。
- 任务独立虚拟机运行独享资源,租户之间数据隔离。
- 采用最小IP资源,在源数据库、目标数据库仅开放DRS数据迁移实例节点IP访问权限,无需增加网段。
- 可靠性设计
- 连接异常自动重试:当网络闪断、数据库倒换等场景造成DRS和数据库连接异常,会自动重试直到任务恢复。
- 具备断点续传能力:源数据库或目标数据库连接出现异常时,自动记录当前回放位点,等故障修复后,自动从上一次位点接续回放,保证同步数据的一致性。
- DRS迁移实例所在虚拟机故障,业务自动切换到新虚拟机并保证IP不变,保证迁移任务正常。
实时迁移基本原理
图2 实时迁移原理
- 以“全量+增量”迁移为例,完整的迁移分为四个阶段。
- 第一阶段:结构迁移。DRS服务会从源数据库查询到用户选择迁移的库、表、主键等对象,然后在目标数据库创建这些对象。
- 第二阶段:全量数据迁移。DRS服务会通过并行技术,以最高效的资源利用,从源数据库查询到当前所有数据,并在目标数据库进行插入。在全量数据迁移启动前,会提前进行增量数据抽取保存,以便在第三阶段增量数据迁移时,能够和全量数据接续,保证数据的完整性和一致性。
- 第三阶段:增量数据迁移。全量任务结束后,增量迁移任务启动,此时会从全量开始的增量数据持续的解析转换和回放,直到追平当前的增量数据。
- 第四阶段:为了防止触发器、事件在迁移阶段对于数据的操作,在结束任务阶段再迁移触发器、事件。
- 全量数据迁移的底层模块主要原理:
分片模块:通过优化的分片算法,计算每个表的分片逻辑
抽取模块:根据计算的分片信息并行多任务从源数据库查询数据
回放模块:将抽取模块查询的数据并行多任务插入目标数据库
- 增量数据迁移的底层实现模块主要原理:
日志读取模块:日志读取模块从源数据库读取原始增量日志数据(例如MySQL为binlog),经过解析转换为标准的日志格式存储在本地。
日志回放模块:日志回放模块根据日志读取模块转换的标准格式增量日志,根据用户的选择策略进行加工过滤,将增量数据同步到目标数据库。
实时同步基本原理
图3 实时同步原理
实时同步功能实现源数据库和目标数据库的数据长期同步,主要用于OLTP到OLAP、OLTP到大数据组件的数据实时同步。全量和增量的数据同步和实时迁移的技术原理基本一致,但是基于不同的业务使用场景,两个功能还是有些差异。
- 实时同步支持异构数据库,针对异构数据库结构同步,DRS服务会通过语法转换,将源数据库的结构定义语句转换为目标库的结构定义语句在目标数据库执行,同时数据库字段类型也会进行映射转换。
- 实时同步会提供更多的数据加工规则可供用户在数据同步时使用,这些规则会在数据抽取、解析、回放阶段进行处理,最终满足用户需要的各种数据同步规则。
- 实时同步不会同步账号、触发器、事件等对象。
- 实时同步经常用于多个源数据库到一个目标数据库的数据同步,对于多对一、一对多场景的DDL操作有专门的处理。
实时灾备基本原理
实时灾备的功能是通过实时复制技术实现两个数据库的数据容灾,底层技术原理和实时迁移是一致的,差异点主要是实时灾备支持正向数据同步和反向数据同步,且实时灾备为实例级别灾备,不支持选择库表。
父主题: 产品介绍