插件窝 干货文章 LNMP服务器备份与恢复策略

LNMP服务器备份与恢复策略

备份 backup MySQL 恢复 395    来源:    2025-05-08

LNMP服务器备份与恢复策略

一、备份策略

1. 备份内容分类

  • 系统级备份:操作系统配置、关键系统文件
  • 应用级备份:Nginx配置、MySQL数据库、PHP配置
  • 数据级备份:网站文件、数据库数据、日志文件

2. 备份频率建议

  • 数据库:每日全量备份 + 实时二进制日志(binlog)
  • 网站文件:每日增量备份 + 每周全量备份
  • 配置文件:每次修改后立即备份

3. 备份工具推荐

  • 数据库备份mysqldumpxtrabackup(适用于大型数据库)
  • 文件备份rsynctarBorgBackup
  • 自动化工具cron定时任务、BaculaDuplicity

二、详细备份方案

1. MySQL数据库备份

# 全量备份
mysqldump -u root -p --all-databases --single-transaction --master-data=2 --flush-logs > /backup/mysql/full_backup_$(date +%Y%m%d).sql

# 二进制日志备份(实时)
mysql -u root -p -e "FLUSH LOGS;"
cp /var/lib/mysql/mysql-bin.* /backup/mysql/binlogs/

2. Nginx配置备份

# 备份配置文件和网站文件
tar -czvf /backup/nginx/nginx_conf_$(date +%Y%m%d).tar.gz /etc/nginx/ /var/www/html/

3. PHP配置备份

# 备份PHP配置和扩展
tar -czvf /backup/php/php_conf_$(date +%Y%m%d).tar.gz /etc/php/ /usr/lib/php/modules/

4. 自动化备份脚本示例

#!/bin/bash
# 定义备份目录
BACKUP_DIR="/backup/lnmp"
DATE=$(date +%Y%m%d)

# 创建备份目录
mkdir -p $BACKUP_DIR/{mysql,nginx,php,www}

# MySQL备份
mysqldump -u root -pYOURPASSWORD --all-databases --single-transaction > $BACKUP_DIR/mysql/full_$DATE.sql

# Nginx备份
tar -czf $BACKUP_DIR/nginx/nginx_$DATE.tar.gz /etc/nginx

# PHP备份
tar -czf $BACKUP_DIR/php/php_$DATE.tar.gz /etc/php

# 网站文件备份
rsync -a --delete /var/www/html/ $BACKUP_DIR/www/

# 保留最近7天备份
find $BACKUP_DIR -type f -mtime +7 -exec rm {} \;

三、恢复策略

1. MySQL数据库恢复

# 全量恢复
mysql -u root -p < /backup/mysql/full_backup_20230101.sql

# 基于时间点恢复(需要二进制日志)
mysqlbinlog --start-datetime="2023-01-01 12:00:00" --stop-datetime="2023-01-01 13:00:00" /backup/mysql/binlogs/mysql-bin.000001 | mysql -u root -p

2. Nginx配置恢复

# 解压备份文件到原目录
tar -xzvf /backup/nginx/nginx_conf_20230101.tar.gz -C /
nginx -t  # 测试配置
systemctl restart nginx

3. PHP配置恢复

tar -xzvf /backup/php/php_conf_20230101.tar.gz -C /
systemctl restart php-fpm

4. 网站文件恢复

rsync -a --delete /backup/www/ /var/www/html/
chown -R www-data:www-data /var/www/html/

四、备份验证与监控

  1. 定期验证备份有效性:每月至少一次恢复测试
  2. 监控备份任务:设置监控告警确保备份任务成功执行
  3. 备份加密:敏感数据备份应加密存储
  4. 异地备份:至少保留一份备份在不同地理位置

五、灾难恢复计划

  1. 优先级恢复顺序
    • 数据库 → 配置文件 → 网站文件
  2. 恢复时间目标(RTO):根据业务需求制定
  3. 恢复点目标(RPO):确定可接受的数据丢失量

六、高级备份方案

  1. 使用Percona XtraBackup(适用于大型MySQL数据库)
# 全量备份
xtrabackup --backup --target-dir=/backup/mysql/full_$(date +%Y%m%d) --user=root --password=YOURPASSWORD

# 增量备份
xtrabackup --backup --target-dir=/backup/mysql/incr_$(date +%Y%m%d) --incremental-basedir=/backup/mysql/full_20230101 --user=root --password=YOURPASSWORD
  1. 云存储备份:将备份同步到AWS S3、阿里云OSS等
# 使用rclone同步到云存储
rclone sync /backup/lnmp remote:backup-bucket

通过实施上述备份与恢复策略,可以确保LNMP服务器在遇到故障时能够快速恢复,最大限度减少业务中断和数据丢失风险。