数据生命线 - MySQL 备份与恢复策略详解
数据生命线 - MySQL 备份与恢复策略详解
在设计任何备份恢复策略之前,我们首先需要与业务方和应用方共同明确两个关键指标:
-
RPO (Recovery Point Objective - 恢复点目标):
- 定义: 系统在发生故障或灾难后,最多可以容忍丢失多长时间的数据。
- 示例: 如果 RPO 是 1 小时,意味着在最坏情况下,我们可能会丢失故障发生前 1 小时内产生的数据。如果 RPO 是 0,则意味着不能丢失任何已提交的数据(通常需要同步复制等更复杂的方案)。
- RPO 直接决定了我们的备份频率。RPO 越小,备份(或数据同步)需要越频繁。
-
RTO (Recovery Time Objective - 恢复时间目标):
- 定义: 系统在发生故障或灾难后,需要在多长时间内恢复服务。
- 示例: 如果 RTO 是 4 小时,意味着从故障发生到服务完全恢复可用,总时长不能超过 4 小时。
- RTO 影响了我们对备份方法、恢复流程复杂度、硬件准备以及高可用架构的选择。
RPO 和 RTO 是业务需求驱动的技术决策依据,没有放之四海而皆准的答案。
MySQL 备份方法
MySQL 的备份主要分为两大类:逻辑备份和物理备份。
A. 逻辑备份 (Logical Backups)
- 工作原理: 逻辑备份是将数据库中的数据导出为可读的、可执行的 SQL 语句(如
CREATE TABLE ...
,INSERT INTO ...
)或文本文件(如 CSV, TSV 格式)。恢复时,通过重新执行这些 SQL 语句或导入文本文件来重建数据库。 - 常用工具 (输入/用法):
mysqldump
: 这是 MySQL 自带的经典逻辑备份工具。- 特点: 单线程工作(对于非常大的数据库可能较慢),输出通常是一个
.sql
文件。适合中小型数据库、备份单个库/表、或者只备份表结构。 - 常用命令:
# 备份所有数据库,包含存储过程和触发器,针对 InnoDB 使用单事务保证一致性 mysqldump -u <user> -p<password> --all-databases --single-transaction --routines --triggers --master-data=2 > full_backup.sql # 备份特定数据库 mysqldump -u
- 特点: 单线程工作(对于非常大的数据库可能较慢),输出通常是一个