设为首页 收藏本站
查看: 570|回复: 0

[经验分享] XtraBackup物理备份MySQL的流程

[复制链接]

尚未签到

发表于 2018-10-6 10:52:52 | 显示全部楼层 |阅读模式
简介:
  Percona XtraBackup包含两个主要的工具即:xtrabackupinnobackupex
  xtrabackup:只能备份类InnoDB事务引擎的表(目前有InnoDB,XtraDB),不支持备份非事务引擎的表。
  innobackupex:封装了xtrabackupperl脚本,支持在全局读锁下的非事务表备份,支持无全局读锁下的事务表。
  在数据文件超过10G左右时,逻辑备份的select * from table的方式会严重影响系统效率,挤出部分热数据,这时候可以考虑使用Percona公司开源的Percona XtraBackup工具进行偏向于物理备份的方式,生成线上一致性热备份。
安装:
  推荐安装percona公司的源然后yum安装
yum -y install https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm  
yum -y install percona-xtrabackup-24
innobackupex备份流程:
  1.备份开始时先开启一个后台检测进程,实时监测redo的变化,一但发现redo中有新日志写入,立刻将日志记入其的后台日志(xtrabackup_log)中;
  2.复制InnoDB表的数据文件,系统表空间文件ibdata1,完成后进入下一步;
  3.执行全局读锁,锁住所有的表(事务,非事务),拷贝非事务表的文件(.frm .MYI .MYD),获取binlog位置,解锁全部表;
  4.停止xtrabackup_log,结束备份。
阶段解释生成xtrabackup日志文件软件本身开启一个用来保存redo的日志拷贝InnoDB相关文件(.ibd表数据文件,ibdata1回滚空间)FTWRL,全局读锁非事务表不支持用事务保证一致性,需要读锁拷贝innoDB表结构文件frm,非事务表的全部文件获取binlog位置以此位置作为备份的全局位置释放全局读锁备份初步结束停止xtrabackup的日志工作备份结束  备份语句:
innobackupex --defaults-file=/etc/my.cnf --user=bak --password=bak123 --stream=xbstream .|gzip cat ->xtrabak.xb.gzinnobackupex恢复流程:
  启动XtraBackup软件包自带的InnoDB实例,回放xtrabackup过程中收集的xtrabackup_log;
  根据binlog,回放binlog中已经登记,但redo中未提交但已经prepare的事务;
  根据binlog,回滚binlog中未登记,但redo中已经prepare的事务;
  将应用好的文件拷回要被恢复实例的数据目录,赋予mysql用户的权限即可。
#解压  
gunzip all.xb.gz -c|xbstream -x -C /data/full
  
#应用xtrabackup_log
  
innobackupex --apply-log --use-memory=1G /data/full
  
#拷回预备恢复的文件,也可以用手工拷贝代替
  
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/full
  
#将拷回的文件所有权赋给mysql用户
  
chown -R mysql.mysql /data/mysql/3306
  
#启动数据库
  
mysqld --defaults-file=/etc/my.cnf
附:
  1.使用xbstream而不是tar的原因:
  传统复制的情况下,从从库备份,需要获得从库的复制信息,可以使用--slave-info参数,这样复制信息会附加在备份文件包中,但是用tar的时候,会遇到主从复制信息的描述文件在tar包中被截断的问题。转用xbstream流传输后没有问题。另外,如果使用GTID,不考虑获取binlog filepos的话,tar或者xbstream都可以接受。
  2.不推荐使用增备的原因:
  1.增备恢复步骤繁琐(需要在最后一个增备之前,只应用redo,最后一个才应用全部xtrabackup_log,拷回也麻烦)
  2.与全备加binlogserver相比,不能恢复增备之间任意时间点的数据。
  3.总的来看,innobackupex仍是物理备份为主,辅以逻辑备份完成数据一致性的备份方式。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-613600-1-1.html 上篇帖子: LAMP架构介绍Mysql安装 下篇帖子: show profiles 查看MySQL语句的执行时间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表