做的好的招投标网站,设计公司企业标志,wordpress 移动导航呼出,公众号制作教程视频文章目录 mysql按照锁的粒度分类全局锁概念#xff1a;全局锁使用场景#xff1a;全局锁备份案例#xff1a; mysql按照锁的粒度分类
全局锁
概念#xff1a;
全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法#xff0c;命令是:
Flush tables with… 文章目录 mysql按照锁的粒度分类全局锁概念全局锁使用场景全局锁备份案例 mysql按照锁的粒度分类
全局锁
概念
全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法命令是:
Flush tables with read lock (FTWRL)。 当你需要让整个库处于只读状态的时候可以使用这个命令之后其他线程的以下语句会被阻塞数据更新语句数据的增删改、数据定义语句包括建表、修改表结构等和更新类事务的提交语句。通俗的来说只能读取不能写入
解锁命令
unlock tables全局锁使用场景
全局锁的典型使用场景是做全库逻辑备份mysqldump),对所有表进行锁定从而获取一致性视图保证数据的完整性一致性
全局锁备份案例
第一步 使用命令
Flush tables with read lock进行全局锁表 全局锁表成功当所有所有表被锁后只能读无法写:
多个session测试 第二步
当全局锁时进行逻辑备份数据 数据备份成功
第三步解锁
解锁命令
unlock tables解锁成功后数据库就可以恢复正常的读写状态
特点 数据库中加全局锁是一个比较重的操作存在以下问题 1、如果在主库上备份备份期间都不能执行更新。业务基本停止了
2、如果从库上备份备份期间从库不能执行主库同步过来的二进制日志会导致主从延迟
在innodb存储引擎重可以在备份的时候加上参数--single-transaction参数来完成不加锁的一致性数据备份