首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql锁-全局锁

图:上海外滩

mysql锁

Mysql包含 全局锁, 表级锁, 行级锁三种

全局锁

介绍

全局锁就是对整个数据库实例加锁。

使用 命令 来对数据库实例加全局锁。

加全局锁之后会怎样?

使用FTWRL命令后,下列操作将被堵塞:

数据更新语句(数据的增删改)

数据定义语句(包括建表、修改表结构等)

更新类事务的提交语句。

整个库处于只读状态

使用场景:

做全库逻辑备份。

风险

作用在主库时:备份期间只读,导致业务停摆,无法执行更新

作用在从库时:备份期间从库只读,无法执行主库同步过来的binlog,导致主从延时

应该如何做备份?

Innodb引擎下

因为Innodb引擎支持一致性读,即支持可重复读(含)以上事务隔离级别,所以在事务开启的情况下,可以拿到一致性视图。之后进行备份。

官方提供了mysqldump工具

增加参数single-transaction,会再导数据前启动一个事务,拿到一致性视图,之后便可以进行备份。

补充:

single-transaction只支持全部表支持事务引擎的库,否则只能使用FTWRL备份

MVCC支持,所以在导数据期间数据可更新

MyISAM引擎下

不支持事务,即不支持一致性读,所以无法通过开启事务拿到一致性视图来进行导数据备份

可通过使用FTWRL备份

使用 set global readonly = true 设置库进行只读状态,之后备份

可让库进入到只读状态,但不建议使用

备注:readonly对super权限无效

注:内容总结整理自极客时间课程《Mysql实战45讲》

BTW:回复 “Mysql锁”关键字,可获取本文脑图

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190217G0YIKX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券