温馨提示×

centos lnmp备份怎么做

小樊
38
2026-01-10 21:34:29
栏目: 智能运维

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,先落地本地,再配合手动/脚本同步到远端。
  • 步骤:
    1. 安装工具并准备目录
      • yum install -y rsync
      • mkdir -p /backup/{mysql,www,conf,logs}
    2. 编写脚本 /usr/local/backup/backup.sh(按需修改路径与保留天数)
      • 数据库用 mysqldump 导出并压缩
      • 打包站点与配置
      • 清理过期备份
    3. 赋权并配置 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 与充足内存;按业务调整并发与超时。
    • 统一日志目录与命名规范;完善监控告警与定期清理策略。

0