Debian LNMP数据备份与恢复指南
Debian系统下的LNMP(Linux+Nginx+MySQL/MariaDB+PHP)环境需定期备份数据库、网站文件、配置文件等核心数据,以下是具体操作流程及注意事项:
数据库是网站数据的核心,推荐使用mysqldump工具进行逻辑备份(生成可执行的SQL脚本),支持全库、单库或单表备份。
命令示例:
mysqldump -u [数据库用户名] -p[数据库密码] [数据库名] > /path/to/backup/[数据库名]_$(date +%Y%m%d).sql
说明:
-u:指定数据库用户名(如root);-p:直接连接密码(无空格,如-pMySecretPassword);[数据库名]:需备份的数据库名称(如wordpress);> /path/to/backup/...:将备份保存到指定目录(如/backups),文件名包含日期以便区分。gzip /path/to/backup/[数据库名].sql;crontab -e添加定时任务(如每天凌晨2点执行):0 2 * * * /usr/bin/mysqldump -u root -pMySecretPassword wordpress > /backups/wordpress_$(date +\%F).sql
网站文件通常存放在/var/www目录(或自定义虚拟主机目录),使用tar命令打包备份:
命令示例:
sudo tar -czvf /path/to/backup/www_backup_$(date +%Y%m%d).tar.gz /var/www
说明:
-c:创建新归档文件;-z:用gzip压缩;-v:显示详细过程;-f:指定备份文件路径。rsync命令(需安装rsync):sudo rsync -avz /var/www/ /backups/www_incremental_$(date +%Y%m%d)/
配置文件丢失会导致服务无法启动,需备份以下关键配置:
/etc/nginx/nginx.conf(主配置)、/etc/nginx/sites-available/(虚拟主机配置);/etc/php/[版本]/fpm/php.ini(PHP核心配置)、/etc/php/[版本]/fpm/pool.d/www.conf(PHP-FPM进程配置);/etc/mysql/mariadb.conf.d/50-server.cnf(MySQL主配置)。sudo cp /etc/nginx/nginx.conf /backups/nginx.conf
sudo cp -r /etc/php/8.2/fpm/ /backups/php_fpm_config
sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /backups/mysql_server.cnf
若网站启用了HTTPS,需备份SSL证书(/etc/ssl/certs/、/etc/ssl/private/);若有邮件服务(如Postfix),需备份邮件配置(/etc/postfix/):
命令示例:
sudo cp -r /etc/ssl/certs /backups/certs_backup
sudo cp -r /etc/ssl/private /backups/private_backup
sudo tar -czvf /backups/postfix_backup_$(date +%Y%m%d).tar.gz /etc/postfix
恢复前需确保目标数据库已存在(若不存在,先创建):
mysql -u [数据库用户名] -p -e "CREATE DATABASE [数据库名];"
恢复命令:
mysql -u [数据库用户名] -p[数据库密码] [数据库名] < /path/to/backup/[数据库名].sql
说明:
.sql.gz),需先解压:gunzip /path/to/backup/[数据库名].sql.gz;mysqlbinlog工具解析binlog文件,结合时间范围恢复:mysqlbinlog --start-datetime="2025-10-01 00:00:00" --stop-datetime="2025-10-02 00:00:00" /var/log/mysql/mysql-bin.000001 | mysql -u root -p [数据库名]
使用tar命令解压备份文件到原目录(覆盖现有文件):
sudo tar -xzvf /path/to/backup/www_backup_$(date +%Y%m%d).tar.gz -C /var/www
若使用rsync增量备份,恢复时直接同步备份目录到原目录:
sudo rsync -avz /backups/www_incremental_$(date +%Y%m%d)/ /var/www/
将备份的配置文件复制回原位置,覆盖现有配置:
sudo cp /backups/nginx.conf /etc/nginx/nginx.conf
sudo cp -r /backups/php_fpm_config/* /etc/php/8.2/fpm/
sudo cp /backups/mysql_server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf
注意:修改配置文件后,需重启对应服务使配置生效:
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm
sudo systemctl restart mysql
sudo或root权限;/backups目录),避免系统崩溃时数据丢失;gpg加密备份文件)。crontab设置定时备份任务,避免人工遗漏;/var/log/syslog),及时发现备份失败问题。Bacula、Amanda),支持增量备份、加密、远程存储等功能;