MySQL 备份与恢复(补充)

type
status
date
slug
summary
tags
category
icon
password

一、备份类型全景图

1.1 按备份结果分类

类型
特点
适用场景
工具
逻辑备份
生成SQL文件(.sql),可读性强
跨版本迁移、小数据量、数据结构变更
mysqldump, mysqlpump
物理备份
拷贝数据文件(.ibd, .frm),速度快
大数据量、快速恢复、同版本迁移
XtraBackup, MySQL Enterprise Backup

1.2 按数据量分类

类型
备份内容
恢复要求
空间占用
完全备份
所有数据
基础恢复点
增量备份
好上次备份后的变化
需要完全备份+所有增量备份
差异备份
上次完全备份后的变化
需要完全备份+最新差异备份
中等

1.3 按服务状态分类

类型
服务状态
锁情况
适用引擎
热备份
在线
无锁或短暂锁
InnoDB(使用MVCC)
温备份
在线
全局读锁
MyISAM, InnoDB
冷备份
离线
-
所有引擎

二、备份策略详解

2.1 完全+增量备份策略

2.2 完全+差异备份策略

三、逻辑备份:mysqldump 详解

3.1 基本用法

3.2 关键参数说明

参数
作用
注意事项
–all-databases
备份所有数据库
–database
备份单个数据库
–database 数据库名称
-lock-all-tables
锁表
--master-data=2
记录binlog位置
=1时以注释形式记录,=2时以注释形式记录但不会执行
--single-transaction
创建一致性快照
仅适用于InnoDB,与--lock-tables互斥
--routines
备份存储过程和函数
需要PROCESS权限
--triggers
备份触发器
默认已开启
--flush-logs
备份前刷新日志
便于增量备份
--hex-blob
二进制数据以16进制存储
避免编码问题
注意
  • -master-data 在 MySQL 8.0 中已更名为 -source-data,但前者仍可用
  • 生产环境推荐使用 -single-transaction 替代 -lock-all-tables(避免锁表)

3.3 备份策略实例

1. 备份策略示例(完全+增量)
2. 恢复流程
注意:sql_log_bin 仅对当前会话有效,恢复需在同一会话中完成!
  1. 备份脚本示例

四、物理备份:XtraBackup 详解

4.1 安装与配置

4.2 完全备份与恢复

4.3 增量备份策略

4.4 增量恢复流程

五、备份验证与监控

5.1 备份完整性检查

5.2 监控指标

指标
正常范围
异常处理
备份大小
不应为0
检查备份命令和权限
备份时长
与历史值相比无剧烈变化
检查系统负载和网络
备份成功率
100%
检查错误日志和存储空间
恢复测试
每月至少一次
验证备份可用性

六、实战经验与常见问题

6.1 常见问题解决

  1. 备份失败:权限不足
    1. 备份文件过大
      1. 增量备份中断

        6.2 最佳实践

        1. 3-2-1规则:3份副本,2种介质,1份离线存储
        1. 定期验证:每月至少进行一次恢复测试
        1. 监控告警:设置备份失败和异常告警
        1. 文档记录:记录备份策略和恢复步骤

        七、备份策略推荐表

        场景
        数据量
        推荐策略
        工具
        恢复时间目标(RTO)
        小型网站
        <10GB
        每周完全+每日逻辑增量
        mysqldump
        1-2小时
        中型业务
        10-100GB
        每周完全+每日物理增量
        XtraBackup
        30-60分钟
        大型系统
        >100GB
        每天物理增量+快照备份
        XtraBackup+存储快照
        15-30分钟
        云环境
        任意
        云平台备份+binlog
        云工具
        5-15分钟
        Loading...