Debian上ThinkPHP项目的备份与恢复策略
导读:Debian上ThinkPHP项目的备份与恢复策略 一 备份范围与策略 备份范围建议覆盖:项目代码与上传资源、数据库、环境配置、Web服务器与PHP配置、依赖清单。 建议采用“全量+增量”的思路:日常做全量,关键表或高频数据可额外做增量导...
Debian上ThinkPHP项目的备份与恢复策略
一 备份范围与策略
- 备份范围建议覆盖:项目代码与上传资源、数据库、环境配置、Web服务器与PHP配置、依赖清单。
- 建议采用“全量+增量”的思路:日常做全量,关键表或高频数据可额外做增量导出;数据库用mysqldump导出为**.sql**,代码与配置用tar.gz归档;将备份同步到远程存储/离线介质;用cron定时执行并保留多份历史。
- 保留策略示例:近7天每日、30天每周、90天每月归档,超出期限的自动清理,避免磁盘被占满。
二 数据库备份与恢复
- 备份命令(MySQL)
- 基本导出:mysqldump -u 用户名 -p 数据库名 > backup_$(date +%F).sql
- 一致性建议:InnoDB加上**–single-transaction --routines --triggers --hex-blob**;MyISAM可加**–lock-tables**。
- 示例:mysqldump -u dbuser -p --single-transaction --routines --triggers mythink > /backups/db_mythink_$(date +%F).sql
- 恢复命令
- 建议先备份当前库:mysqldump -u dbuser -p --single-transaction mythink > before_restore_$(date +%F).sql
- 导入:mysql -u dbuser -p mythink < backup_2025-11-17.sql
- ThinkPHP自带或自定义命令
- 部分版本/扩展提供:php think db:backup / php think db:restore;也可在项目中编写自定义命令或脚本调用mysqldump/mysql完成备份与恢复(适合统一纳入项目运维脚本)。
三 项目文件与配置备份
- 代码与上传目录打包
- 示例:tar -czvf /backups/project_mythink_$(date +%F).tar.gz -C /var/www/mythink .
- 关键配置与服务器配置
- 环境配置:.env、config/ 目录(注意敏感信息脱敏或加密归档)
- Web与PHP:Nginx/Apache站点配置、PHP-FPM池配置等
- 示例:cp /var/www/mythink/.env /backups/conf_$(date +%F)/.env
- 归档与传输
- 本地保留一份,同时用scp/rsync同步到远程备份机或对象存储挂载目录,提升容灾能力。
四 自动化与异地容灾
- 自动化脚本示例(/usr/local/bin/backup_think.sh)
- 要点:定义项目路径、备份路径、日期;打包代码;导出数据库;同步到远程;清理过期文件。
- 示例脚本:
- #!/usr/bin/env bash
set -Eeuo pipefail
PROJECT=/var/www/mythink
BACKUP=/backups
DATE=$(date +%F_%H%M%S)
mkdir -p “$BACKUP/$DATE”
代码与上传
tar -czf “$BACKUP/$DATE/project_$DATE.tar.gz” -C “$PROJECT” .数据库
mysqldump -u dbuser -p’YourStrongPass’ --single-transaction --routines --triggers mythink \“$BACKUP/$DATE/db_$DATE.sql”
关键配置
cp “$PROJECT/.env” “$BACKUP/$DATE/.env”可选:同步到远程
rsync -avz “$BACKUP/$DATE/” backup@192.0.2.10:/data/backupsphp/清理:保留近7天
find “$BACKUP” -maxdepth 1 -type d -mtime +7 -exec rm -rf { } +
- #!/usr/bin/env bash
set -Eeuo pipefail
PROJECT=/var/www/mythink
BACKUP=/backups
DATE=$(date +%F_%H%M%S)
mkdir -p “$BACKUP/$DATE”
- 定时任务
- 每天02:00执行:0 2 * * * /usr/local/bin/backup_think.sh > > /var/log/backup_think.log 2> & 1
- 安全与合规
- 备份文件含敏感信息:建议加密(如GPG)后传输与存放;严格控制备份文件访问权限;恢复演练纳入变更流程。
五 恢复流程与验证
- 演练环境先行
- 准备与生产一致的临时数据库与目录,先做一次全量恢复演练,核对数据一致性与业务可用性。
- 执行恢复
- 代码与上传:tar -xzvf project_2025-11-17.tar.gz -C /var/www/mythink_new
- 数据库:mysql -u dbuser -p mythink_new < db_2025-11-17.sql
- 配置:恢复.env与服务器配置,检查目录权限与所有者(如www-data)
- 服务与验证
- 重启Web/PHP-FPM:systemctl restart php8.2-fpm nginx(版本按实际)
- 验证要点:首页与关键业务页、后台登录、日志无报错、定时任务/队列正常、数据量与抽样记录一致。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上ThinkPHP项目的备份与恢复策略
本文地址: https://pptw.com/jishu/749348.html
