Debian LNMP环境的备份与恢复方法
导读:Debian LNMP环境的备份与恢复方法 一 备份范围与准备 备份范围建议覆盖:Nginx 配置、网站文件、MySQL/MariaDB 数据库、PHP-FPM 配置(按实际版本),以及可选的日志与证书。 准备与约定: 备份目录:建议统...
Debian LNMP环境的备份与恢复方法
一 备份范围与准备
- 备份范围建议覆盖:Nginx 配置、网站文件、MySQL/MariaDB 数据库、PHP-FPM 配置(按实际版本),以及可选的日志与证书。
- 准备与约定:
- 备份目录:建议统一放在如 /backups,并确保磁盘空间充足与权限正确(如使用 root 或具备 sudo 权限执行)。
- PHP 版本:以实际为准(如 PHP 7.4/8.2),下文示例路径会体现版本差异。
- 数据库凭据:准备好具有足够权限的数据库账号(如 root 或具备 SELECT/LOCK TABLES/SHOW VIEW 权限的专用账号)。
二 手动备份步骤
- 数据库备份(MySQL/MariaDB)
- 单库备份:
- 命令:
mysqldump -u 用户名 -p 数据库名 > /backups/mydatabase_$(date +%F).sql
- 命令:
- 全库备份(含存储过程/触发器):
- 命令:
mysqldump -u root -p --single-transaction --routines --triggers --all-databases > /backups/full_$(date +%F).sql
- 命令:
- 建议压缩:
gzip /backups/mydatabase_$(date +%F).sql
- 单库备份:
- 网站文件与目录
- 打包备份:
tar -czvf /backups/www_$(date +%F).tar.gz -C /var/www . - 或增量同步:
rsync -avz /var/www/ /backups/www_$(date +%F)/
- 打包备份:
- 配置文件备份
- Nginx:
tar -czvf /backups/nginx_conf_$(date +%F).tar.gz /etc/nginx - PHP-FPM(按版本调整路径):
- 示例:
tar -czvf /backups/php_fpm_$(date +%F).tar.gz /etc/php/8.2/fpm/
- 示例:
- Nginx:
- 可选:日志与证书
- 日志:
tar -czvf /backups/logs_$(date +%F).tar.gz /var/log/nginx /var/log/mysql - 证书:
tar -czvf /backups/certs_$(date +%F).tar.gz /etc/letsencrypt
- 日志:
三 自动备份方案
- 数据库定时备份脚本(示例)
- 脚本路径:
/usr/local/bin/backup_mysql.sh - 内容:
#!/bin/bash BACKUP_DIR="/backups/mysql" DATE=$(date +"%Y%m%d%H%M%S") DB_USER="backup_user" DB_PASS="StrongPass!23" DB_NAME="mydatabase" mkdir -p "$BACKUP_DIR" mysqldump -u"$DB_USER" -p"$DB_PASS" --single-transaction --routines --triggers "$DB_NAME" \ > "$BACKUP_DIR/${ DB_NAME} -${ DATE} .sql" gzip "$BACKUP_DIR/${ DB_NAME} -${ DATE} .sql" # 保留最近30天 find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +30 -delete - 赋权:
chmod +x /usr/local/bin/backup_mysql.sh - Crontab(每天 02:00):
0 2 * * * /usr/local/bin/backup_mysql.sh > > /var/log/backup_mysql.log 2> & 1
- 脚本路径:
- 配置与网站文件定时备份(示例)
- Nginx(每天 03:00):
0 3 * * * tar -czf /backups/nginx_conf_$(date +\%F).tar.gz -C /etc/nginx . > > /var/log/backup_nginx.log 2> & 1 - 网站文件(每天 04:00):
0 4 * * * tar -czf /backups/www_$(date +\%F).tar.gz -C /var/www . > > /var/log/backup_www.log 2> & 1
- Nginx(每天 03:00):
- 建议为脚本增加日志与错误告警,便于追踪与及时处置。
四 恢复流程
- 全新环境恢复顺序
- 安装基础组件:
sudo apt-get update & & sudo apt-get install nginx mariadb-server php-fpm php-mysql- 数据库安全初始化:
sudo mysql_secure_installation
- 恢复数据库:
- 单库:
mysql -u 用户名 -p 数据库名 < /backups/mydatabase_YYYY-MM-DD.sql - 全库:
mysql -u root -p < /backups/full_YYYY-MM-DD.sql
- 单库:
- 恢复网站文件:
- 解压覆盖:
tar -xzvf /backups/www_YYYY-MM-DD.tar.gz -C /var/www - 或同步:
rsync -avz /backups/www_YYYY-MM-DD/ /var/www/
- 解压覆盖:
- 恢复配置:
- Nginx:
tar -xzvf /backups/nginx_conf_YYYY-MM-DD.tar.gz -C / - PHP-FPM(按版本):
tar -xzvf /backups/php_fpm_YYYY-MM-DD.tar.gz -C /
- Nginx:
- 权限与校验:
- 网站目录属主(示例):
chown -R www-data:www-data /var/www - 配置语法检查与重载:
- Nginx:
nginx -t & & systemctl reload nginx - PHP-FPM:
systemctl restart php8.2-fpm(按实际版本)
- Nginx:
- 网站目录属主(示例):
- 安装基础组件:
- 原地覆盖恢复
- 建议先停用服务(可选,减少写入冲突):
systemctl stop nginx php8.2-fpm mariadb - 按“数据库 → 网站文件 → 配置”的顺序恢复,完成后执行语法检查与重载,最后启动服务:
systemctl start mariadb php8.2-fpm nginx
- 建议先停用服务(可选,减少写入冲突):
- 验证要点
- 访问站点首页与关键接口,查看 Nginx 错误日志:
tail -f /var/log/nginx/error.log - 查看 MariaDB 错误日志:
tail -f /var/log/mysql/error.log - 核对数据库数据一致性与文件完整性。
- 访问站点首页与关键接口,查看 Nginx 错误日志:
五 注意事项与最佳实践
- 一致性与锁:数据库备份建议使用
--single-transaction获取一致性快照;如含 MyISAM 表,可考虑短暂锁表或改用 InnoDB。 - 版本与路径:恢复时确保 Debian、Nginx、PHP 与备份时版本尽量一致;PHP-FPM 套接字路径(如 /var/run/php/php8.2-fpm.sock)需与 Nginx 配置一致。
- 安全与隔离:备份文件含敏感信息,设置合适的权限(如 600/700),并考虑异地/离线存储;数据库账号遵循最小权限原则。
- 保留与监控:设置合理的保留策略(如 30 天),并保留脚本与任务日志;定期做恢复演练验证可用性。
- 大站点策略:对海量小文件或频繁变更的数据,优先使用 rsync 增量;对数据库可考虑 Percona XtraBackup 等物理备份方案以提升效率与恢复速度。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian LNMP环境的备份与恢复方法
本文地址: https://pptw.com/jishu/750966.html
