CentOS LNMP 备份实操方案
一 备份范围与策略
- 备份范围建议覆盖:
- 数据库:优先使用逻辑备份(如 mysqldump),InnoDB 推荐加 –single-transaction 保证一致性;大型或高并发库可用 Percona XtraBackup 做热备;也可结合 LVM 快照获取一致性副本。
- 网站文件:/usr/share/nginx/html 或 /var/www/html 等站点目录。
- 配置与日志:/etc/nginx/、/etc/php.ini、/etc/php.d/、/var/log/nginx/ 等。
- 系统关键:/etc/hosts、/etc/resolv.conf、定时任务等按需纳入。
- 策略建议:
- 频率:采用全量 + 增量;例如每周日全量、周一到周六增量;或每日全量 + 保留近 N 天。
- 保留:全量保留4周,增量保留7天(与最近全量对应)。
- 传输与存储:内网 rsync(873) 推送到备份服务器,按客户端IP/主机名分目录;备份服务器建议 SSD/RAID 提升吞吐与可靠性。
二 方案一 快速本地定时备份脚本
- 适用:单机 LNMP,先落地本地,再配合手动/脚本同步到远端。
- 步骤:
- 安装工具并准备目录
- yum install -y rsync
- mkdir -p /backup/{mysql,www,conf,logs}
- 编写脚本 /usr/local/backup/backup.sh(按需修改路径与保留天数)
- 数据库用 mysqldump 导出并压缩
- 打包站点与配置
- 清理过期备份
- 赋权并配置 cron
- chmod +x /usr/local/backup/backup.sh
- crontab -e 添加:0 1 * * * /usr/local/backup/backup.sh
- 查看任务:crontab -l;查看日志:tail -f /var/log/cron
- 参考脚本要点(示例变量与命令):
- DATE=$(date +%F)
- mysqldump -u root -p’YOUR_DB_PWD’ --single-transaction --quick --all-databases | gzip > /backup/mysql/all_${DATE}.sql.gz
- tar czf /backup/www/site_${DATE}.tar.gz -C /usr/share/nginx/html .
- tar czf /backup/conf/nginx_${DATE}.tar.gz -C /etc/nginx .
- find /backup -type f -mtime +7 -delete
- 说明:若使用一键 LNMP 安装包(如 lnmp1.6/tools/backup.sh),可直接在其基础上调整保留策略与远端上传。
三 方案二 集中式备份 备份服务器 + 客户端 rsync 推送
- 适用:多台 CentOS 7.9 服务器统一备份到一台备份服务器(可扩展到100台规模)。
- 备份服务器(服务端)配置
- 安装并准备目录/认证
- yum install -y rsync
- mkdir -p /etc/rsyncd /data/rsync_backup /var/log/rsyncd
- echo “backup_user:Rsync@123456” > /etc/rsyncd/rsyncd.secrets
- chmod 600 /etc/rsyncd/rsyncd.secrets
- 配置 /etc/rsyncd/rsyncd.conf(示例)
- uid=root; gid=root; use chroot=no; max connections=50; timeout=300
- log file=/var/log/rsyncd/rsyncd.log; hosts allow=192.168.1.0/24; hosts deny=*
- [backup_module]
- path=/data/rsync_backup
- auth users=backup_user
- secrets file=/etc/rsyncd/rsyncd.secrets
- 启动与自启
- rsync --daemon --config=/etc/rsyncd/rsyncd.conf
- echo “rsync --daemon --config=/etc/rsyncd/rsyncd.conf” >> /etc/rc.d/rc.local && chmod +x /etc/rc.d/rc.local
- ss -tulnp | grep 873
- 客户端(每台业务机)配置
- 安装与认证
- yum install -y rsync
- mkdir -p /usr/local/backup/scripts /tmp/backup_temp /var/log/backup
- echo “Rsync@123456” > /etc/rsyncd/rsyncd.secrets
- chmod 600 /etc/rsyncd/rsyncd.secrets
- 全量备份脚本 /usr/local/backup/scripts/full_backup.sh(要点)
- 用 mysqldump 导出数据库到本地临时目录(示例:/tmp/backup_temp/mysql_${DATE}.sql.gz)
- 打包要备份的路径(如:/etc/nginx、/usr/share/nginx/html、/var/log/nginx 等,及上一步的 SQL 包)
- 推送到备份服务器:rsync -avz --password-file=/etc/rsyncd/rsyncd.secrets 包文件 backup_user@BACKUP_SERVER::backup_module/CLIENT_IP/full_${DATE}/
- 推送成功后 rm -rf /tmp/backup_temp/*
- 定时任务
- 周日全量:0 0 * * 0 /usr/local/backup/scripts/full_backup.sh
- 周一至周六增量:0 0 * * 1-6 /usr/local/backup/scripts/inc_backup.sh
- 目录规划与服务端清理
- 服务端:/data/rsync_backup/CLIENT_IP/full_YYYYMMDD/、/inc_YYYYMMDD/
- 定期清理(服务端):find /data/rsync_backup -type d -mtime +28 -exec rm -rf {} ;(按保留策略调整)
四 恢复与验证
- 数据库恢复
- 逻辑备份:gunzip < all_2025-12-07.sql.gz | mysql -u root -p
- 指定库:mysql -u root -p DB_NAME < db_2025-12-07.sql
- 文件与配置恢复
- 站点:tar xzf site_2025-12-07.tar.gz -C /usr/share/nginx/html
- Nginx:tar xzf nginx_2025-12-07.tar.gz -C /etc/nginx && nginx -t && systemctl reload nginx
- 验证要点
- 核对数据行数/表结构、站点首页与后台登录、上传文件可用性
- 定期做恢复演练,并保留演练记录与校验值(如 md5/sha256)
五 安全与优化建议
- 安全
- 仅在内网传输,限制 rsync 873 来源网段;认证文件权限 600;必要时用 rsync+SSH 替代模块认证。
- 备份数据盘做 RAID5/6 或采用冗余存储,避免单点故障。
- 性能与可运维
- 备份服务器使用 SSD/NVMe 与充足内存;按业务调整并发与超时。
- 统一日志目录与命名规范;完善监控告警与定期清理策略。