当前位置: 首页 > 科技观察

基于Maxwell的MySQL数据传输服务总体设计

时间:2023-03-13 21:18:07 科技观察

最近对整体DTS(数据传输系统)进行了整体开发设计。目前正在做的是数据库到大数据库端的数据传输对接。.数据传输服务(DTS)支持关系数据库、NoSQL、大数据等数据源之间的数据传输。是集数据迁移、数据同步、数据订阅为一体的数据传输服务。本次主要关注MySQL到Kudu的数据同步。采用基于MySQLBinlog的数据同步方案,涵盖全量、增量、全量+增量三种同步模型,支持秒级延迟数据同步。断点续传,数据不丢,不乱,不重;一、系统总体设计系统总体设计如下:DTS为平台前端,可由专业的前端团队支持。数据传输系统DTS是一个独立的业务系统。目前正在重建中。为了实现初始版本,基线版本是数据库运维系统的当前版本,以后只维护DTS端的相关逻辑。其中,为了考虑后续的扩展性和可维护性,DTS将基于reader、write和service这三个通用模块来构建。Reader和Writer可以根据具体的技术方向进行细分。关联系统有数据库运维系统、任务系统、大数据管理系统。这些关联系统的元数据和一些逻辑功能将有相关的调用。在整个数据传输服务流程中,一个基础属性就是task_code,它是DTS任务创建、中端数据传输、后端服务集成中的一个通用属性。task_code的含义为client_id,格式为:dts_[idc]_[maxwell_ip]_[maxwell_code],后台服务的topic会根据client_id附加库表信息进行组合。当在DTS前端页面输入基本信息(如数据库IP、端口等)时,会调用中台服务接口生成对应的client_id。客户端服务会根据client_id进行相应的同步对象配置管理/服务启停等操作。相关数据传输流程如下:2.中端管理设计中端管理主要基于Maxwell的部署管理、配置管理、同步对象列表变更、服务管理(启动、停止)、服务自管理和监控alarm,目前的实现主要是基于API,初步实现了本地前端。2.1.部署管理部署管理主要是实现Maxwell服务部署的平台化管理。目前Maxwell应用服务器有两台,130.200和130.201。存档数据库是Maxwell服务的基础配置数据,是Maxwell初始化的数据库的基础元数据。通过平台化部署,可以实现以下功能:1)可以实现自动寻址,为Maxwell新的同步任务匹配相应的应用服务器,在后续有新的应用服务器的情况下可以快速调整适配。2)如果实例B的maxwell服务已经部署在服务器A上,添加新的数据同步任务时,需要复用已有的maxwell服务配置,不需要在新服务器重新配置。3)服务配置基础准备工作,如Maxwell相关账号、防火墙激活等,需要脚本化管理支持,以API形式提供接入。目前统一的maxwell访问账号为:dba_maxwell_repl① databasemaster在数据库master端开启防火墙权限,从slave端创建对应的数据库账号② 数据库开启防火墙权限数据库Maxwell配置列表维护管理。补充:前置任务:在130.201服务器上部署Maxwell改版服务,完成基于测试环境的Maxwell接入测试。生产者是标准输出。后续开发可参考以下实现要点:① 完整的Maxwell模板配置② 可以配置模板生成自定义配置,封装统一启停脚本③ Maxwell自动寻址逻辑,同一个实例只能复用一个Maxwell进程服务④ Client_id生成逻辑⑥ 基于运维系统封装DTS端的接口,实现打开防火墙新建副本的功能用户。新用户在Master上,权限在Master和Slave上打开。⑦ 对于stdout和Kafka的配置,互斥Logic2.2。配置管理配置管理包括maxwell基础配置文件,如config配置、日志配置、监控配置等。目录规划设计如下:可以在此基础上进行相应的业务扩展。Maxwell的基本配置依赖client_idüclient_id元数据命名为dts_[idc]_[maxwell_ip]_[maxwell_code]比如Maxwell部署在服务器121.240,Maxwell001为业务代码,可以映射到对应的数据库服务(如Slave),为了方便识别和解析,不允许使用特殊符号,如下划线等命名示例为:dts_xxxx_121_240_maxwell001实现细节可以分为以下几个部分:1)支持生成根据模板配置相应的maxwell配置文件,配置文件以client_id元数据命名,格式为:dts_[idc]_[maxwell_ip]_[maxwell_code].properties,配置文件部署在app_config目录下。例如Maxwell部署在服务器130.200上,Maxwell001为业务代码,可以映射到对应的数据库服务(如Slave)。为便于识别分析,不允许使用特殊符号,如下划线等命名示例:dts_xxxx_130_200_maxwell001.properties2)对于Maxwell的基本信息的配置,由于是基于client_id,不方便显示的关联关系来源。这些配置信息的管理需要统一维护在maxwellarchive中。3)基本配置信息包括源服务信息、源服务端口、复制账户信息、client_id、所属maxwell应用服务器、监控端口、filter列表、bootstrap_type(sync、async)、kafka配置信息等。4)基本配置管理需求待实现本地前端补充:完成Maxwell服务列表和服务配置的平台化管理,后端通过API实现。如果任务配置发生变化,服务列表和详情列表是一对多的关系,即需要保留已有的配置文件记录,然后将原来的记录状态设置为无效,这样任务仍然可以保证异常回滚时服务可用。2.3.更改同步对象列表同步对象列表是数据传输中的关键管理对象,需要实现以下功能:1)在现有maxwell服务中添加新表时,需要在现有maxwell服务下进行扩展,并且同步的是modifiedObjectlist,list的修改方式是append,暂时不支持修改、删除等其他方式。2)修改同步列表后,需要重启maxwell服务,保证启动过程比较顺畅可控。3)如果同步列表刷新失败,需要能够快速回滚,快速恢复数据传输服务。4)配置文件版本管理和归档。更改对象前,需要先备份配置文件,备份文件名要规范。补充:主要实现对同步对象的修改和管理,添加相应的正则配置,调用详细的管理方法/接口2.4.服务管理可以实现maxwell的启停管理功能,包括三个子选项;通过API方式启动、停止、重启查看服务状态。目前已有的开放接口可以复用。2.5.服务在传输链路中自启动。如果源端服务异常,maxwell端异常,或者后端传输服务异常,都会导致Maxwell服务异常终止。通过检测方式进行检查和复核,确认无误后重启服务,保证maxwell服务的连续性。补充:开发相应的脚本检测服务状态,复用已有的监控接口检测数据传输状态。3.6.监控报警监控报警是maxwell的基本保障功能。需要完成Maxwell服务的数据传输监控,分析binlog的吞吐量,下推Kafka的吞吐量等,并对数据传输异常、服务异常等异常场景进行告警提示。.补充:配置相应告警详情,设置阈值,配置告警本文转载请联系杨建荣学习笔记公众号。