mysql 备份方式和原理二

innobackupex备份过程:

      1、根据命令行参数给定的IP,用户名和密码,使用perl-DBI连接到MySQL中,并执行两次版本检查

      2、读取配置文件,找到相应的数据和日志文件位置

      3、start xtrabackup_log:创建xtrabackup_logfile文件,模拟mysql instance方式,以读写模式打开并读取redo log,

            检查当前checkpoint点,从当前checkpoint点位置开始拷贝redo log,同时持续扫描redo log,有新产生的redo log

            数据就拷贝到xtrabackup_logfile文件中

      4、copy innodb tables .ibd、.ibdata1、undo logs

      5、flush no_write_to _binlog tables、flush tables with read lock;

      6、copy non-innodb tables  .MYD、MYI、.frm、opt、misc files和innodb tables  .frm、opt、misc files

      7、get binary log file position 写到xtrabbackup_info文件中

      8、flush no_write_to_binlog engine logs  在所有事务表和非事务表备份完成,获取全局读锁,且show master status获取binlog pos后,执行刷新redo log buffer中的日志到磁盘中,然后redo log copy线程拷贝最后的redo log日志数据 

      9、stopping log copying thread   拷贝完成后就停止copy线程并关闭xtrabackup_logfile文件,然后unlock tables释放全局读锁

     10、unlock tables

     11、备份收尾工作:生成backup-my.cnf、xtrabackup_info等文件,完成后退出innobackupex备份进程

innobackupex备份获得一个一致性备份,会使用flush tables(刷新表缓存),flush tables with read lock(加全局读锁):

       1、如果会话中使用lock tables 对表加了表锁,在该锁未释放前,另外的会话执行flush tables和flush tables with read lock会被阻塞,如果数据库lock_wait_timeout参数时间太短,innobackupex会因执行flush tables with read lock获取全局读锁超时导致备份失败退出

       2、如果会话在执行DDL语句,另一会话执行flush tables和flush tables with read lock会被阻塞,如果数据lock_wait_timeout参数时间太短,innobackupex会因执行flush tables with read lock获取全局读锁超时导致备份失败退出

       3、如果会话正在执行DML大事务(不使用lock in share mode 和for update显式枷锁),另一会话执行flush tables 和flush tables with read lock会被阻塞,如果数据库lock_wait_timeout参数时间太短,innobackupex会因执行flush tables with read lock获取全局读锁超时导致备份失败退出

         但是在执行备份中发现在flush no_write_to_binlog tables语句之前,会set session lock_wait_timeout=31536000,将锁超时时间修改,获取全局读锁等待时间太长,可以使用参数--kill-long-queries-timeout对获取flush tables with read lock全局读锁超过时间阈值的查询执行kill.

         参数:--kill-long-query-type=all|select     哪些类型在指定时间之后未执行完时被kill掉

                    --kill-long-queries-timeout=seconds  默认0,不启用kill掉任何查询。否则到指定时间执行kill操作

PXBå¤ä»½è¿ç¨

详细请参考taobao内核月报:http://mysql.taobao.org/monthly/2016/03/07/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值