mysql备份优化_MySQL备份流程及优化

1.Flush table with read lock 的认识:

Flush table with read lock(简称:  FTWRL) 有哪些问题:

例如让DBA头大的long query,FTWRL需要等待所有的表没有引用后关闭所有表,long query 导致FTWRL无法执行成功。这也是经常备份被hung住,有可能导致备份失败。

2.老版本如何获得一致性的备份:

2.1 mysqldump

早期使用mysqldump 来备份,xtrabackup 成为当前主流Inoodb+MyiSAM热备工具。

从MySQL 5.1开始: 在最后备份非事务引擎表的时候为了获得一致性备份需要在MySQL上获得  Flush table with read lock,有可能在压力大的库或者有事务没有正常关闭的连接在,会导致备份无法因超时后导致备份失败。还有如果在master 上备份会导致加FTWRL到最后这段时间会堵塞所有的DML,Master这段时间变成只读,长短取决于非事务表的数量和大小。

percona server 从5.6.16-64.0开始优化了mysqldump备份,引入轻量级锁,lock tables for backup  和   lock binlog for backup。mysqldump 增加参数:--lock-for-backup

2.2 xtrabackup:

version<2.2.0 :也是加FTWRL,和老版本mysqldump类似。老版本的改进:Improved FLUSH TABLES WITH READ LOCK handling:https://www.percona.com/doc/percona-xtrabackup/2.1/innobackupex/improved_ftwrl.html。

version>=2.2.0 引入轻量级锁,lock tables for backup;  和   lock binlog for backup;

xtrabackup物理备份流程变化如下:

修改之前(<2.2.0 )的流程:

1.get Redo LSN

2.copy 系统表空间+事务引擎表的数据文件+后台子进程(IBACKUP)拷贝Redo

3.FLUSH TABLES WITH READ LOCK

4.copy 所有 *.frm文件,非事务引擎表(MyISAM、ARCHIVE等)数据+索引文件

5.Get the binary log coordinates(坐标/位点)

6.finalize the background copy of REDO log

7.unlock tables;

修改之后(>=2.2.0 )的流程:

1.get Redo LSN

2.copy 系统表空间+事务引擎表的数据文件+后台子进程(IBACKUP)拷贝Redo

3.LOCK TABLES FOR BACKUP

4.copy  所有 *.frm文件,非事务引擎表(MyISAM、ARCHIVE等)数据+索引文件

5.LOCK BINLOG FOR BACKUP

6.finalize the background copy of REDO log

7.UNLOCK TABLES;

8.get the binary log coordinates(坐标/位点)

9.UNLOCK BINLOG

3.优化的目标

3.1 引入备份锁的优势

LOCK TABLES FOR BACKUP:

作用:获取一致性数据

a)禁止非事务引擎(非InnoDB)表写入(也即DML)。

b)禁止所有表的DDL。

优点:

a)不会被大查询阻塞。

b)不会堵塞innodb表的读取和更新,这点非常重要,对于业务表全部是并innodb的情况,则备份过程中DML完全不受损。

LOCK BINLOG FOR BACKUP:

作用:获取一致性位点。

a)禁止对binlog的位点操作(不允许DML、DDL)

优点:

a)时间短,对db的影响很小。

下面是xtrabackup-2.2.4的备份主要log:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值