FLUSH TABLE WITH READ LOCK操作明细

ftwrl主要有三个步骤:

  1. 上全局读锁(lock_global_read_lock)
  2. 清理表缓存(close_cached_tables)
  3. 上全局 COMMIT 锁(make_global_read_lock_block_commit)

第一步的作用是堵塞更新,备份时,我们期望获取此时数据库的一致状态,不希望有更多的
更新操作进来。对于 innodb 引擎而言,其自身的 MVCC 机制,可以保证读到老版本数据,
因此第一步对它使多余的。
第二步,清理表缓存,这个操作对于 myisam 有意义,关闭 myisam 表时,会强制要求表
的缓存落盘,这对于物理备份 myisam 表是有意义的,因为物理备份是直接拷贝物理文件。
对于 innodb 表,则无需这样,因为 innodb 有自己的 redolog,只要记录当时 LSN,然后
备份 LSN 以后的 redolog 即可。
第三步,主要是保证能获取一致性的 binlog 位点,这点对于 myisam 和 innodb 作用是一
样的。
所以总的来说,FTWRL 对于 innodb 引擎而言,最重要的是获取一致性位点,前面两个步
骤是可有可无的,因此如果业务表全部是 innodb 表,这把大锁从原理上来讲是可以拆的。
所以如果你的表引擎是 innodb 的话,你不想在备份的时候全局读锁导致数据查询失败。你
可以加上 --single-transaction。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值