易君召
发布于 2026-08-19 / 作者:易君召 / 2 阅读
0

数据库有效数据备份方案

数据库备份核心目标:可恢复、可校验、定时执行、异地留存、定期演练恢复,不能只做备份不验证恢复,否则备份等于无效。下面分备份类型、主流数据库实操、备份策略、风险点、最佳实践来讲。

一、备份的两大类

1. 物理备份(冷备份 / 热备份)

直接复制数据库磁盘数据文件、日志文件,速度快,适合大数据量。

  • 冷备份:数据库停止服务,拷贝数据目录。简单,业务中断,适合低峰维护窗口。

  • 热备份:数据库运行中备份,不中断业务。

    • MySQL:xtrabackup

    • PostgreSQL:pg_basebackup

    • openGauss:gs_basebackup

优点:备份恢复速度快;缺点:跨版本迁移兼容性差,只能完整实例恢复。

2. 逻辑备份(导出 SQL / 数据)

导出表结构 + 数据,生成 SQL 或文本文件。

  • MySQL:mysqldump

  • PostgreSQL/openGauss:pg_dump

优点:可单库、单表导出,跨版本迁移友好;缺点:大库慢,消耗 CPU 内存。

二、核心备份策略(生产环境推荐组合)

1. 全量备份

把整个数据库全部备份一份。

  • 频率:中小库每日;TB 级大库每周一次全量。

2. 增量备份

只备份上次备份之后变化的数据,备份体积小速度快。

MySQL binlog、PG WAL 归档、openGauss WAL 归档本质就是增量。

恢复逻辑:全量备份 + 增量日志回放,恢复到任意时间点(PITR),这是生产最重要能力。

3. 差异备份

备份自上次全量之后所有变更;对比增量:增量依赖多份增量文件,差异只需要全量 + 一份差异包。

✅生产黄金组合:定期全量备份 + 持续归档增量日志,实现时间点恢复 PITR

三、主流数据库常用备份命令示例

MySQL / MariaDB

1)逻辑备份 mysqldump

bash

# 全库备份
mysqldump -u root -p --all-databases --single-transaction --routines --triggers > full_backup_$(date +%Y%m%d).sql

--single‑transaction:InnoDB 热备,不加锁,不阻塞业务。

2)物理热备 percona‑xtrabackup

bash

#完整备份
xtrabackup --backup --target-dir=/backup/full-$(date +%Y%m%d) -u root -p

3)开启 binlog,作为增量,实现 PITR。

PostgreSQL / openGauss

1)逻辑单库备份

bash

pg_dump -U postgres -d dbname -F c -f db_backup_$(date +%Y%m%d).dump

2)物理全量备份

bash

pg_basebackup -D /backup/pg_full -Ft -z -P

3)开启 WAL 归档,持续归档 WAL 文件,支持时间点恢复。

Redis

  • RDB:定时快照(全量)

  • AOF:持续记录写命令(增量)

生产建议同时开启 RDB+AOF。

四、备份文件管理(非常容易被忽略)

  1. 压缩:备份完成立刻压缩,节省磁盘

tar zcvf full_backup_20260819.tar.gz full_backup_20260819.sql
  1. 校验备份完整性

    • 逻辑备份:检查文件大小,md5sum 生成校验码留存

    md5sum full_backup.sql > full_backup.md5
    
    • 物理备份:工具自带校验;一定要定期做恢复测试,文件存在≠备份可用。

  2. 保留周期:不要无限存备份,配置自动清理。例:保留 30 天备份,超期自动删除。

  3. 异地备份不要只存在数据库本机磁盘。同步到对象存储 MinIO、NAS、另一台服务器。本机磁盘损坏备份全部丢失。

工具:rclone、rsync 把备份文件推送到远端存储。

五、自动化与定时调度

  1. Linux crontab 定时执行备份脚本

  2. 备份脚本增加告警:备份失败发送邮件 / 钉钉告警,不能默默失败。

    脚本伪逻辑:

plaintext

1.执行备份
2.压缩文件
3.生成md5校验
4.同步备份文件到异地存储
5.清理过期本地备份
6.判断每一步返回码,失败触发告警

六、恢复演练(重中之重)

很多事故:备份文件损坏,业务故障才发现无法恢复。

每季度至少做一次恢复演练:把备份在测试库完整恢复,验证数据条数、业务可访问。

PITR 时间点恢复:用全量备份 + 增量日志,恢复到误删数据之前时刻,用来应对误删表、误更新。

七、不同场景选型建议

场景

推荐方案

小库(几十 GB 以内)

每日逻辑全量 + binlog/WAL 归档

大库(百 GB/TB 级别)

每周物理全量,增量日志持续归档,减少备份耗时

云数据库

优先使用云厂商实例备份,同时自行导出一份离线备份(防云厂商侧故障)

重要生产库

本地备份 + 异地对象存储双副本;开启 PITR;定期恢复演练

八、常见踩坑

  1. 只做逻辑备份,忘记开启 binlog/WAL,无法恢复到任意时间点,只能恢复备份时刻数据。

  2. 备份存在同一台机器硬盘,硬盘损坏备份全部丢失。

  3. 备份脚本没有错误判断,备份失败无告警,以为一直在备份。

  4. MyISAM 引擎使用 mysqldump 不加锁,备份数据不一致。

  5. 备份后从来不做恢复测试。

九、简短总结有效备份的标准清单

  1. 根据库大小选择物理 / 逻辑备份,配置全量 + 增量日志归档,支持 PITR 时间点恢复

  2. 备份文件压缩,生成 md5 校验

  3. 备份副本异地存储,不要只留本机

  4. 定时自动化执行,失败告警

  5. 设置备份过期清理策略

  6. 定期执行恢复演练,验证备份真实可用


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/database-effective-data-backup-solutions-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/