城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

故障分析xtrabackup吃掉了MySQL的binlog文

9月17日 萌嘟嘟投稿
  作者:刘开洋
  爱可生交付服务团队北京DBA,对数据库及周边技术有浓厚的学习兴趣,喜欢看书,追求技术。
  本文来源:原创投稿
  爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  前段时间在centos8环境上做MySQL的备份恢复测试的时候,遇到一个问题,下面跟大家分享下。
  1、讲环境服务器OS数据库版本备份工具Centos8forX86mysql8。0。18xtrabackup8。0。10
  小编的问题场景出现在centos8上,验证也使用了centos8版本,不过相信看到最后你会发现这个问题和OS关系不大,我们继续往下看。
  2、说问题
  从备份到恢复的过程还挺顺利,但是在最后启动数据库时出现了下面的问题,仔细看看,好像数据库的binlog文件名被吃掉了。20210308T16:48:08。51003208:000〔Warning〕〔MY010097〕〔Server〕Insecureconfigurationforsecurefilepriv:Currentvaluedoesnotrestrictlocationofgeneratedfiles。Considersettingittoavalid,nonemptypath。
  20210308T16:48:08。51012508:000〔System〕〔MY010116〕〔Server〕usrsbinmysqld(mysqld8。0。18)startingasprocess16556
  mysqld:Filevarlibmysql。000003notfound(OSerrno2Nosuchfileordirectory)
  20210308T16:48:09。19667308:000〔ERROR〕〔MY010958〕〔Server〕Couldnotopenlogfile。
  20210308T16:48:09。19678708:000〔ERROR〕〔MY010041〕〔Server〕Cantinittclog
  20210308T16:48:09。19696108:000〔ERROR〕〔MY010119〕〔Server〕Aborting
  20210308T16:48:10。63267608:000〔System〕〔MY010910〕〔Server〕usrsbinmysqld:Shutdowncomplete(mysqld8。0。18)MySQLCommunityServerGPL。
  不要慌,这个现象可能是binlog的索引文件在数据库恢复的时候修改出错,就会导致数据库启动失败的情况,解决方案很简单,这里MySQL报错输出的是binlog。index文件中的信息,只要将binlog名重写,之后再启动数据库即可恢复。
  当然这不是我们这篇文章的重点,重点是讨论下为什么xtrabackup会因为binlog文件名不一致就只delete而不进行insert呢?因为之前的测试由于疏忽,没有确认配置文件是否一致,结果报错后发现备份恢复的两套环境中的binlog文件名不一致,因此猜测是因为binlog文件名问题导致的这次故障发生,以小编既往故障案例的特点,我们还是先进行一个review复现吧。
  3、搞测试
  大体测试流程如下:
  (1)准备MySQL8。0。18环境,使用对应的xtrabackup做一个全备〔rootyang〕xtrabackupdefaultsfileetcmy。cnfhost192。168。1。7userrootpassword123port3306backuptargetdirrootbackupfull
  xtrabackup:recognizedserverarguments:datadirvarlibmysqlserverid1logbinvarlibmysqlmysqlbin
  xtrabackup:recognizedclientarguments:host192。168。1。7userrootpasswordport3306backup1targetdirrootbackupfull
  xtrabackupversion8。0。10basedonMySQLserver8。0。18Linux(x8664)(revisionid:94f9645)
  21051512:11:55versioncheckConnectingtoMySQLserverwithDSNdbi:mysql:;host192。168。1。7;port3306asroot(usingpassword:YES)。
  21051512:11:55versioncheckConnectedtoMySQLserver
  21051512:11:55versioncheckExecutingaversioncheckagainsttheserver。。。
  Asoftwareupdateisavailable:
  21051512:12:00versioncheckDone。
  21051512:12:00ConnectingtoMySQLserverhost:192。168。1。7,user:root,password:set,port:3306,socket:notset
  Usingserverversion8。0。18
  xtrabackup:usesposixfadvise。
  21051512:12:04completedOK!
  备份完成
  (2)修改新实例配置文件中的binlog文件名,人为制造我们遇到的故障点〔rootyang〕catetcmy。cnfgreplogbin
  logbinvarlibmysqlbinlog
  〔rootyang〕vimetcmy。cnf
  〔rootyang〕catetcmy。cnfgreplogbin
  logbinvarlibmysqlmysqlbin
  (3)准备恢复环境〔rootyang〕pkillmysqld
  〔rootyang〕rmrfvarlibmysql
  〔rootyang〕cdbackupfull
  〔rootyangbackupfull〕ls
  backupmy。cnfibbufferpoolibdata1mysqlbinlog。000004binlog。indexmysql。ibd
  performanceschemasystestundo001undo002xtrabackupbinloginfoxtrabackupcheckpoints
  xtrabackupinfoxtrabackuplogfilextrabackuptablespaces
  〔rootyangbackupfull〕catbinlog。index
  varlibmysqlbinlog。000004
  (4)xtrabackup的prepare过程,即数据准备阶段〔rootyang〕xtrabackupdefaultsfileetcmy。cnfuserrootpreparetargetdirrootbackupfull
  21051512:14:28completedOK!
  〔rootyang〕catbackupfullbinlog。index
  varlibmysqlbinlog。000004
  (5)xtrabackup的copyback过程,即最后数据的恢复阶段〔rootyang〕xtrabackupdefaultsfileetcmy。cnfusermysqlcopybacktargetdirrootbackupfull
  xtrabackup:recognizedserverarguments:datadirvarlibmysqlserverid1logbinvarlibmysqlbinlog
  xtrabackup:recognizedclientarguments:usermysqlcopyback1targetdirrootbackupfull
  xtrabackupversion8。0。10basedonMySQLserver8。0。18Linux(x8664)(revisionid:94f9645)
  21051512:14:51〔01〕Copyingundo001tovarlibmysqlundo001
  21051512:14:51〔01〕Copying。xtrabackupinfotovarlibmysqlxtrabackupinfo
  21051512:14:51〔01〕。。。done
  21051512:14:51〔01〕Copying。xtrabackupmasterkeyidtovarlibmysqlxtrabackupmasterkeyid
  21051512:14:51〔01〕。。。done
  21051512:14:51〔01〕Copying。ibtmp1tovarlibmysqlibtmp1
  21051512:14:51〔01〕。。。done
  21051512:14:51〔01〕Creatingdirectory。innodbtemp
  21051512:14:51〔01〕。。。done。
  21051512:14:51completedOK!
  〔rootyang〕catbackupfullbinlog。index
  varlibmysqlbinlog。000004
  (6)环境复现〔rootyang〕chownRmysql:mysqlvarlibmysql
  〔rootyang〕usrsbinmysqlddefaultsfileetcmy。cnfusermysql
  〔1〕1545
  〔rootyang〕
  〔1〕Exit1usrsbinmysqlddefaultsfileetcmy。cnfusermysql
  〔rootyang〕tailfvarlogmysqld。log
  20210515T12:20:18。51012508:000〔System〕〔MY01016〕〔Server〕usrsbinmysqld(mysqld8。0。18)startingasprocess1545
  mysqld:Filevarlibmysql。000004notfound(OSerrno2Nosuchfileordirectory)
  20210515T12:20:18。59667308:000〔ERROR〕〔MY010958〕〔Server〕Couldnotopenlogfile。
  20210515T12:20:18。59678708:000〔ERROR〕〔MY010041〕〔Server〕Cantinittclog
  20210515T12:20:18。59696108:000〔ERROR〕〔MY010119〕〔Server〕Aborting
  20210515T12:20:19。13267608:000〔System〕〔MY010910〕〔Server〕usrsbinmysqld:Shutdowncomplete(mysqld8。0。18)MySQLCommunityServerGPL。
  〔rootyang〕lsvarlibmysqlgrepbin
  mysqlbin。000004
  mysqlbin。index
  〔rootyang〕catvarlibmysqlmysqlbin。index
  varlibmysql。000004
  在以上操作中,每操作一步我们就查看下备份源中的binlog文件是否被篡改,发现并没有,只有最后copyback数据的时候发生了binlog。index文件的更改。
  (7)我们做一个猜测,会不会即使binlog名称相同也会导致这种报错吗?来测试一下〔rootyangmysql〕catetcmy。cnfgreplogbin修改配置文件与备份源的binlog文件名相同
  logbinvarlibmysqlbinlog
  〔rootyang〕rmrfvarlibmysql
  〔rootyang〕xtrabackupdefaultsfileetcmy。cnfusermysqlcopybacktargetdirrootbackupfull
  〔rootyangmysql〕catvarlibmysqlbinlog。index
  varlibmysql。000004
  有验证的猜测就不是算命了,那么就排除了xtrabackup备份时binlog名称不一致的问题,那么怎么进一步确定xtrabackup的行为呢?
  (8)再次删除数据恢复数据的过程中进行strace监控,看看xtrabackup到底做了什么在copyback过程中,另开一个会话输出xtrabackup的strace
  〔rootyang〕psauxgrepxtrabackupgrepvcolorautoawk{print2}xargsstraceostraceoutputcopywrite。txtTttfys3000etraceallp
  strace:Process2572attached
  strace:Process2575attached
  4、聊分析
  接下来我们看strace的输出分析straceoutputcopywrite。txt,如下所示:
  上图的说明将我们指向了xtrabackup的判断逻辑出现了问题,如果继续分析我们可以将xtrabackup打一个源码包,进而使用gdb进行分析源代码中的逻辑判断的方法来继续分析,相关使用步骤这里不做过多说明。有兴趣的同学可以参考社区中的《一问一实验》专栏的第9问、第12问和第32问,以及文末的参考文档。
  关于逻辑判断问题大体出在了下图源码中,官方的requests中发现该问题在新版本xtrabackup中已经得到解决,附上链接:https:github。comperconaperconaxtrabackuppull1094。
  代码变更:
  5、扯总结
  本篇文章概括内容有两点:
  (1)遇到备份时MySQL启动报错binlog名称丢掉的情况可能是binlog。index文件中信息丢失,如果是这种情况只要重写该文件重启即可完成数据库的恢复。
  (2)使用xtrabackup版本fromperconaxtrabackup8。0。6toperconaxtrabackup8。0。2316时需要注意binlog文件名如果配置了绝对路径,发生文章中这种报错提前预知,官方已于https:github。comperconaperconaxtrabackupblobperconaxtrabackup8。0。2517storageinnobasextrabackupsrcbackupcopy。cc版本修复。
  6、来参考
  strace的使用技巧:一问一实验12:Tablecache有什么作用
  gdb的使用:一问一实验09MySQL莫名崩溃,如何保留现场
  参考MySQL的调试版本编译xtrabackup:一问一实验39:如何编译MySQL的调试版本
  xtrabackup编译:https:www。percona。comdocperconaxtrabackup8。0installationcompilingxtrabackup。html(文章中有一个坑,建议cmake不要使用B参数)
  源码变更:https:github。comperconaperconaxtrabackupcommitd27028be415b8a1940066d993ca9fa7f1ce1b675
  bug修复版本:https:github。comperconaperconaxtrabackupblobperconaxtrabackup8。0。2517storageinnobasextrabackupsrcbackupcopy。cc
  Linux系统调用函数解释:https:man7。orglinuxmanpagesman2open。2。html
  ps:问题涉及的故障点很容易处理,本篇主要是跟大家分享一些工具的使用以及问题的分析思路,多多学习MySQL周边,共同进步。
  文章推荐:
  故障分析记一次MTS并行复制导致的死锁排查
  故障分析如何提高MHA的网络容忍能力?(下)
  故障分析如何提高MHA的网络容忍能力?(上)
  社区近期动态
  本文关键字:xtrabackupMySQLbinlog
投诉 评论 转载

段子成真!湖北一小车高速逆行6公里,女司机以为是别人开错了近日,湖北黄冈交警接到多名司机举报,称在高速快速车道内有一辆小车逆向行驶。交警立即调查核实,发现该小车上高速时走错匝道,逆行进入快速车道。但她并未察觉自己已经犯错,逆行了约6公……福建一家3口的节俭晚餐,营养美味无油烟,好吃好做经济又实惠福建一家3口的节俭晚餐,营养美味无油烟,好吃好做经济又实惠。在朋友圈晒过我家的一日三餐,朋友和同事纷纷在下面留言,都说我家的伙食太好了,看着特别有食欲,想搬来和我做邻居,……实高记忆那些年我们读过的绵阳实验高中1976绵阳农业机械化学校正式成立1976年,农业现代化如火如荼,时任旺苍县委常委、副书记谷业互同志负责筹建绵阳农业机械化学校,带领师生不辱使命,扎根东岳。荒芜的山头播种……日本小哥哥住26的小屋,把租来的房子,过得精致又美好日本小哥哥住26的小屋,把租来的房子,过得精致又美好经常听到这样一句话,房子可以是租来的,生活却是自己的。在现实的生活中,很少有人能够真正实现这样的状态,所以才会令人羡慕……故障分析xtrabackup吃掉了MySQL的binlog文作者:刘开洋爱可生交付服务团队北京DBA,对数据库及周边技术有浓厚的学习兴趣,喜欢看书,追求技术。本文来源:原创投稿爱可生开源社区出品,原创内容未经授权不得随……孩子的每一个坏习惯背后,是你没看到的需求教育的本质,是父母的自我修行。我们需要在点点滴滴的生活中,对自己有所觉察,觉察越深,与孩子之间的爱就会越容易流动。关系,比任何方法都重要;当然,看见孩子的前提,是看……秦昊因女儿被欺负而落泪,作为父母该如何帮孩子远离霸凌?近期,热播的综艺节目《婆婆和妈妈》中,伊能静和秦昊,谈及女儿换了新学校后的遭遇。听到女儿在新学校被同班男生屡屡欺负的时候,秦昊对着镜头流下了难过的泪水。这泪水里有父亲的心……平平无奇的一天,娃学了国际象棋!差生变优等,核心能力提升文丨福林妈咪近些年,早教、课外培训市场发展得越来越壮大。为了不落于人后,很多家长从小就开始给孩子报班。早教市场的兴起,源于人们对开发儿童潜力的冲动,谁不希望自己家孩……宝妈好心送朋友二手童装,隔天却躺垃圾桶里,网友扔就对了本文由老苗手打原创,拒绝侵权抄袭转载。朋友生下小宝宝,带上礼物送去自己的祝福本来是一件两全其美的好事,可是礼物的选择却是需要多多注意的,否则一旦引起对方的不满,难免会影响……宝宝起名别致又暖心的宝宝小名,听了都喜欢小名其实是至亲的人对孩子表达爱意的一种方式,给宝宝起个好听的小名,有利于拉近与孩子间距离,增加彼此的亲子关系,同时一个好的小名,也可以使宝宝更加快乐健康成长。所以今天小编就给大……孩子总爱钻牛角尖怎么办?终于有人找到办法了女儿:妈妈,今天有同学说我同桌长得好看,但什么都没对我说,是不是觉得我丑啊?妈妈:怎么会呢?乖乖,别乱想啊。妈妈还在做饭,你先去自己玩会儿啊!女儿:妈妈,你是不是也……孩子自立的好处太多,看完这几招家长开心,孩子乐哈哈,赶紧收藏01hr引言当孩子慢慢成长,许多家长会发现,孩子开始会拒绝你的帮忙,不论什么事情,都开始想要自己去动手,有时候明明他并不懂得怎么做,可就是拒绝父母帮自己的忙。对此,许多家……
以下表现的孩子看似情商高,其实内心缺爱,自卑渗透到骨子里童趣小笑话一则从这件小事能看出我两岁儿子是直男么?重新登记退伍军人信息,原来有了新福利了,啥情况呢小袋鼠长大了不依赖靠自己受骗以后分享才快乐屏气凝神造句用屏气凝神造句大全评判谴责和愧疚,是关系中最不需要的东西坏脾气让我明白友好重要性说笑造句用说笑造句大全老板女友爱上我竟携公款要跟我私奔深思职业交际心理测试你擅长处理人际纠纷吗双子座男人与天蝎座配吗(天蝎座和摩羯座配吗)数学教学总结朋友圈屏蔽他们最大条鱼不是李铁?归化球员不被重用,是国足难入世界杯最大败笔合在一起成新字教案天台山旅游攻略(浙江天台山一日游攻略)2023年,不管日子多苦,都要好好赚钱原来他就是北京交大的守护神岳不群究竟知不知道劳德诺是卧底?他为何还要嫁祸令狐冲?什么时候洗澡更健康汉景帝为何不立栗姬为后对于咿呀学语的宝宝,要怎么提升词汇量?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找