LNMP下MySQL备份策略是什么
导读:LNMP下MySQL备份策略 一 策略总览 备份类型与工具 逻辑备份:使用mysqldump(通用、易迁移),mysqlpump(MySQL 5.7+,并行导出,效率更高)。 物理备份:使用Percona XtraBackup(支持In...
LNMP下MySQL备份策略
一 策略总览
- 备份类型与工具
- 逻辑备份:使用mysqldump(通用、易迁移),mysqlpump(MySQL 5.7+,并行导出,效率更高)。
- 物理备份:使用Percona XtraBackup(支持InnoDB热备,几乎不锁表,适合大库与高可用场景)。
- 备份方式
- 全量备份:定期完整保存库/表结构与数据。
- 增量/差异备份:在全量基础上仅备份变化数据,减少时间与存储占用(物理备份更常见;逻辑备份可通过业务分库分表与时间点恢复策略配合)。
- 调度与保留
- 通过crontab定时执行;按日/周执行全量,按小时/日执行增量;采用**保留周期(如7天)与多级存储(本地/远程/云)**提升可用性。
- 安全与合规
- 备份文件设置严格权限(如700);加密与传输通道加密;定期恢复演练验证可用性。
二 备份频率与保留建议
- 小型或读写压力较低的库:每日一次全量(如02:00),保留7天;必要时可加每日增量。
- 中大型或对连续性要求高的库:每周一次全量(如周日02:00),每日增量(如02:30),保留7–30天;关键业务可同步做异地/云端副本。
- 超大库与高并发:每周全量 + 每日增量,结合XtraBackup热备;保留30天+,并定期做还原演练验证RPO/RTO。
三 关键命令与脚本示例
- 逻辑备份(mysqldump,适合小中型库)
- 全库备份并压缩
mysqldump -u root -p --single-transaction --quick --all-databases | gzip > /backup/mysql/full_$(date +%F).sql.gz - 单库备份
mysqldump -u root -p --single-transaction --quick db_name | gzip > /backup/mysql/db_$(date +%F).sql.gz
- 全库备份并压缩
- 并行逻辑备份(mysqlpump,MySQL 5.7+)
mysqlpump -u root -p --databases db1 db2 --parallel=4 > /backup/mysql/parallel_$(date +%F).sql - 物理备份(XtraBackup,InnoDB热备)
# 备份 xtrabackup --backup --user=root --password=your_pass --target-dir=/backup/xtra/2025-11-18_02-00-00 # 准备(应用日志) xtrabackup --prepare --target-dir=/backup/xtra/2025-11-18_02-00-00 # 恢复(示例) systemctl stop mysql rm -rf /var/lib/mysql/* xtrabackup --copy-back --target-dir=/backup/xtra/2025-11-18_02-00-00 --datadir=/var/lib/mysql chown -R mysql:mysql /var/lib/mysql systemctl start mysql - 自动化脚本骨架(含本地保留与清理)
#!/usr/bin/env bash BACKUP_DIR="/backup/mysql" DATE=$(date +%F_%H-%M-%S) mkdir -p "$BACKUP_DIR" mysqldump -u root -p --single-transaction --quick --all-databases 2> /dev/null | gzip > "$BACKUP_DIR/full_$DATE.sql.gz" # 保留最近7天 find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete - 定时任务(crontab)
- 每天02:00全量备份
0 2 * * * /usr/bin/bash /root/backup_mysql.sh > > /var/log/backup_mysql.log 2> & 1 - 如需同步备份网站文件与配置
0 1 * * * /usr/bin/rsync -a --delete /usr/share/nginx/html /backup/nginx_html_$(date +\%F)/ 0 1 * * * /usr/bin/tar czf /backup/nginx_conf_$(date +\%F).tar.gz /etc/nginx /etc/php
- 每天02:00全量备份
- 安全建议
- 避免在命令行中明文写密码,可使用**~/.my.cnf**配置凭据:
命令中去掉-p参数即可读取配置。[client] user=root password=your_password
- 避免在命令行中明文写密码,可使用**~/.my.cnf**配置凭据:
四 恢复流程与演练
- 逻辑备份恢复
- 解压并导入
gunzip < /backup/mysql/full_2025-11-18.sql.gz | mysql -u root -p # 或先解压 gunzip /backup/mysql/full_2025-11-18.sql.gz mysql -u root -p < /backup/mysql/full_2025-11-18.sql
- 解压并导入
- 物理备份恢复
- 停止数据库 → 执行**–prepare** → 使用**–copy-back还原至datadir** → 修正权限 → 启动数据库(见第三部分XtraBackup示例)。
- 演练与验证
- 建议每1–2周在预备环境做一次全量恢复演练,核对表数量、数据一致性、主外键与视图/存储过程可用性,并记录恢复时间与步骤,确保满足业务RPO/RTO目标。
五 监控与存储实践
- 日志与告警
- 将备份脚本标准输出与错误输出重定向到日志(如**/var/log/backup_mysql.log**),配合cron邮件或企业微信/钉钉机器人告警失败任务。
- 多级与异地
- 采用本地 + 远程(rsync/SSH) + 云存储的多级策略;远程与云端用于灾难恢复与误删防护。
- 权限与合规
- 备份目录权限建议700,仅允许mysql或备份专用用户访问;对敏感备份启用加密与最小权限访问控制。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: LNMP下MySQL备份策略是什么
本文地址: https://pptw.com/jishu/750427.html
