应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

MySQL流转工具Maxwell的代码改造和优化小结

  Maxwell是开源产品,相比Canal的体量也小很多,综合考虑下,在短期内选择了Maxwell。
  从快速上手到功能支持,算是一个总体支持还不错的产品,也让技术调研和迭代进度进展相对快了很多。
  一般说要比较,基本都会拿出这幅图来(数据带有主观特点,仅供参考),因为考虑到bootstrap是个硬性需求,所以这部分的功能考量也是一个重要权衡。
  最近在做数据库到大数据流转的过程中发现了Maxwell的一些问题和改进点:
  1)Maxwell的服务管理模式目前只支持start模式,如果要停止只能采用手工kill的方式,相对粗暴一些,当然和作者交流,可以使用信号处理的方式来间接实现。
  2)Maxwell的核心配置是对于同步对象的过滤,可以支持正则等模式,如果过滤规则较为复杂,或者后期不断的调整,每次调整都需要重新启动Maxwell服务,没有类似reload的模式。
  3)对于DDL变更,如果Maxwell的初始化已完成,服务已启动,在后续创建一张表的时候,Maxwell会把变更记录至schemas表中维护版本变更记录,在已有的元数据表中tables和columns里面就没有这些信息了,对于后端的服务解析表结构会带来一些偏差(DDL的变更配置会有相应的JSON)
  1。问题定位
  这些问题算起来大多是建议,不算是致命问题,所以整体的进度依然可以继续推进,但是最近在做了几张大表的同步之后发现了一些数据问题。
  1)bootstrap的时间比较长,查看Maxwell相关监控,整体的数据吞吐量在800条秒左右,好像是达到了整个同步的瓶颈,同步一张200多万数据的表需要1个小时左右,相对比较长,我们在近期的测试中,几张千万级的大表如果串行初始化,差不多得23个小时,实在是太长了。
  2)同步数据的时间字段值存在差异,这也是在中端(maxwell规划为中端服务)和后端(Flink,Kudu规划为后端)在做数据比对中发现的,bootstrap的数据比对结果几乎没有相同的,也就意味是bootstrap在数据方面存在一些潜在问题,所以整个事情轮盘到了Maxwell的bootstrap部分。
  查看代码逻辑,着实让我一惊,这个问题目前仅在bootstrap的环节出现,比如数据的时间字段值为:
  但是经过逻辑处理后,会有时区的计算,会自动补上时区的差异。
  现在的问题已经不是初始化带来的性能隐患,而是数据质量出现了侵入性,导致数据看起来错乱。
  对于这个问题,分析的重点就是时区的处理差异,本来想这个改动应该很小,没想到调试和环境集成着实花了不少功夫。
  2。问题修正
  对于时区的数据差异,主要在于datetime数据类型存在时区差异,目前差距在13个小时。
  查看Maxwell的代码类SynchronousBootstrapper:
  经过调试,需要改动的代码逻辑范围是基于函数setRowValues:
  可以修改为:
  改动之后,整个bootstrap的逻辑经过调试和反复测试就正常了。
  3。性能问题的取舍和修正
  当然在这个之外,也做了一些细小的改进。
  第一个问题就是bootstrap的性能问题,之前看似乎是有瓶颈,吞吐量在800左右就上不去了,对此我做了如下的改进:
  1)。bootstrap的一个基本原理就是selectfromxxxxorderbyid;这种使用模式,如果表数据量比较大,其实orderby的部分看起来是走了主键,该子句会强制走全索引扫描,但是整体的效果反而不是全表扫描,所以我就干脆去除了逻辑中的orderby子句。
  整个逻辑的改造也很轻量:
  privateResultSetgetAllRows(StringdatabaseName,StringtableName,Tabletable,StringwhereClause,
  if(pk!null!pk。equals()){
  sqlString。format(orderbys,pk);
  }
  2)。去除了写入数据后的sleep1毫秒
  进一步分析代码,发现bootstrap中吞吐量的瓶颈是其中一个诡异的sleep1的处理,根据初步分析,可能考虑到bootstrap的任务会产生大量数据,对于带宽和负载压力较大,通过sleep的方式能够做到降速,整体可控。
  另外对于bootstrap的日志统计中会包括同步的数据条数,这个指标值目前的依赖度不高,而且数据校验的工作目前会先停止Slave再进行数据比对
  性能提升和改进,在35倍左右,所以这个部分的逻辑我们可以根据实际情况取舍,在我们的流传设计中,数据都是基于Slave端进行流转的,所以不会对主库造成冲击,改动的这个部分的逻辑也很轻巧,注释掉sleep(1)即可。
  publicvoidperformBootstrap(BootstrapTasktask,AbstractProducerproducer,LongcurrentSchemaID)throwsException{
  producer。push(row);
  Thread。sleep(1);
  insertedRows;
  改动后经过测试和对比,发现性能好了很多,最多的时候能有6000多,同样的初始化不到15分钟左右就全部搞定了。
  这样一些细小的改进也给我们带来了一些成就感,后续的数据同步规模继续扩大,也没有再反馈过数据质量的问题,当然在这个基础上还有一些工作需要细化。
  4。后续对于bootstrap方向的改进
  1)使用分片的思路来完善bootstrap
  提高数据提取的效率,对于千万级以上的大表数据抽取,可以按照区间分段来提取(需要考虑到数据的变更和写入的影响),目前的逻辑过于僵硬。
  privateResultSetgetAllRows(StringdatabaseName,StringtableName,Tabletable,StringwhereClause,
  Connectionconnection)throwsSQLException{
  StatementstatementcreateBatchStatement(connection);
  Stringpktable。getPKString();
  StringsqlString。format(selectfroms。s,databaseName,tableName);
  if(whereClause!null!whereClause。equals()){
  sqlString。format(wheres,whereClause);
  }
  if(pk!null!pk。equals()){
  sqlString。format(orderbys,pk);
  }
  returnstatement。executeQuery(sql);
  }
  2)数据字典索引优化
  Maxwell数据字典的优化,目前的数据字典中,部分SQL执行频率较高,但是从数据库层面来看是全表扫描,这些细节的地方还需要进一步调整。
  比如如下的SQL语句:
  explainselectfrombootstrapwhereiscomplete0andclientiddtshb30130200maxwell003and(startedatisnullorstartedat
  基于业务场景的改进和调整,也让我们通过真实场景的落地,更好的拥抱开源,并在一定程度上能够回馈和反哺。

2900亿猪茅巨亏,河南首富身家缩水超1100亿!养猪股遭团从14日开始,上市公司进入三季报业绩预告披露密集期。14日晚间,多家上市猪企披露三季报,第三季度均出现较大幅度亏损,几乎团灭。不过15日早盘,猪肉股涨势明显,盘中牧原股份……金庸笔下的金牌内奸,极善洞察人心,却被意外拆穿重拾阅读的温度,用不一样的角度看江湖。更多精彩敬请关注煮鹤仙人如果单从内奸这一身份论起,劳德诺不单在金庸的作品中稳拿第一,即使放眼整个武侠界,也没几个人比得上他。……超级漂亮女明星旗袍,复古的美丽佳人,大家最喜欢谁?十个超级漂亮女明星旗袍,古典成熟风韵,复古的美丽佳人,大家最喜欢谁?1。蔡少芬2。林青霞3。刘嘉玲4。宁静5。欧阳娜娜6。汤唯7。谢娜……一百年前中国的孩子,这才是真正的历史1917年至1932年期间,一位外国摄影师来到中国拍摄了大量照片,他的照片让我们看到中国一百年前的样子。1。在西安,孩子们打着鼓敲着锣一路上叫卖着,他们跟随着戏曲表演团靠……黄景瑜要拍甜宠剧?搭档王丽坤蒋龙,网友又是一部爆款预定近期有很多甜宠剧都陆续开播了,比如《我的小确幸》、《这个世界不看脸》、《世界上最动听的你》、《你好,对方辩友2》等等。以上这些甜宠剧剧情高甜,全员又是高颜值,受到了很多观……骂林心如绿茶公主病,隐婚生子的她,到底有什么可怕背景?文姑苏来源风尚观(ID:yiyuhezi)如果你问我,有哪个女明星名字听起来耳熟却始终不温不火?我一定提名韩雪。4岁坐私人飞机,12岁参观中南海,18岁出道,……千古玦尘周冬雨许凯演技自然,为什么让人看得直犯困《千古玦尘》是由周冬雨、许凯等人主演的古装言情仙侠剧。该剧开播之后,可以说是备受关注,影后周冬雨从大荧幕转战电视剧的首秀,可以说是令人十分期待。再加上这次搭档的男主许凯,也是电……95后快递小哥上班第一天就偷东西跑路被刑拘近日95后男子王某发现某快递公司的招聘漏洞,专程坐高铁从苏州赶往上海应聘兼职。在体验了一天快递小哥后,王某果断裸辞带着好几个值钱的快递跑了。9月12日上海警方发文称……王一博在天天向上嘉宾身份由来已久,劝君未知全貌,不予置评自从信网办清朗系列专项行动开始,王一博在《天天向上》的身份就被人恶意炒作!以至于部分不关注《天天向上》的人为了吸引关注也去讲:王一博受清朗行动影响从主持人除名,改为常驻嘉宾!各……艺人正能量!林更新担任反诈宣传大使,路人照中细节涵养让人圈粉近日,演员林更新拿到了自己的新身份浙江省反诈宣传形象大使。在5月17日是世界电信和信息社会日当天,2021浙江省暨金华市防范电信网络诈骗、保护三电设施启动仪式上,林更新正……郑敏一巴掌打醒了岳云鹏,力挺为5个姐姐买房,郭靖黄蓉式的爱情视频版请点击:岳云鹏和郑敏:一个像秋天,一个像夏天,在一起时却刚刚好7月份河南地区连续强降雨,使省份多地出现洪涝灾害,大面积的道路和车辆被损毁,企业以及明星和社会各界人士……硬核普法与青春成长共存,你好检察官让行业剧扩容9月8日,引得诸多网友想要一睹真容的《你好检察官》终于在浙江卫视首播,并在优酷视频同步播出。开播之前的首播发布会现场,更是聚集了许多检察系统的工作人员,阵容堪称豪华。引得……
四川明月坝公公杀害儿媳妇案经过披露,手段残忍不认目睹终于,四川开江明月坝发生的一起惨案,在案件发生后一个多月后,有权威媒体进行报道了,同时,极目新闻记者在七月十九日对被害女子的父亲进行了采访。这起开江明月坝公公杀害儿媳妇案经过终……发福的鲁豫太美了!穿绿色连体裤清爽减龄,50岁气质出众要说到娱乐圈最瘦的人,鲁豫绝对是其中之一啦。如今50岁的她终于也到了中年发福的年纪,因此长胖之后的她颜值与气质都有了不小的改变,而且衣品也变得更加出众,不知道你们是否也这样认为……网红式审美被喷上热搜这是自残,不是性感前段时间,一名网友在社交平台上分享的一段术后视频火了;视频中的她是术后7天的样子,走起路来一瘸一拐,看起来就像老太太一般;肌无力、跑跳能力受限、不能久站等问题将伴随她终生……一年考十场拿双证,那个全职妈妈怎么那么牛气当大家都认为全职妈妈是一项高风险职业时,有一部分全职妈妈已经走在积极考证的路上。前两天,从以前同事那里听到一位牛人故事。她所在的培训班有位同窗一年参加了至少十场考试,拿下……消失178天的欧阳夏丹被闺蜜爆料,台上台下两副面孔成功路上并不拥挤,因为坚持的人不多,而且需要全力以赴。飞人乔丹曾说:篮球是生命的全部。的确,当找到了自己人生使命的时候,定位人生后,就应该用生命去完成它,任何一条通……佟丽娅隐忍出轨6的陈思诚,你以为是真爱使然,其实背后另藏玄机2014年新年伊始,在大溪地迎来了一对新婚夫妇,新郎更是在婚礼现场说道:结婚,就不会离婚;老婆,只有一个!这对新人就是因电影《北京爱情故事》结缘的陈思诚和佟丽娅,……因漂亮被赵本山看中,被揭穿虚伪面具后转身嫁给小16岁富豪她是闫学晶,但她现在生活得很好,她嫁给这个有钱人后生活很好。但每个人都有选择生活的权利。说到赵本山,这是一个众所周知的人物。许多80后的父母甚至爷爷奶奶都把他当作偶……大型翻车现场,岳云鹏高考祝福编辑三次,不知道主科满分150导语:大型翻车现场,岳云鹏高考祝福编辑三次,不知道主科满分150,粉丝都要笑喷了。今天是高考第一天,考生带着对未来的渴求,踏上人生中第一个重要里程。高考不是终点,它只是你……陈凯歌徐克表示长津湖票房再高也不用吴京了,原因笑翻全场众所周知,国庆档一众电影里,从口碑来看,由陈凯歌,徐克等指导,吴京、易烊千玺等主演的《长津湖》已经实现了领跑,受到了很多人的认可,冰雪,酷寒,潜伏,血战,忽的一声,嘹亮的冲锋号……区区4000万,李亚鹏还不起吗?区区4000万,李亚鹏还不起吗?大多网友对此都是带有很强偏见,表面生活无限风光的明星艺人们坐拥有多少次吸金捞钱机会,网友们想象几近天马行空,他们的一场商演,一部影视剧,所……曾经扮演哈妹的薛佳凝淡出娱乐圈,已没戏演?回应近日,曾经饰演《粉红女郎》中的哈妹,薛佳凝在接受采访时谈及近年来淡出娱乐圈的原因,一方面是她处于现在女演员最尴尬的年纪,找上门来的戏已没有以前那么多,另一方面也是自己的选择,就……韩庚妻子卢靖姗短发更漂亮,浓妆配开叉西装裙,蜂腰长腿真迷人今天穿什么品牌好物自从参演了《战狼》后,就让大家对这个有着欧美长相的卢靖姗印象深刻,而她的颜值确实是她的一大优势,标准的浓颜长相能够非常自然地驾驭那些成熟风格,特别是在化……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网