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参数来完成不加锁的一致性数据备份

相关推荐

  1. 关于Mysql知识整理,全面了解Mysql规则

    2024-06-07 11:28:08       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 11:28:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 11:28:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 11:28:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 11:28:08       20 阅读

热门阅读

  1. C# 证件照替换底色与设置背景图---PaddleSegSharp

    2024-06-07 11:28:08       9 阅读
  2. 详解MySQL的间隙锁

    2024-06-07 11:28:08       9 阅读
  3. mm-qcamera-daemon主函数分析

    2024-06-07 11:28:08       7 阅读
  4. Mysql基础进阶速成版

    2024-06-07 11:28:08       7 阅读
  5. 在 Vue 中实现算法可视化

    2024-06-07 11:28:08       10 阅读
  6. Elixir学习笔记——关键字列表和映射

    2024-06-07 11:28:08       8 阅读
  7. SwiftUI二列表和导航

    2024-06-07 11:28:08       7 阅读
  8. c++“二纯” 纯虚函数和纯虚析构

    2024-06-07 11:28:08       10 阅读
  9. 2024-06-07 问AI: LLM tokenizer 是什么?

    2024-06-07 11:28:08       8 阅读