云盘快照备份是什么
云数据库与云盘快照按块设备即时打点,几分钟就能完成全量副本,恢复时直接挂载,是恢复速度最快的一类备份。但「运行中直接拍快照」只保证崩溃一致性:对 InnoDB 来说等价于一次断电后重启,数据能自洽;对非事务引擎的表(如 MyISAM)不保证。要求更严格的一致性时,用 FLUSH TABLES WITH READ LOCK 短暂锁表再拍快照。
基本信息
| 适用对象 | 云硬盘 / 云数据库实例的块级快照 |
|---|---|
| 一致性级别 | InnoDB 崩溃一致性可用;非事务引擎需锁表 |
| 锁表语句 | FLUSH TABLES WITH READ LOCK(简称 FTWRL) |
| 释放方式 | 同会话执行 UNLOCK TABLES,或会话断开自动释放 |
| 常见组合 | 快照负责快速恢复,逻辑备份负责应对误删表 |
典型使用场景
- 重大变更前打点:DDL 或数据订正前先拍一份,出问题能快速回退整机
- 缩短恢复时间目标:相比逻辑备份还原,快照挂载恢复通常快一个量级
- 跨可用区复制:把快照复制到其他区域,作为异地容灾的基础镜像
- 环境复制:用生产快照快速拉起测试环境,数据规模不需要重新导入
- 作为物理备份的上游:从快照挂载的盘上再跑一次逻辑备份,避免直连生产
一致性快照流程
一致性快照流程
-- 会话 A:锁表,阻塞写入保证落盘数据静止
FLUSH TABLES WITH READ LOCK;
-- 此时在控制台或 API 触发云盘快照,等待快照状态变为可用
-- 会话 B(另开连接)确认锁状态与长事务情况
SHOW PROCESSLIST;
SELECT * FROM information_schema.innodb_trx\G
-- 快照完成后回到会话 A 解锁
UNLOCK TABLES;
-- 事后核对:记录快照时间点,供 PITR 计算位点一致性方案对照
| 方案 | 一致性保证 | 代价 |
|---|---|---|
| 运行中直接拍快照 | InnoDB 崩溃一致,非事务引擎不保证 | 零停顿,短暂影响挂载盘的 IO |
| FTWRL 后拍快照 | 数据静止,全引擎一致 | 锁表期间写入全部阻塞,含 DDL |
| 快照 + 逻辑备份双轨 | 物理层可快速恢复,逻辑层可单表回补 | 需要维护两套策略与存储成本 |
FTWRL 会阻塞所有写入与 DDL,必须在低峰窗口执行,并提前确认没有长事务在跑;持锁会话断线会自动释放锁,容易造成「拍出来其实不一致」的假象,锁期间需要有监控确认锁一直生效。
快照只覆盖块设备上的数据,不包含误删表、错误 UPDATE 这类逻辑错误的历史版本:快照拍下之后发生的误操作同样会被回滚到快照状态,所以逻辑备份必须保留。