游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

数据传输

  作者:任仲禹
  爱可生DBA团队成员,擅长故障分析和性能优化,文章相关技术问题,欢迎大家一起讨论。
  本文来源:原创投稿
  爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。背景
  源于某客户的需求,存在线上某业务MySQL库因为数据量及业务读写压力较大,需要将业务数据迁移到DBLE分布式数据库,但同时因为业务为7x24h,能够停机的时间窗口较短,所以需要考虑数据实时同步的方案。
  过往DBLE的业务上线基本为全新部署,数据实时同步的情况极少实施,去年DTLE发布后这一问题得到了些改善,今天我们来实践下。环境准备1。目标端DBLE集群部署安装DBLE软件、后端分片MySQL库过程略DBLE版本3。20。10。8、MySQL版本5。7。25sharding。xmllt;?xmlversion1。0?!DOCTYPEdble:shardingSYSTEMsharding。dtddble:shardingxmlns:dblehttp:dble。cloudversion4。0schemanamedtlesqlMaxLimit1shardingNodedn01singleTablenamegtidexecutedv4shardingNodedn01sqlMaxLimit1singleTableschemaschemanamerensqlMaxLimit1shardingNodedn01shardingTablenametestshardingNodedn01,dn02,dn03,dn04sqlMaxLimit1shardingColumnidfunctionfuncjumphashshardingTableschemashardingNodenamedn03dbGroupdhmysqlcluster02databasedhdn03shardingNodeshardingNodenamedn04dbGroupdhmysqlcluster02databasedhdn04shardingNodeshardingNodenamedn02dbGroupdhmysqlcluster01databasedhdn02shardingNodeshardingNodenamedn01dbGroupdhmysqlcluster01databasedhdn01shardingNodefunctionnamefuncjumphashclassjumpStringHashpropertynamepartitionCount4propertypropertynamehashSlice0:1propertyfunctiondble:shardingdb。xmllt;?xmlversion1。0?!DOCTYPEdble:dbSYSTEMdb。dtddble:dbxmlns:dblehttp:dble。cloudversion4。0dbGroupnamedhmysqlcluster02rwSplitMode0delayThreshold1heartbeattimeout0errorRetryCount0showslavestatusheartbeatdbInstancename10。186。61。133326dh1url10。186。61。13:3326userdbleuserpasswordjpfmxIeMt1vxAJ6zd6Q10PGRRiQj023DlYXuOr3C4VXTdV5GJaOIv5iVmWCwpXcucnzi02HVlT7ADXm6QmaxCon100minCon10primarytruereadWeight0idmysqli63009usingDecrypttruedbInstancedbGroupdbGroupnamedhmysqlcluster01rwSplitMode0delayThreshold1heartbeattimeout0errorRetryCount0showslavestatusheartbeatdbInstancename10。186。61。113316dh1url10。186。61。11:3316userdbleuserpasswordQQWRF80AGNbx4jIAxb2Ww7Myol1ntlyzGmA1A3PXVISmRDi5pgRnLLwYsXoLmH0jiv1qZAkqIBHv6YgXAgmaxCon100minCon10primarytruereadWeight0idmysql47vn84usingDecrypttruedbInstancedbGroupdble:dbuser。xmllt;?xmlversion1。0?!DOCTYPEdble:userSYSTEMuser。dtddble:userxmlns:dblehttp:dble。cloudversion4。0managerUsernamerootpasswordCrjpLhvVJkHk0EPW35Y07dUeTimf52zMqClYQkIAN3dqiG1DVUe9Zr4JLh8Kl1KH1zd7YTKu5w04QgdyQeDwusingDecrypttruemanagerUsershardingUsernamerenschemasren,dtlepasswordPC2KazQiS3ZZ6uojBJ91MZIqYqGczspQebyBZOC9xKAAkAFrqEDC9OPnvObAyO4P8Zu3vHQJrljM040KdgusingDecrypttruereadOnlyfalsemaxCon0blacklistdefaultblacklistshardingUserdble:user2。源端和目标端测试表创建源端MySQL数据库软件安装略源端MySQL与目标端DBLE都需要创建测试表名:testuseren;CREATETABLEtest(idint(11)NOTNULLAUTOINCREMENT,namevarchar(20)COLLATEutf8mb4binDEFAULTNULL,cityvarchar(20)COLLATEutf8mb4binDEFAULTNULL,dtdatetimeDEFAULTCURRENTTIMESTAMP,PRIMARYKEY(id),KEYidxctiy(city))ENGINEInnoDB;3。部署单节点DTLEDTLE社区版本GitHub下载地址:https:github。comactiontechdtle下载完成后直接rpm安装(本示例使用内部QA验证版本)rpmivhprefixdatadtledtleee9。9。9。9。x8664。rpm安装完成确认启动正常curlXGET127。0。0。1:4646v1nodessjq〔{Address:127。0。0。1,ID:223c31b405cda763b3e7dbea6d416576,Datacenter:dc1,Name:nomad0,NodeClass:,Version:1。1。2,Drain:false,SchedulingEligibility:eligible,Status:ready,StatusDescription:,Drivers:{dtle:{Attributes:{driver。dtle。fullversion:9。9。9。9mastera65ee13,driver。dtle:true,driver。dtle。version:9。9。9。9},Detected:true,Healthy:true,HealthDescription:Healthy,UpdateTime:20220228T07:45:15。650289984Z〕创建MySQLToDBLE任务一、全量同步1。准备job文件catjob。json{Job:{ID:mysqlToDBLE,Datacenters:〔dc1〕,TaskGroups:〔{Name:src,Tasks:〔{Name:src,Driver:dtle,Config:{Gtid:,ReplicateDoDb:〔{TableSchema:ren,Tables:〔{TableName:test}〕}〕,ConnectionConfig:{Host:10。186。61。11,Port:3306,User:root,Password:root}}}〕},{Name:dest,Tasks:〔{Name:dest,Driver:dtle,Config:{ConnectionConfig:{Host:10。186。61。10,Port:8066,User:ren,Password:ren}}}〕}〕}}2。准备全量复制数据源端MySQL库执行mysqlinsertintotestvalues(1,ren,sh,now());mysqlinsertintotestvalues(2,jack,bj,now());mysqlinsertintotestvalues(3,tom,sz,now());3。启动同步任务curlXPOSThttp:127。0。0。1:4646v1jobsdjob。jsonsjq{EvalID:88ab4a4298b7696e0f9808c1fe3ee4bd,EvalCreateIndex:12310,JobModifyIndex:12310,Warnings:,Index:12310,LastContact:0,KnownLeader:false}4。检查同步情况确认全量数据同步完成目标端DBLE中执行mysqluseren;Databasechangedmysqlshowtables;Tablesinrentestgtidexecutedv42rowsinset(0。01sec)mysqlselectfromtest;idnamecitydt1rensh2022030706:53:302jackbj2022030706:53:413tomsz2022030706:53:593rowsinset(0。01sec)源端MySQL写入增量测试数据mysqlinsertintotestselectnull,mike,nj,now();QueryOK,1rowaffected(0。01sec)Records:1Duplicates:0Warnings:0mysqlinsertintotestselectnull,mike4,nj,now();QueryOK,1rowaffected(0。01sec)Records:1Duplicates:0Warnings:0mysqlupdatetestsetcityshwherenamelikemike;QueryOK,4rowsaffected(0。01sec)Rowsmatched:4Changed:4Warnings:0mysqlselectfromtest;idnamecitydt1rensh2022030706:53:302jackbj2022030706:53:413tomsz2022030706:53:5945mikesh2022030708:03:5746mike2sh2022030708:04:0247mike3sh2022030708:04:0548mike4sh2022030708:04:097rowsinset(0。01sec)目标端DBLE检查增量同步情况mysqlselectfromtest;idnamecitydt1rensh2022030706:53:302jackbj2022030706:53:413tomsz2022030706:53:5945mikesh2022030708:03:5746mike2sh2022030708:04:0247mike3sh2022030708:04:0548mike4sh2022030708:04:097rowsinset(0。04sec)mysqlexplainselectfromtestwhereid1;SHARDINGNODETYPESQLREFdn01BASESQLselectfromtestwhereid11rowinset(0。03sec)二、基于GTID位点增量同步1。销毁全量同步任务cddatadtleusrbinlltotal188836rwxrxrx1rootroot107811060Mar172020consulrwxrxrx1rootroot85550512Jun222021nomad。nomadjobstatusIDTypePriorityStatusSubmitDatemysqlToDBLEservice50running20220307T15:47:3108:00mysqltoMysqlsyncservice50running20220303T16:06:1008:00。nomadjobstoppurgemysqlToDBLEDeployment433ed3d4successful。nomadjobstatusIDTypePriorityStatusSubmitDatemysqltoMysqlsyncservice50running20220303T16:06:1008:002。记录源端GTID位点记录源端MySQL需要开始的GTID位点mysqlshowmasterstatusG1。rowFile:mysqlbin。000178ExecutedGtidSet:442dbe9200c311eca0cf02000aba3d0b:149705119,cdc6fb6200c211eca25902000aba3d0a:135551rowinset(0。01sec)插入增量数据(模拟业务新增数据)mysqlinsertintotestselect88,sync01,wh,now();mysqlinsertintotestselect99,sync02,wh,now();源端MySQL确认数据已插入mysqlselectfromtest;idnamecitydt1rensh2022030706:53:3048mike4sh2022030708:04:0988sync01wh2022030708:24:2099sync02wh2022030708:24:319rowsinset(0。00sec)目标端DBLE数据因同步job已销毁,新插入数据未同步过来mysqlselectfromtest;idnamecitydt1rensh2022030706:53:3048mike4sh2022030708:04:097rowsinset(0。00sec)3。准备增量同步job文件catjob。json{Job:{ID:mysqlToDBLE,Datacenters:〔dc1〕,TaskGroups:〔{Name:src,Tasks:〔{Name:src,Driver:dtle,Config:{Gtid:442dbe9200c311eca0cf02000aba3d0b:149705119,cdc6fb6200c211eca25902000aba3d0a:13555,ReplicateDoDb:〔{TableSchema:ren,Tables:〔{TableName:test}〕}〕,ConnectionConfig:{Host:10。186。61。11,Port:3306,User:root,Password:root}}}〕},{Name:dest,Tasks:〔{Name:dest,Driver:dtle,Config:{ConnectionConfig:{Host:10。186。61。10,Port:8066,User:ren,Password:ren}}}〕}〕}}4。开始增量同步任务curlXPOSThttp:127。0。0。1:4646v1jobsdjob。jsonsjq{EvalID:cad6fb1962d367aa6f5cfbb79f8016d2,EvalCreateIndex:12855,JobModifyIndex:12855,Warnings:,Index:12855,LastContact:0,KnownLeader:false}5。检查同步情况目标端DBLE中查看到GTID位点之后的数据已同步过来mysqlselectfromtest;idnamecitydt1rensh2022030706:53:3048mike4sh2022030708:04:0988sync01wh2022030708:24:2099sync02wh2022030708:24:3111rowsinset(0。06sec)6。其它DML及DDL同步验证下其它update、delete语句及DDL语句同步情况源端MySQL执行操作mysqldeletefromtestwhereid100;QueryOK,2rowsaffected(0。01sec)mysqldeletefromtestwhereid3;QueryOK,6rowsaffected(0。01sec)mysqlupdatetestsetnameactionskywhereid3;QueryOK,1rowaffected(0。00sec)Rowsmatched:1Changed:1Warnings:0目标端DBLE检查同步情况mysqlselectfromtest;idnamecitydt1rensh2022030706:53:302jackbj2022030706:53:413actionskysz2022030706:53:593rowsinset(0。01sec)源端MySQL执行DDL操作mysqlaltertabletestaddcolumninfovarchar(20)defaulthello;mysqlupdatetestsetinfothankswhereid3;mysqlaltertabletestaddindexidxinfo(info);目标端DBLE可以进行DDL同步(篇幅所限,实际上DBLE兼容的DDL语句都能同步成功)mysqlselectfromtest;idnamecitydtinfo1rensh2022030706:53:30hello2jackbj2022030706:53:41hello3actionskysz2022030706:53:59thanks3rowsinset(0。02sec)mysqlshowcreatetabletestG1。rowTable:testCreateTable:CREATETABLEtest(idint(11)NOTNULLAUTOINCREMENT,namevarchar(20)COLLATEutf8mb4binDEFAULTNULL,cityvarchar(20)COLLATEutf8mb4binDEFAULTNULL,dtdatetimeDEFAULTCURRENTTIMESTAMP,infovarchar(20)COLLATEutf8mb4binDEFAULThello,PRIMARYKEY(id),KEYidxctiy(city),KEYidxinfo(info))ENGINEInnoDBAUTOINCREMENT89DEFAULTCHARSETutf8mb4COLLATEutf8mb4bin1rowinset(0。01sec)配置MySQLToDBLE注意事项1。检测连接失败问题问题描述:DTLE配置JOB过程中,检测连接失败,nomad日志报错ERROR1064(HY000):java。sql。SQLSyntaxErrorException:illegalvalue〔TRUE〕原因:DTLE下发的检测客户端语句setautocommittrue,在DBLE某些版本中不支持解决:升级DBLE到3。20。10。6版本及之后2。任务启动后同步失败报dtle不存在问题描述:DTLE同步任务启动后报错,nomad日志出现Cantcreatedatabasedtlethatdoesn’texists。原因:DTLEToMySQL,不会出现该种报错DTLEToDBLE,由于DBLE中间件中schema的创建方式与普通MySQL不一致,所以该create语法不支持解决:需要对DBLE进行额外的SchemaTable配置,参考前文sharding。xml和user。xml中相关配置3。任务启动后同步失败报Datatoolong问题描述:DTLE同步任务启动后报错,nomad日志出现appliererrorrestart:insertgno:Error1406:Datatoolongforcolumnsourceuuidatrow1原因:DTLE在DBLE中创建的表gtidexecutedv4中,字段sourceuuid的Binary数据类型长度不够也可通过排查DBLE中间件日志(corelogdble。log),报错信息为executesqlerr:errNo:1406Datatoolongforcolumnsourceuuidatrow1解决:DBLE中,修改字段altertablegtidexecutedv4modifycolumnsourceuuidbinary(60);结论DTLE目前功能基本可以满足MySQLDBLE间数据实施同步需求,不过需要注意的是,不建议采用本文所提到的全量同步方式生产环境实施由于MySQL老库数据量较大,可以先将数据全量逻辑备份出来(需记录GTID位点),再通过DBLE自带的split工具进行拆分后进行导入,然后再使用DTLE基于GTID位点增量同步的方式进行数据同步DTLE创建ToDBLE任务前需要关注下前文所示注意事项,尤其是提前准备好sharding。xml、user。xml文件并创建好DTLE的元数据表gtidexecutedv4。

致远互联签约宁波文旅集团打造数字协同运营平台近日,中国协同管理软件及云服务领先厂商致远互联(688369。SH)成功签约宁波市文化旅游投资集团有限公司(以下简称宁波文旅集团),并成功举办《数字协同运营平台项目启动会》,下……工业品常用的互联网推广方式日前,有很多朋友咨询我,怎么在网上做产品推广,本人就这个问题给大家解答一下,希望对大家有所帮助。1、竞价推广主要是百度的花钱点击推广方式,比较费钱但很直接,只要钱花……构建基础包的基础知识这是一篇快速提示,旨在给Ubuntu的新用户解释构建基础包是什么、它的用处和安装步骤。在Ubuntu中安装构建基础包(buildessential),只需要在终端中简单输……新基建城市大脑整体解决方案(2021)智慧城市的应用和运营系统,需要物联感知、网络通信、计算与存储、数据与服务融合、安全保障等技术要素的支撑;总体架构涉及业务架构、数据架构、应用架构、基础设施架构、安全体系、标准体……知产晨报小米与InterDigital结束专利诉讼,姚安娜商8月05日知识产权快讯1hr专利华为公开新专利,可更准确地提醒用户健身动作不标准企查查App显示,近日,华为技术有限公司公开一种消息提醒方法,相关装置以及设备……一篇文章让你了解耳机的分类用途设计方式!阜新声艺视听随着智能手机、平板、笔电等装置的流行,越来越多人使用耳机,而耳机本身也因为技术的日新月益,表现更胜以往,有越来越多人能感受耳机的聆听乐趣,让耳机近几年的销售大幅成长,产品越来越……轻便实用高效商务办公新典范讲到商务办公,则离不开电脑。随着商务活动的频繁,愈来愈多的商务人士提出了商务减负的需求。不管是商务出行、商务讲座、商务培训等等,都应以轻便、实用、高效为产品核心。壹号本代……四川富豪刘沧龙被抓,250亿信托窟窿怎么补?作为黑老大的堂弟刘汉伏法后,刘沧龙曾失联近两年,资产数百亿的宏达系也开始走下坡路,并最终栽在了四川信托上。本文由无冕财经(wumiancaijing)原创首发作者:……为何懂车的人都钟情法系车?标致508L2022款告诉你为何懂车的人都钟情法系车?这个问题想必已经成了很多人的疑惑。想知道具体的原因?我们从标致508L2022款一探究竟!大家都知道,德系车六七年更新一次、日系车三四年换一代,……5G正式商用2019胡润80后白手起家富豪榜黄峥张一鸣汪滔进1、工信部副部长:5G商用正式启动年底开通13万5G基站事件:10月31日,工信部副部长陈肇雄在2019年中国国际信息通信展览会开幕论坛上,宣布5G商用正式启动。陈肇雄表……鲨鱼中最凶猛的十大鲨鱼1、公牛真鲨又叫牛鲨、公牛白眼鲛、公牛鲨、白真鲨、低鳍真鲨真鲨科、真鲨属的一种鲨鱼。体呈纺锤型,躯干粗大。头宽扁。尾基上下方各具一凹洼。吻端非常宽圆而短。眼圆,瞬膜……iPhone13或与9月发布Hello,大家好,欢迎来到科技晚高峰,圈圈又与你们见面啦高手在民间?华为P50Pro5G版或将来临,由于今年的华为P50系列很遗憾不支持5G,不过,以世纪威锋等维修机构……
Linux该如何学习(新手入门必看)如何去学习学习大多类似庖丁解牛,对事物的认识一般都是由浅入深、由表及里的过程,循序才能渐进。学习Linux同样要有一定的顺序和方法,当然这也是你学习Linux的意义。……你听过南三条吗?中国这座要啥有啥的超级市场变样了最近河北新晋一处网红地潮男潮女们经常在此出没这座超级市场华丽变身后你还认识吗?买卖天下,沟通南北。这里,曾是上世纪八九十年代的购物天堂。……新手玩嵌入式硬件,用Arduino还是树莓派?分享下我的AI先言简意赅回答今天的问题,几点我的建议:从Arduino入手,找几个开源项目熟悉开发流程,最重要的是培养兴趣和成就感用什么硬件平台以及工具取决于你想做什么东西,没有万能的工具不……20万二手车改装成劳斯莱斯婚庆公司日租过万克莱斯勒300C,这克莱斯勒看上去很大气,就气势而言,有一种劳斯莱斯和宾利的即视感,克莱斯勒300C在国内外都有不少改装案例,伪装成宾利和劳斯莱斯数不胜数,二手买过来大概203……成都市奸商续中午时分,骑上三百六十度全景天窗的共享单车,去天街吃饭,回来的路上,看到有卖耙耙柑的,我观察了一下,看到别人在买,再看小贩戴眼镜像个斯文人,心想有学问的,应该不会骗秤坑人,我也……抚州宝骏730可试乘,限时特惠0。2万元手握购车款犹豫不决的你是不是还在为买车而观望,当前五菱汽车抚州国鼎销售中心店宝骏730直降0。2万元颜色可选,现车充足,优惠时间即日起到10月31日,犹豫不决的朋友不妨到店亲身……抚州五菱荣光降价1。23,欢迎莅临赏鉴工作的不顺心,生活的烦恼,是时候换辆车改变一下心情了,近期五菱汽车抚州国鼎销售中心店11月03日11月03日,直降1。23,期待您的光临促销时间2021年11月03日至2……。NET控件集ComponentOne新版发布ComponentOne是一套专注于企业。NET开发、支持。NETCore平台,并完美集成于VisualStudio的第三方控件集,包含300多种。NET开发控件,可满足Win……大快人心!中国科技巨头再创记录,直逼苹果如今,随着时间的变化,中国科技巨头已经越发的强大了。对于核心技术的投入和研发也相比之前更为迅速了。今年,一波波好消息也正反应了中国企业拥有此实力能够与之西方国家强大的技术……将精致进行到底,南卡LitePro蓝牙耳机体验Hi大家好,我是三重奏不久前,曾分享过南卡Lite蓝牙耳机的使用体验,有着非常好的印象。南卡Lite凭借着其优秀的外观设计,良好的佩戴舒适感,以及出色的音质表现等,俘获了……10。14ETH行情分析及观点昨天以太的表现还是很强的收了一跟大阳,比特币和以太方向还是一致的;昨日以太同样收了一根下影线比较长的接近光头的阳K线,低点在3410一线,而高点去到了3610一线,目前也已突破……第十四届中国陕西(洛川)国际苹果博览会开展第十四届中国陕西(洛川)国际苹果博览会开展9月27日上午,以洛川苹果中国红、乡村振兴共富裕为主题的第十四届中国陕西(洛川)国际苹果博览会开展。原农业部党组成员、国务院参事……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网