当前位置: 首页 > backend >正文

MySQL 全局锁:全量备份数据要怎么操作?

文章目录

      • 全局锁的概念与数据备份
      • 使用全局锁备份数据的步骤
      • 使用全局锁备份数据的缺陷
      • 不加锁进行数据备份的步骤

全局锁的概念与数据备份

全局锁会把整个数据库实例锁定,当某个客户端会话对数据库加上全局锁之后,其他客户端的操作会受到限制。具体来说,在全局锁生效期间,整个数据库就处于只读状态,其他客户端无法执行数据的更新操作(如 INSERT、UPDATE、DELETE 等)和创建、修改表结构等操作,只能进行读操作(如 SELECT)。

全局锁的最常见使用场景是进行全量逻辑备份。在进行全量逻辑备份时,为了保证备份数据的一致性,需要确保在备份过程中数据不会被修改。加全局锁可以防止其他事务对数据进行更新,从而保证备份的数据是一个时间点上的一致性副本。例如,一个电商系统,要对商品信息、订单信息等全量数据进行备份,使用全局锁可以避免在备份期间有新的订单产生或商品信息被修改,保证备份数据的准确性。

使用全局锁备份数据的步骤

  1. 添加全局锁;

    在 MySQL 中,可以使用以下语句来加全局锁:

    FLUSH TABLES WITH READ LOCK;
    

    当执行该语句后,当前会话就对整个数据库实例加上了全局锁。其他会话可以继续执行查询操作,但任何试图进行数据更新或表结构修改的操作都会被阻塞,直到持有全局锁的会话释放锁。

  2. 进行数据备份;

    mysqldump 是 MySQL 中为数据备份提供的一个工具,可以通过 mysqldump 进行数据备份:

    mysqldump -h `主机地址` -u `用户名` -p`密码` `数据库名` > `数据库名`.sql;
    

    例如:

    mysqldump -h 192.168.1.100 -u root -ppassword123 testdb > /home/user/backup/testdb.sql
    

    需要注意的是,mysqldump 不是一个 SQL 语句,而是 MySQL 提供的一个工具。所以 mysqldump 不能在 MySQL 的命令行中作为 SQL 来执行,而是要通过操作系统的命令行执行。

  3. 释放全局锁:

    UNLOCK TABLES;
    

使用全局锁备份数据的缺陷

数据库中加全局锁,是一个比较重的操作,存在以下问题:

  • 如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆。
  • 如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导致主从延迟。

不加锁进行数据备份的步骤

在 InnoDB 引擎中,可以通过给 mysqldump 添加 --single-transaction 参数进行不加锁的数据一致性备份:

mysqldump --single-transaction -h`主机地址` -u`用户名` -p`密码` `数据库名` > `数据库名`.sql;

这种方式本质上在 InnoDB 存储引擎底层上的实现是通过快照读的方式。

http://www.xdnf.cn/news/495.html

相关文章:

  • 04_银行个贷系统下的技术原理解析
  • LLM多卡并行计算:Accelerate和DeepSpeed
  • 数据可视化(Matplotlib和pyecharts)
  • 【云馨AI-大模型】2025年4月第三周AI领域全景观察:硬件革命、生态博弈与国产化突围
  • 【unity游戏开发入门到精通——UGUI】RectTransform矩形变换组件
  • 保生产 促安全 迎国庆
  • 平均池化(Average Pooling)
  • Ai Agent 在生活领域的深度应用与使用指南
  • 第七周作业
  • day29 学习笔记
  • Jenkins设置中文显示
  • Mermaid 是什么,为什么适合AI模型和markdown
  • webgl入门实例-向量在图形学中的核心作用
  • 【2025】Datawhale AI春训营-蛋白质预测(AI+生命科学)-Task2笔记
  • Cribl 优化EC2 ip-host-region 数据
  • 20-算法打卡-哈希表-赎金信-leetcode(383)-第二十天
  • Java反射
  • 废物九重境弱者学JS第十四天--构造函数以及常用的方法
  • VBA 调用 dll 优化执行效率
  • YOLO拓展-锚框(anchor box)详解
  • 基础智能体的进展与挑战第 5 章【奖励】
  • word表格批量操作——宏
  • 工业物联网安全网关 —— 安全OTA升级签名验证
  • 【计算机网络 | 第二篇】常见的通信协议(一)
  • Jetson Orin NX 部署YOLOv12笔记
  • 学生成绩统计系统需求说明书
  • 180-《商陆》
  • 基于medusa范式的大模型并行解码推理加速初探
  • sql之DML(insert、delete、truncate、update、replace))
  • Vue组件深度封装:从复用艺术到架构思维