debian

Debian LNMP备份与恢复方法

小樊
44
2025-10-08 06:49:58
栏目: 智能运维

Debian LNMP备份与恢复方法

一、备份方法

1. 数据库备份(MySQL/MariaDB)

数据库是网站数据的核心,需优先备份。推荐使用mysqldump(逻辑备份,兼容性强)或mysqlpump(MySQL 5.7+,支持并行备份)。
命令示例

# 逻辑备份(生成SQL脚本,可跨版本恢复)
mysqldump -u [用户名] -p[密码] [数据库名] > /path/to/backup/[数据库名]_$(date +%Y%m%d).sql
# 示例:备份名为"mywebsite"的数据库
mysqldump -u root -pMySecretPassword mywebsite > /backups/mywebsite_$(date +%Y%m%d).sql

注意事项

2. Nginx配置与网站文件备份

Nginx配置文件决定了服务器的网络行为,网站文件(HTML、CSS、JS、图片等)是用户访问的内容,均需完整备份。
命令示例

# 备份Nginx配置文件(/etc/nginx目录)
sudo tar -czvf /backups/nginx_$(date +%Y%m%d).tar.gz /etc/nginx/

# 备份网站文件(默认路径/var/www/html)
sudo tar -czvf /backups/website_$(date +%Y%m%d).tar.gz /var/www/html/

注意事项

3. PHP配置与代码备份

PHP配置文件影响脚本运行环境,网站代码(如WordPress、自定义应用)需同步备份。
命令示例

# 备份PHP配置文件(以PHP 7.4为例,路径可能因版本调整)
sudo tar -czvf /backups/php_$(date +%Y%m%d).tar.gz /etc/php/7.4/fpm/pool.d/ /etc/php/7.4/fpm/php.ini

# 备份网站代码(若代码不在/var/www/html,调整路径)
sudo tar -czvf /backups/code_$(date +%Y%m%d).tar.gz /var/www/html/

注意事项

4. 自动化备份(Cron定时任务)

手动备份易遗漏,建议通过crontab设置定时任务。
操作步骤

  1. 编辑当前用户的crontab:
    sudo crontab -e
    
  2. 添加定时任务(例如每天凌晨2点执行备份脚本):
    0 2 * * * /bin/bash /path/to/backup_script.sh > /dev/null 2>&1
    
  3. 创建备份脚本(/path/to/backup_script.sh):
    #!/bin/bash
    BACKUP_DIR="/backups"
    DATE=$(date +%Y%m%d)
    
    # 备份Nginx
    sudo tar -czvf "$BACKUP_DIR/nginx_$DATE.tar.gz" /etc/nginx/
    
    # 备份网站文件
    sudo tar -czvf "$BACKUP_DIR/website_$DATE.tar.gz" /var/www/html/
    
    # 备份MySQL
    mysqldump -u root -pMySecretPassword mywebsite > "$BACKUP_DIR/mywebsite_$DATE.sql"
    
    # 删除7天前的备份(保留最近7天)
    find "$BACKUP_DIR" -name "*.tar.gz" -mtime +7 -delete
    find "$BACKUP_DIR" -name "*.sql" -mtime +7 -delete
    
  4. 赋予脚本执行权限:
    chmod +x /path/to/backup_script.sh
    

二、恢复方法

1. 数据库恢复(MySQL/MariaDB)

恢复前需确保目标数据库已存在(若不存在,先创建):

# 登录MySQL
mysql -u root -p

# 创建数据库(若不存在)
CREATE DATABASE mywebsite;

# 退出MySQL
exit

恢复命令

# 将备份的SQL文件导入数据库
mysql -u [用户名] -p[密码] [数据库名] < /path/to/backup/[数据库名]_备份日期.sql
# 示例:恢复"mywebsite"数据库
mysql -u root -pMySecretPassword mywebsite < /backups/mywebsite_20250930.sql

注意事项

2. Nginx配置与网站文件恢复

恢复命令

# 恢复Nginx配置文件
sudo tar -xzvf /backups/nginx_备份日期.tar.gz -C /

# 恢复网站文件
sudo tar -xzvf /backups/website_备份日期.tar.gz -C /

后续操作

3. PHP配置与代码恢复

恢复命令

# 恢复PHP配置文件(以PHP 7.4为例)
sudo tar -xzvf /backups/php_备份日期.tar.gz -C /

# 恢复网站代码
sudo tar -xzvf /backups/code_备份日期.tar.gz -C /

后续操作

4. 使用LNMP一键安装包恢复(可选)

若使用LNMP一键安装包(如Oneinstack),可通过其自带的备份/恢复功能简化操作:

  1. 进入LNMP安装目录(如/usr/local/src/lnmp);
  2. 执行恢复脚本(如./restore.sh),按提示选择备份文件路径;
  3. 脚本会自动恢复Nginx、MySQL、PHP及网站配置。

三、备份策略建议

  1. 3-2-1备份原则
    • 保留3份数据副本(原始数据+2份备份);
    • 使用2种不同存储介质(如本地硬盘+云存储);
    • 将1份备份存储在异地(防止本地灾难导致数据丢失)。
  2. 定期测试恢复
    • 每月至少测试1次备份文件的恢复过程,确保备份有效性;
    • 检查备份文件的完整性(如解压后文件数量、大小是否符合预期)。
  3. 安全存储
    • 备份文件加密(如使用gpg加密SQL文件);
    • 限制备份目录的访问权限(如chmod 700 /backups)。

0
看了该问题的人还看了