本节介绍了产品架构和功能原理的相关内容。 DRS的产品架构以及功能原理如下图所示: 图 DRS产品架构 架构说明 最小权限设计 a. 采用JDBC连接,无需在用户的源数据库、目标数据库节点部署程序。 b. 任务独立虚拟机运行独享资源,租户之间数据隔离。 c. 采用最小IP资源,在源数据库、目标数据库仅开放DRS数据迁移实例节点IP访问权限,无需增加网段。 可靠性设计 a. 连接异常自动重试:当网络闪断、数据库倒换等场景造成DRS和数据库连接异常,会自动重试直到任务恢复。 b. 具备断点续传能力:源数据库或目标数据库连接出现异常时,自动记录当前回放位点,等故障修复后,自动从上一次位点接续回放,保证同步数据的一致性。 c. DRS迁移实例所在虚拟机故障,业务自动切换到新虚拟机并保证IP不变,保证迁移任务正常。 实时迁移基本原理 图 实时迁移原理 以“全量+增量”迁移为例,完整的迁移分为四个阶段。 a. 第一阶段:结构迁移。DRS服务会从源数据库查询到用户选择迁移的库、表、主键等对象,然后在目标数据库创建这些对象。 b. 第二阶段:全量数据迁移。DRS服务会通过并行技术,以最高效的资源利用,从源数据库查询到当前所有数据,并在目标数据库进行插入。在全量数据迁移启动前,会提前进行增量数据抽取保存,以便在第三阶段增量数据迁移时,能够和全量数据接续,保证数据的完整性和一致性。 c. 第三阶段:增量数据迁移。全量任务结束后,增量迁移任务启动,此时会从全量开始的增量数据持续的解析转换和回放,直到追平当前的增量数据。 d. 第四阶段:为了防止触发器、事件在迁移阶段对于数据的操作,在结束任务阶段再迁移触发器、事件。 全量数据迁移的底层模块主要原理: 分片模块:通过优化的分片算法,计算每个表的分片逻辑 抽取模块:根据计算的分片信息并行多任务从源数据库查询数据 回放模块:将抽取模块查询的数据并行多任务插入目标数据库 增量数据迁移的底层实现模块主要原理: 日志读取模块:日志读取模块从源数据库读取原始增量日志数据(例如MySQL为binlog),经过解析转换为标准的日志格式存储在本地。 日志回放模块:日志回放模块根据日志读取模块转换的标准格式增量日志,根据用户的选择策略进行加工过滤,将增量数据同步到目标数据库。
该任务用于指导用户完成数据管理服务的安装部署。 前提条件 本服务部署需要的全部组件按安装顺序排列如下: Docker MySQL Redis 部署规划 1. 先安装基础组件Docker、MySQL、Redis。 2. 安装dmsconsole、dmsgateway、dmsresource、dasconsole服务。 操作步骤 1. 安装docker,arm64版本。 将dockercompose二进制文件/usr/bin文件目录,重命名为dockercompose。 2. 以/data目录为例,在/data目录创建dms/,上传DMS部署工具包dms0109.tar.gz至/dms并解压到当前目录。 1. cd /data 2. mkdir dms/ 3. cd /dms 4. tar xzvf dms1225.tar 3. 加载基础组件镜像:执行脚本dockerload.sh。 1. cd /data 2. sh ./dms/images/dockerload.sh 前提条件:armjdk11、armmysql820、armredis7alpine镜像压缩包已经放置/dms/images目录下。 4. 通过dockercompose拉起基础组件。 1. cd /data 2. dockercompose f ./dms/dmsdeploy/dockercomposebase.yml up d 5. 构建dms服务镜像,共四个服务,分别是dmsconsole、dmsgateway、dmsresourceintensive、dasconsole。 1. cd /data/dms/dmsdocker 2. sh ./dockerbuild.sh 前提条件: dmsconsole的jar包已上传至./dms/dmsdocker/dmsconsole目录下 dmsgateway的jar包已上传至./dms/dmsdocker/dmsgateway目录下 dmsresourceintensive的jar包已上传至./dms/dmsdocker/dmsresourceintensive目录下 dasconsole的jar包已上传至./dms/dmsdocker/dasconsole目录下 6. 修改服务的配置文件。 1. 修改dmsconsole的服务配置 1. cd /data 2. vi ./dms/dmsdeploy/configs/dmsconfig/dmsconsole/applicationtestgc.yml 需要修改的配置项如红框所示: 2. 修改dmsgateway的服务配置 1. 编辑applicationtestgc.yml文件 1. cd /data 2. vi ./dms/dmsdeploy/configs/dmsconfig/dmsgateway/applicationtestgc.yml 需要修改的配置如红框所示: 2. 编辑bootstrap.yml 1. cd /data 2. vi ./dms/dmsdeploy/configs/dmsconfig/dmsgateway/bootstrap.yml 需要修改的配置如红框所示: 3. 修改dmsresourceintensive服务配置 1. cd /data 2. vi ./dms/dmsdeploy/configs/dmsconfig/dmsresourceintensive/applicationtestgc.yml 需要修改的配置内容如红框所示: 4. 修改dasconsole服务配置 1. cd /data 2. vi ./dms/dmsdeploy/configs/dmsconfig/dasconsole/applicationdevkp.yml 需要修改的配置内容如红框所示: zk与mysql地址(沿用dmsconsole),redis地址修改(沿用dmsconsole) DCP网关地址: 7. 编辑dms后端服务的dockercomposeservice.yml配置,将各服务启动参数中的服务注册地址改为dcp的zk地址,共需要修改4处,如下所示: 1. cd /data 2. vi ./dms/dmsdeploy/dockercomposeservice.yml 8. 部署dms后端服务,执行服务部署脚本 1. cd /data/dms/dmsdeploy 2. sh ./redeployservice.sh