数据库备份与恢复:MySQL自动备份脚本和3-2-1策略

3-2-1策略、自动dump脚本与恢复验证
发布于
9

服务器被黑、硬盘故障、手误删库——任何一个都能让你的网站数据归零。备份是”平时嫌麻烦、出事拍大腿”的典型。本文给出一个最小可执行的数据库备份方案。

3-2-1备份原则

  • 3份数据:1份原始数据 + 2份备份;
  • 2种介质:本地磁盘 + 远程存储(对象存储或另一台服务器);
  • 1份异地:至少1份备份放在与服务器不同物理位置的地方。

MySQL自动备份脚本

#!/bin/bash
# 每天凌晨3点执行:0 3 * * * /path/to/backup.sh
DATE=$(date +%Y%m%d)
mysqldump -u user -p'password' dbname | gzip > /backup/db_$DATE.sql.gz
# 上传到七牛云Kodo等对象存储
# 保留最近7天备份,删除旧文件
find /backup -name "*.sql.gz" -mtime +7 -delete

网站文件备份

数据库之外,WordPress的上传目录(wp-content/uploads)、主题和插件也需要备份。可以用tar打包整个网站目录:tar -czf site_backup_$DATE.tar.gz /var/www/html

恢复验证

备份最容易被忽略的一步:定期测试恢复流程。每三个月模拟一次”从零恢复”——用备份文件在一个测试环境里把网站跑起来,确认备份是可用的。攒了一年的备份结果恢复时报错,等于白备份。

总结

最小备份方案:MySQL每天自动dump + 压缩上传到对象存储 + 定期恢复验证。总共不到20行脚本,但能避免最坏的数据丢失。更多运维工具看极跃IP资源导航

常见问题(FAQ)

什么是3-2-1备份原则?
3份数据、2种介质、1份异地。具体:服务器上1份原始+1份本地备份,再上传1份到对象存储或其他服务器。这样即使服务器硬盘全坏,还有远程备份。
MySQL怎么自动备份?
用mysqldump命令配合crontab定时任务:`mysqldump -u user -p dbname | gzip > backup.sql.gz`,然后crontab设置每天凌晨执行。再把生成的备份文件自动上传到对象存储。
备份需要定期测试恢复吗?
必须做。每3个月模拟一次"从零恢复"——在新环境里用备份文件完整重建网站。很多人备份了一年,恢复时才发现在某个环节报错,等于没备份。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600