幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

MySQL常用备份工具流程解析

  下面我们就看一下常见的备份工具,以及目前最流行的PerconaXtraBackup的备份流程。一、备份工具介绍1。1常见备份工具介绍
  MySQL常见的备份工具主要分为三种:逻辑备份,包含mysqldump和Mydumper;物理备份,包含Mysqlbackup和PerconaXtraBackup;binlog备份,包含mysqlbinlog。
  这里先说一下binlog备份,它只是把binlog又复制了一份,并且需要在逻辑备份或者物理备份的基础上才能进行数据恢复,无法单独进行数据恢复。(1)逻辑备份:mysqldump
  mysqldump备份出的文件就是sql文件,其核心就是对每个表执行select,然后转化成相应的insert语句。mysqldump的备份流程大致如下:对某个库下所有表加读锁;循环备份备份表数据;释放读锁;循环上面三个步骤;备份完毕。
  从上面可以看出在mysqldump备份期间,备份到某个数据库时,该数据库下的表都会处于只读状态,无法对表进行任何变更,直到该库下的表备份完毕,这对于线上环境一般是无法接受的。若是指定了masterdata或者dumpslave则会在备份开始时加全局读锁(FLUSHTABLESWITHREADLOCK),直到备份结束。当然我们可以选一个从库进行备份,这样就不会影响线上业务。另外使用mysqldump备份还有一个最大的好处,因为备份出来的是sql语句,所以它支持跨平台和跨版本的数据迁移或者恢复,这是物理备份无法做到的。
  但是也正是因为mysqldump备份出来的是sql语句,在使用时要更加注意,否则可能会酿成大祸。例如,使用mysqldump常见的问题有:本来迁移部分数据到新实例,结果把原有数据删除了;由于时区问题,发现恢复出来的表和时间相关的数据不对;在主库导入备份数据后,发现从库没有同步;由于字符集问题,发现恢复后数据出现了乱码;。。。
  所以使用mysqldump时一定要了解各个选项的作用,以及确认备份出来的sql文件里会有什么操作,会对现有数据造成什么影响。
  Mydumper原理与Mysqldump原理类似,最大的区别是引入了多线程备份,每个备份线程备份一部分表,当然并发粒度可以到行级,达到多线程备份的目的。这里不再单独介绍。(2)物理备份:PerconaXtraBackup
  PerconaXtraBackup是Percona公司开发的一个用于MySQL数据库物理热备的备份工具,是基于InnoDB的崩溃恢复功能来实现的。它的基本工作原理如下:在启动时创建一个redolog拷贝进程,获取并记录当前的日志序列号(LSN),从该位点开始持续拷贝有变化的redolog;开启idb文件拷贝线程,拷贝ibdata1,undotablespaces及所有的ibd文件;ibd文件拷贝结束,通知调用FTWRL(或加备份锁);备份非InnoDB数据(。frm、。MRG、。MYD、。MYI。。。。。。等文件);备份slave和binlog相关信息;刷新日志,拷贝最新的redolog完成后退出日志拷贝线程;释放全局锁,记录备份元数据等,备份结束。
  PerconaXtraBackup在进行恢复时会应用拷贝的redolog,应用已提交的事务,回滚未提交的事物,将数据库恢复到一致性状态。因为PerconaXtraBackup备份出来的是物理文件,所以在使用备份出的文件进行恢复或者迁移时,不会像mysqldump那样会存在很多问题。
  使用XtraBackup备份时根据备份参数设置不同,对数据库的变更会造成不同程度的影响,具体影响会在下文分析。(3)备份工具对比
  通过对比发现,XtraBackup具有对数据库影响小,且能快速恢复的优点,在日常备份中是首选;mysqldump使用相对更加灵活,但是使用是要注意对数据库原有数据的影响。1。2备份策略
  备份策略主要有:全量备份和增量备份,再加上binlog备份。
  目前去哪儿网数据库备份主要采用XtraBackup全量备份binlog备份。数据库的重要级别不同,全量备份的频率不同。备份程序主要架构如下:
  说明:备份调度程序会根据设置的备份策略来调度备份任务;数据库备份采用XtraBackup流式备份,直接传输到备份机;备份完成后applylog,这样既可以验证备份的可用性,也在使用备份时减少了applylog时间;压缩备份;binlog备份是定时执行,使用rsync存储到MFS存储。二、XtraBackup备份流程解析
  PerconaXtraBackup是目前备份MySQL使用最广泛的工具。在备份过程中,数据库可以进行正常的读写或者其他变更操作,但是偶尔也会遇见备份引起的元数据锁,或提交事务时发现被binloglock阻塞等情况。下面我们就看一下PerconaXtraBackup的备份流程和加锁时机。
  说明:以下对PerconaXtraBackup的分析都是基于2。4。23的版本,其他版本会略有差别,但是关键步骤基本相同。2。1拷贝redo日志
  XtraBackup在备份开始时,会创建一个后台线程,专门用于拷贝数据库的redolog。首先XtraBackup会扫描每组redolog的头部,找出当前的checkpointlsn,然后从该lsn后顺序拷贝所有的redolog,包括后续新产生的redolog。该线程会一直持续到将非事务表完全拷贝完成,才会安全退出。备份日志输出中会记录拷贝开始时的checkpointlsn。日志输出如下:
  2。2拷贝ibd文件
  在拷贝ibd文件之前,会先扫描数据库的数据文件目录,获取ibdata1,undotablespaces及所有的ibd文件列表,并会记录相应的spaceid,因为在恢复时需要这些spaceid来找到对应doublewritebuffer里页面的内容,以及对应的redolog条目。然后开始循环拷贝ibdata1,undotablespaces及所有的ibd文件。
  这里可通过设置parallel进行多线程备份,提高物理文件的拷贝效率。不设置则默认为1。2。3拷贝非ibd文件
  在所有ibd文件拷贝完成后,XtraBackup开始备份非ibd文件。这一部分的逻辑比较复杂,因为备份非ibd文件前需要加锁,具体是否会加锁主要受到nolock参数设置的影响。2。3。1nolock选项参数说明
  若是设置了nolock为TRUE,则不会使用FLUSHTABLESWITHREADLOCK去加全局读锁,但是若备份过程中对nonInnoDB表执行了DDL或者DML操作,这会导致备份的不一致,恢复出来的数据就会有问题。所以是不建议将nolock为TRUE,默认值是FALSE,也就是在不指定该选项的情况下会在备份非ibd文件前加全局读锁。
  下面我们结合源码来看看判断是否加全局锁这部分的具体流程逻辑:
  流程图如下:
  总结来看:
  1)若nolock为FALSE(默认值),则先施加全局读锁,然后再进行拷贝文件,另外若safeslavebackup设置为TRUE,则会在加全局锁之前关闭SQLTHREAD线程;
  2)若nolock为TRUE,则不会施加锁,直接进行拷贝文件。2。3。2加锁处理逻辑
  加锁的逻辑主要由locktablesmaybe实现,先看一下locktablesmaybe源代码,如下:
  locktablesmaybe函数简化处理流程如下:
  1)若备份实例上已经加锁(LOCKTABLESFORBACKUPFLUSHTABLESWITHREADLOCK)或者设置lockddlpertable则直接返回;
  2)若支持备份锁,则执行LOCKTABLESFORBACKUP;
  3)若不支持备份锁,则执行FLUSHTABLESWITHREADLOCK。根据相应选项设置,在执行该操作前会判断是否有执行中的DDLDML,以及等待超时时间,是否kill对应的未结束的事务等。
  从上文中我们还看到一个参数safeslavebackup,该参数的主要作用是:
  若是在从库执行的备份操作时设置了该参数,可以防止因从库同步主库操作,而导致XtraBackup长时间请求不到锁而造成备份失败。
  若是设置了safeslavebackup为TRUE,那么会执行STOPSLAVESQLTHREAD,并等待Slaveopentemptables为零才开始拷贝非ibd文件,Slaveopentemptables为零说明SQLthread执行的事务都已经完成,这样就能保证备份的一致性。并且此时也不会有在执行的事务阻塞XtraBackup施加全局锁。2。4备份slave和binlog信息
  备份完非ibd文件后,将会备份slave和binlog信息。如果命令行中指定了slaveinfo,则会执行SHOWSLAVESTATUS获取复制的相关信息并记录到xtrabackupslaveinfo文件中,主要包含从库同步到的主库的binlog位点(RelayMasterLogFile,ExecMasterLogPos)或者GTID值(ExecutedGtidSet)等。下面是基于GTID复制备份时xtrabackupslaveinfo文件记录的复制相关信息:SETGLOBALgtidpurged6b7bda9f15f011ecba14fa163ea367a4:183,9841546e15f011ec9557fa163e736db4:1;CHANGEMASTERTOMASTERAUTOPOSITION1复制代码如果命令行中指定了binloginfo,则会执行SHOWMASTERSTATUS获取Binlog的位置点信息,并记录到xtrabackupbinloginfo文件中。主要信息包含当前的binlog文件名,binlog位点以及当前的GTID。binloginfo无需显式指定,因为它的默认值为AUTO,如果开启了Binlog,则为ON。xtrabackupbinloginfo文件内容如下:
  mysqlbin。00000420046b7bda9f15f011ecba14fa163ea367a4:183,9841546e15f011ec9557fa163e736db4:1mysqlbin。00000420046b7bda9f15f011ecba14fa163ea367a4:183,9841546e15f011ec9557fa163e736db4:1复制代码
  需要注意,在支持备份锁的实例上备份,指定了slaveinfo或binloginfo均会先施加binlog备份锁(LOCKBINLOGFORBACKUP),这会阻塞任何会更改binlog位点的操作。2。5备份结束
  备份完数据库的所有文件和binlog等相关信息,备份工作就基本完成了,之后主要执行的操作如下:
  1)执行FLUSHNOWRITETOBINLOGENGINELOGS,将所有的redolog刷盘;
  2)停止redolog复制线程;
  3)释放全局读锁(备份锁),binlog锁;
  4)开启SQLTHREAD;
  5)拷贝ibbufferpool和iblrudump文件;
  6)生成配置文件backupmy。cnf;
  7)打印备份信息到xtrabackupinfo文件,这些信息主要包含备份时使用的参数信息,备份起止时间,binlog位点信息,以及将会回到的lsn点。
  下面是xtrabackupinfo记录的部分内容:
  三、PerconaXtraBackup和锁相关的参数与操作3。1相关参数lockddl:若在支持备份锁的实例上指定该选项,则会在备份开始时执行LOCKTABLESFORBACKUP,以阻止所有的DDL操作。加锁时间是在拷贝redolog的线程创建前,并持续加锁到dumpbufferpool前释放锁。看一下相关的日志:
  lockddlpertable:在备份开始时对每个innodb表施加元数据锁,防止其上的DDL操作。加锁时间也是在拷贝redolog的线程创建前,持续到所有备份工作完成后才释放锁。看一下相关的备份日志:
  加锁对应的函数是mdllocktables,释放锁对应的函数是mdlunlockall,主要是执行COMMIT,结束mdllocktables中开启的显式事务,来释放MDL锁。mdllocktables流程如下:
  nolock详见2。3。1节内容
  上面参数lockddl和lockddlpertable是在PerconaXtraBackup2。4。8之后添加的,因为MySQL5。7新增了一个叫做SortedIndexBuilds的功能,这会导致某些DDL操作不记录重做日志而导致备份失败。使用lockddl或lockddlpertable就会在备份开始时施加锁,阻止DDL操作。
  另外,若备份时指定了lockddl或lockddlpertable,则在备份非ibd文件时就不是再有加锁操作。3。2数据库中执行的加锁操作LOCKTABLESFORBACKUP:使用新的MDL类型锁,用于阻止所有非事务表的DML,以及所有类型表的DDL操作,但是不影响无锁情况的select操作和对事务表的DML操作。在LOCKTABLESFORBACKUP下执行DDL或者对非事务表执行DML,则会被堵塞,执行showprocesslist可以看到被阻塞线程状态为Waitingforbackuplock。LOCKBINLOGFORBACKUP:使用的是另一种新的MDL类型锁,用于阻止所有可能更改二进制日志位置或ExecMasterLogPos或ExecGtidSet的操作。在LOCKBINLOGFORBACKUP下执行任何会更改binlog位点的操作都会被阻塞,执行showprocesslist可以看到被阻塞线程状态为Waitingforbinloglock。FLUSHTABLESWITHREADLOCK简称(FTWRL):关闭所有打开的表并使用全局读锁锁定所有数据库的所有表,这时数据库处于只读状态,任何DDLDML操作都会被阻塞。执行showprocesslist可以看到被阻塞线程状态为Waitingforglobalreadlock。另外,由于FTWRL需要关闭表,如有大查询,会导致FTWRL等待,进而导致DMLDDL堵塞的时间变长。即使是备库,也有SQL线程在复制来源于主库的更新,上全局锁时,会导致主备库延迟。
  注意:LOCKTABLESFORBACKUP和LOCKBINLOGFORBACKUP语句只有在支持备份锁的实例上才会执行,PerconaServerforMySQL已经在5。6。1664。0版本开始支持这种更加轻量的备份锁。四、思考
  Q1:使用XtraBackup备份的文件进行恢复时,恢复到哪个时间点?A1:恢复到执行LOCKBINLOGFORBACKUP或FLUSHTABLESWITHREADLOCK的时间点,因为这时任何改变binlog位点的操作都会被阻塞,redolog和binlog是一致的。
  Q2:在开启binlog的情况下,MySQL的奔溃恢复是同时依赖binlog和redolog这两种日志的,为什么XtraBackup不用备份binlog?
  A2:因为在备份中有执行LOCKBINLOGFORBACKUPFLUSHTABLESWITHREADLOCK,阻止了任何改变binlog位点的操作,这样只需要根据redolog将有commitlog的事务提交,没有commitlog的事务进行回滚即可。
  Q3:使用PerconaXtraBackup备份完成后redo的位点是和binlog是一样还是比binlog多一些?
  A3:通过分析备份流程可以发现备份binlog位点信息(加binlog锁)是发生在停止redo拷贝线程前,而释放锁是在停止redo拷贝线之后,所以redolog会多一些。锁住了binlog保证了在该binlog位点前已经提交的事务的redolog都有commitlog的信息,未提交的事物也就没有对应的commitlog的信息,即便在锁住binlog后有Innodb表新的DML产生的redolog,但是事务无法提交,也就没有commitlog的信息的,最后在回放的过程中对没有commitlog的事务进行回滚就可以了。
  Q4:PerconaXtraBackup什么时候会加锁,以及影响加锁时间长度的因素有哪些?
  A4:上面进行了分析,加锁操作只在备份非ibd文件时执行,加锁时长主要和非事务表的数量和大小有关,非事务表的数量越多,体积越大,拷贝文件所用的时间越长,那么加锁时间也就越长。也会和redolog生成的速度有关,只是redolog刷盘受到多个因素的影响,未及时刷盘的redolog一般很小。
  Q5:PerconaXtraBackup和mysqldump选择哪个更好?
  A5:通过上面的的解析,若是整个实例备份,首先选择PerconaXtraBackup,因为对数据库的影响最小。若只是备份某个库表,这个就要视数据量而定,若数据量不大可以使用mysqldump。注意,对数据库做备份时最好选择业务连接最少的从库,因为备份也会消耗一定的资源,避免影响业务。

转型中的小米图片来源视觉中国文光子星球,作者吴先之,编辑王潘8月19日,小米披露2022年第二季度与半年报,数据显示,Q2小米实现营收702亿元,同比下滑20,经调净利润21亿……人生赢家伊戈达拉很多球迷朋友,在提到伊戈达拉,第一时间想到的是抱勇士大腿,14赛季抢走库里总决赛MVP,混了4枚总冠军戒指,可在我看来,伊戈达拉就他NBA球员生涯来看,他是妥妥的人生赢家。……他,30岁获杰青资助,40岁评上院士,刚刚团队成果登上Nat考研经验大家谈反芳香丁富烯的通用构筑方法自从1865年凯库勒首次提出苯环的结构以来,人们开发了大量关于苯及其衍生物的合成方法。在苯环的结构中,由于存在六元环的电子结……Web3。0,泡沫还是机遇?来源Tech数字星球山雨欲来风满楼。关于Web3,从业者的呐喊声、旁观者的议论声犹如洪水一般袭来,有期待、有追捧、有质疑,到底哪一个描述才是真实的Web3?有人说所……华硕也出手了,DIY电竞电脑未来者降价,配RTX3060售5前几天,我们介绍了联想的DIY品牌异能者,这几天,华硕的DIY品牌未来者就来了,其也是明显标注各种配件的厂家,型号,并提供3年质保,预装系统,让我们来看看。可以看到,未来……罚罪最出人意料的卧底,特种强兵邱涛,最后命运让人担忧《罚罪》作为一部刑侦剧有两个类似无间道的看点:赵啸声手里的大王是谁?严国华手里的王牌卧底是谁?很多观众都会认为,这两个最隐秘的人物估计会一直潜伏到《罚罪》结尾,没想到的是……华为mate50懂的人都觉的值华为发布会结束了,欢喜忧愁各有见解,不友好的每年重复的酸和幽怨,不明真相的人一看价格也跟风点火,不过没有关系,喜欢还有理性的人一直会继续喜欢。为什么说华为的Mate经典款……热火与凯尔特人的完美交易,热火赢在未来,绿军现在就要夺冠凯尔特人夏天为了得到杜兰特,多次将杰伦布朗摆放在了谈判筹码中,这个行为无疑会伤害到布朗。尽管凯尔特人已经展开了安抚工作,但是破镜难重圆,裂痕已产生。凯尔特人对布朗的不尊重必然为……北极变暖速度全球第一,1。4万亿吨甲烷或被释放!会有什么后果在我们的印象中,地球的南极和北极应该是地球上最冷的区域,放眼望去一望无际的肯定是茫茫冰雪,在极夜期间天空中挂满的将是绚烂多彩的极光,冷寂用来形容地球的两极应该是再恰当不过了。但……你不了解的月嫂行业的前景,就会错失财富的光顾月嫂是专门照顾月子期间产妇和新生儿的一个职业,是集育婴师、催乳师、产康师、厨师、护士的工作性质于一身的高级家政服务人员。01hr育儿观念的转变中国目前的社会大环境、……5年击败阿里,耻与马云并肩,郭凡生为啥这么狂?1hr大家注意看这段视频。视频是2005年的一段央视财经节目《赢在中国》,视频中这位戴眼镜的中年人叫郭凡生,他正与台下的一名观众辩论:他创立的慧聪网和阿里巴巴,哪一个更有前途?……翟山鹰爆联想大料联想有关话题长期是民众和广大网民热议的话题,联想被热议的原因有很多,一是联想是知名科技公司,二是有关联想话题都是以前民众不知道的,三是联想有关话题和争议没有得到权威定论。……
PS会员没被抛弃会免黑相集可免费升级次世代版日前,我们曾报道,PS基础会员领取的《黑相集:棉兰号》无法升级至次世代版本,购买版本可以升级。而现在,通过会免领取的玩家也已经可以免费升级次世代版本了,还没玩过的朋友可以去试试……宁波周末去哪玩?这三个超级小众的地方,拍照嘎嘎好看宁波的秋天温度已经到达!还没有安排去哪里玩的朋友往这儿看!这三个超级小众的地方,非周末去几乎没啥人!在这片无人之境之中,拍照嘎嘎好看!大堰五洞桥地址:奉化区大堰五洞桥……苔写丹青,次第花开记龙坪镇中心幼儿园特色文化打造广东省清远市连州市龙坪镇中心幼儿园委托方:龙坪镇中心幼儿园委托项目:幼儿园文化打造设计方:武汉蓝魔方文化发展有限公司联合出品:清远市简乐文教用品有限公司……华为Nova65G版的使用体验摒弃高刷屏手机换鸿蒙系统值吗?从发布这篇文章开始倒推计算的话,我入手华为Nova65G版这款手机已经半月有余了,写这篇文章的主要目的是想分享一些我对这款手机的使用体验。不过在分享我的使用体验之前,我觉得有必……山东男篮内讧?CBA名将表达不满矛头指向徐长锁如果不是黄荣奇最后时刻的几次失误,或许本赛季CBA最大冷门将会诞生,好在山东男篮有惊无险的击败了江苏男篮,不过就在比赛结束之后,本赛季重返山东男篮的刘冠岑在微博上发声,他写道如……原神2。4版本卡池实锤,上半申鹤魈云堇,下半甘雨钟离2。4版本卡池已经实锤,上半申鹤魈云堇,下半甘雨钟离。2。4版本1月5日开启,申鹤和魈在第一个卡池,武器池可能是息灾和璞鸢。2。4版本不仅开启了3复刻的先河,还开启了新角……蒸红薯直接上锅蒸是大错!教你一招,红薯个个流油,和烤一样香甜大家好,我是大雄,秋天的红薯最适合用来蒸制了,但是直接就下锅的话,味道和口感都会有所折扣。想要蒸出甜蜜又流汁的红薯,是需要掌握一定的蒸制技巧的,学会以后,再也不用去买外面……92年前,看看首届世界杯上,这位传言会用巫术,将球员瞬间迷倒有人说,二十世纪,是人类历史上最辉煌、最曲折、也最令人感慨的年代。足球世界也是如此,从1930年世界杯开始,足球走进了世界上的每个地方,照亮了黑暗中的角落,传递着爱和勇敢,以及……小鹏连续4个月负增长,极氪问界跃然居上图片来源视觉中国文赛博汽车原本该是金九银十的销量旺季,今年10月的新能源汽车市场却略显平淡。市场大盘来看,无论是终端零售还是预估的批发量增长幅度,均小于去年同……2022年最佳婴儿背带头条创作挑战赛几个世纪以来,新妈妈们一直依靠papooses、wraps、meitais和其他装置来让宝宝靠近。并且有充分的理由。如果您在最初的几个月(及以后)带着婴儿外……越吃越年轻的5种食物,看看有你爱吃的吗?常吃延缓衰老,显年轻导语:衰老作为人体必不可免的生理性活动,不如30岁后皮肤表层,细胞活力越来越弱,眼部皱纹和色斑逐渐滋生,85。6以上的女性,为了延缓肌肤的衰老状况,让整个人看上去更显年轻,通常……智能客服怎样为企业营销做得更多?现在,几乎每个企业都在使用AI智能客服。利用客服机器人可以自动接待客户,减轻人工压力,实现降本提效。那么,智能客服除了取代客服中心的一部分人工作业,还能做哪些呢?它的未来……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网