文档首页/ 数据复制服务 DRS/ 产品介绍/ 产品架构和功能原理
更新时间:2024-09-26 GMT+08:00

产品架构和功能原理

DRS的产品架构以及功能原理如下图所示:

图1 DRS产品架构

架构说明

  • 最小权限设计
    1. 采用JDBC连接,无需在用户的源数据库、目标数据库节点部署程序。
    2. 任务独立虚拟机运行独享资源,租户之间数据隔离。
    3. 采用最小IP资源,在源数据库、目标数据库仅开放DRS数据迁移实例节点IP访问权限,无需增加网段。
  • 可靠性设计
    1. 连接异常自动重试:当网络闪断、数据库倒换等场景造成DRS和数据库连接异常,会自动重试直到任务恢复。
    2. 具备断点续传能力:源数据库或目标数据库连接出现异常时,自动记录当前回放位点,等故障修复后,自动从上一次位点接续回放,保证同步数据的一致性。
    3. DRS迁移实例所在虚拟机故障,业务自动切换到新虚拟机并保证IP不变,保证迁移任务正常。

DRS使用的字符集标准是Unicode 6.2.0。

实时迁移基本原理

图2 实时迁移原理
  • 以“全量+增量”迁移为例,完整的迁移分为四个阶段。
    1. 第一阶段:结构迁移。DRS服务会从源数据库查询到用户选择迁移的库、表、主键等对象,然后在目标数据库创建这些对象。
    2. 第二阶段:全量数据迁移。DRS服务会通过并行技术,以最高效的资源利用,从源数据库查询到当前所有数据,并在目标数据库进行插入。在全量数据迁移启动前,会提前进行增量数据抽取保存,以便在第三阶段增量数据迁移时,能够和全量数据接续,保证数据的完整性和一致性。
    3. 第三阶段:增量数据迁移。全量任务结束后,增量迁移任务启动,此时会从全量开始的增量数据持续的解析转换和回放,直到追平当前的增量数据。
    4. 第四阶段:为了防止触发器、事件在迁移阶段对于数据的操作,在结束任务阶段再迁移触发器、事件。
  • 全量数据迁移的底层模块主要原理:

    分片模块:通过优化的分片算法,计算每个表的分片逻辑

    抽取模块:根据计算的分片信息并行多任务从源数据库查询数据

    回放模块:将抽取模块查询的数据并行多任务插入目标数据库

  • 增量数据迁移的底层实现模块主要原理:

    日志读取模块:日志读取模块从源数据库读取原始增量日志数据(例如MySQL为binlog),经过解析转换为标准的日志格式存储在本地。

    日志回放模块:日志回放模块根据日志读取模块转换的标准格式增量日志,根据用户的选择策略进行加工过滤,将增量数据同步到目标数据库。

备份迁移基本原理

图3 备份迁移原理

备份迁移实现SQLServer数据库的离线迁移功能。用户需要提前将源数据库的全量备份包和增量备份包上传到OBS桶中,DRS服务会从OBS桶中下载备份包并上传到目标数据库本地磁盘,在对文件完成预检查和校验后,执行导入命令将数据恢复到目标数据库。

实时同步基本原理

图4 实时同步原理

实时同步功能实现源数据库和目标数据库的数据长期同步,主要用于OLTP到OLAP、OLTP到大数据组件的数据实时同步。全量和增量的数据同步和实时迁移的技术原理基本一致,但是基于不同的业务使用场景,两个功能还是有些差异。

  1. 实时同步支持异构数据库,针对异构数据库结构同步,DRS服务会通过语法转换,将源数据库的结构定义语句转换为目标库的结构定义语句在目标数据库执行,同时数据库字段类型也会进行映射转换。可以参考各异构链路的数据类型映射关系,也可以使用UGO服务进行异构链路的结构同步。
  2. 实时同步会提供更多的数据加工规则可供用户在数据同步时使用,这些规则会在数据抽取、解析、回放阶段进行处理,最终满足用户需要的各种数据同步规则。
  3. 实时同步不会同步账号、触发器、事件等对象。
  4. 实时同步经常用于多个源数据库到一个目标数据库的数据同步,对于多对一、一对多场景的DDL操作有专门的处理。

数据订阅基本原理

图5 数据订阅原理

数据订阅功能提供SDK使得客户业务程序可以实时获取源数据库的数据增量变更。

DRS服务从源数据库抽取原始增量日志,解析为标准格式并持久化保存到本地,同时实时调用客户端订阅SDK的notify接口,推送增量变更数据到客户端业务程序,客户端根据业务需求实现具体消费逻辑。

当客户端程序消费的变更数据会实时记录在服务器端,异常中断、重连等场景下,DRS服务端会从最后的消费位点继续推送增量变更数据。

实时灾备基本原理

实时灾备的功能是通过实时复制技术实现两个数据库的数据容灾,底层技术原理和实时迁移是一致的,差异点主要是实时灾备支持正向数据同步和反向数据同步,且实时灾备为实例级别灾备,不支持选择库表。

录制回放基本原理

录制回放主要分为录制、回放两个阶段,录制过程是从源数据库上将所需时间段内的全部SQL原语句(包括增、删、改、查)通过binlog下载、录制工具等进行采集,以文件形式缓存起来,并往目标数据库注入模拟数据,等待用户执行回放。用户可以在DRS任务上手工触发回放,观察目标数据库的性能表现。也可以通过控制DRS录制回放的线程及回放速度,来模拟源业务流量放大的效果,从而分析目标数据库对于未来业务激增时的稳定性表现。