news 2026/4/17 12:13:42

现对约 100 台 CentOS 7.9 系统的 LAMP 和 LNMP 架构服务器进行全网备份【20251216】002篇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
现对约 100 台 CentOS 7.9 系统的 LAMP 和 LNMP 架构服务器进行全网备份【20251216】002篇

文章目录

    • 一、环境规划
      • 1.1 网络拓扑
      • 1.2 目录结构规划
      • 1.3 备份策略
    • 二、部署实施
      • 2.1 备份服务器配置
        • 2.1.1 安装必要软件
        • 2.1.2 创建备份用户和目录
        • 2.1.3 配置rsync服务端 `/etc/rsyncd.conf`
        • 2.1.4 创建认证文件
        • 2.1.5 配置systemd服务
        • 2.1.6 启动服务
      • 2.2 客户端配置(LAMP/LNMP机器)
        • 2.2.1 创建备份脚本
        • 2.2.2 创建LNMP备份脚本
        • 2.2.3 配置定时任务
      • 2.3 批量部署脚本
        • 2.3.1 使用Ansible批量部署
      • 2.4 监控和日志收集
    • 三、测试方案
      • 3.1 单元测试
      • 3.2 集成测试
      • 3.3 压力测试
    • 四、交付文档
      • 4.1 系统架构图
      • 4.2 操作手册
    • 五、日常运维
      • 5.1 监控告警
      • 5.2 定期维护任务
      • 5.3 性能优化
    • 六、应急预案
      • 6.1 故障恢复流程
      • 6.2 演练计划

基于CentOS 7.9系统的全网备份方案,以下是完整的实施流程:

一、环境规划

1.1 网络拓扑

┌─────────────────────────────────────────────────┐ │ 备份服务器 │ │ IP: 10.0.0.100 │ │ Hostname: backup-server │ │ OS: CentOS 7.9 │ │ Rsync版本: 3.1.2 │ └─────────────┬───────────────────────────────────┘ │ │ ┌─────────┴─────────┐ │ │ ▼ ▼ ┌──────┐ ┌──────┐ │LAMP │ │LNMP │ │机器组│ │机器组│ │(50台)│ │(50台)│ └──────┘ └──────┘

1.2 目录结构规划

/backup/ # 备份根目录 ├── lamp/ # LAMP备份 │ ├── web-01/ # 按主机名区分 │ │ ├── web/ # 网站文件 │ │ ├── config/ # 配置文件 │ │ ├── database/ # 数据库备份 │ │ ├── logs/ # 日志文件 │ │ └── metadata/ # 元数据 │ └── web-02/ ├── lnmp/ # LNMP备份 ├── scripts/ # 备份脚本 ├── logs/ # 备份日志 ├── temp/ # 临时目录 └── rsync.pid # PID文件

1.3 备份策略

  • 频率:每天凌晨2:00全量备份
  • 保留策略:保留最近7天备份
  • 异地备份:每周同步到异地存储
  • 完整性检查:MD5校验

二、部署实施

2.1 备份服务器配置

2.1.1 安装必要软件
# 安装rsync和相关工具yuminstall-yrsyncrsync-daemon inotify-tools tree yuminstall-y mariadb-client# 用于数据库备份
2.1.2 创建备份用户和目录
# 创建备份用户groupaddbackupuseradd-g backup -s /sbin/nologin -M rsyncbackupecho"rsyncbackup:StrongPass@2024"|chpasswd# 创建目录结构mkdir-p /backup/{lamp,lnmp,scripts,logs,temp}mkdir-p /etc/rsync.dchown-R rsyncbackup:backup /backupchmod750/backup
2.1.3 配置rsync服务端/etc/rsyncd.conf
# /etc/rsyncd.conf uid = rsyncbackup gid = backup use chroot = no max connections = 100 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 10.0.0.0/16 hosts deny = * # 全局排除列表 exclude = lost+found/ exclude = .tmp/ exclude = .cache/ exclude = .Trash-*/ # LAMP备份模块 [lamp_backup] path = /backup/lamp auth users = rsyncbackup secrets file = /etc/rsync.passwd comment = LAMP Server Backup Area dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.7z # LNMP备份模块 [lnmp_backup] path = /backup/lnmp auth users = rsyncbackup secrets file = /etc/rsync.passwd comment = LNMP Server Backup Area dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.7z
2.1.4 创建认证文件
# 服务端密码文件echo"rsyncbackup:BackupServerPass123">/etc/rsync.passwdchmod600/etc/rsync.passwd# 客户端密码文件(分发到各机器)echo"BackupServerPass123">/etc/rsync.client.passwdchmod600/etc/rsync.client.passwd
2.1.5 配置systemd服务
# /etc/systemd/system/rsync-backup.service [Unit] Description=Fast remote file copy program daemon After=network.target [Service] Type=forking ExecStart=/usr/bin/rsync --daemon --config=/etc/rsyncd.conf ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -QUIT $MAINPID PrivateTmp=true Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
2.1.6 启动服务
systemctl daemon-reload systemctlenablersync-backup systemctl start rsync-backup systemctl status rsync-backup# 开放873端口firewall-cmd --permanent --add-port=873/tcp firewall-cmd --reload

2.2 客户端配置(LAMP/LNMP机器)

2.2.1 创建备份脚本
#!/bin/bash# /usr/local/bin/backup_lamp.shBACKUP_SERVER="10.0.0.100"MODULE_NAME="lamp_backup"BACKUP_DIR="/backup/lamp/$(hostname)"PASSWD_FILE="/etc/rsync.client.passwd"LOG_FILE="/var/log/backup_$(date+%Y%m%d).log"DATE=$(date+%Y%m%d_%H%M%S)TEMP_DIR="/tmp/backup_$DATE"# 创建临时目录mkdir-p$TEMP_DIR/{web,config,database,logs,metadata}echo"=== 开始备份$(hostname)at$(date)===">>$LOG_FILE# 备份Web文件echo"备份Web文件...">>$LOG_FILEif[-d"/var/www/html"];thentar-zcf$TEMP_DIR/web/web_$DATE.tar.gz -C /var/www html md5sum$TEMP_DIR/web/web_$DATE.tar.gz>$TEMP_DIR/web/web_$DATE.md5fi# 备份Apache配置echo"备份Apache配置...">>$LOG_FILEif[-d"/etc/httpd"];thentar-zcf$TEMP_DIR/config/apache_$DATE.tar.gz -C /etc httpdfi# 备份PHP配置if[-d"/etc/php"];thentar-zcf$TEMP_DIR/config/php_$DATE.tar.gz -C /etc phpfi# 备份MySQLecho"备份MySQL数据库...">>$LOG_FILEMYSQL_DUMP=$TEMP_DIR/database/mysql_$DATE.sql mysqldump --all-databases --single-transaction>$MYSQL_DUMP2>>$LOG_FILEif[$?-eq0];thengzip$MYSQL_DUMPmd5sum${MYSQL_DUMP}.gz>${MYSQL_DUMP}.gz.md5echo"MySQL备份成功">>$LOG_FILEelseecho"MySQL备份失败">>$LOG_FILEfi# 生成元数据echo"生成系统元数据...">>$LOG_FILE{echo"Hostname:$(hostname)"echo"IP Address:$(hostname-I)"echo"OS:$(cat/etc/redhat-release)"echo"Kernel:$(uname-r)"echo"Backup Time:$(date)"echo"Disk Usage:"df-hecho"Installed Packages:"rpm-qa|sort}>$TEMP_DIR/metadata/system_info_$DATE.txt# 同步到备份服务器echo"同步到备份服务器...">>$LOG_FILErsync-avz --password-file=$PASSWD_FILE\--delete\--timeout=300\--progress\$TEMP_DIR/\rsyncbackup@$BACKUP_SERVER::$MODULE_NAME/$(hostname)/\>>$LOG_FILE2>&1SYNC_STATUS=$?# 清理临时文件rm-rf$TEMP_DIR# 保留最近7天的日志find/var/log/ -name"backup_*.log"-mtime +7 -deleteif[$SYNC_STATUS-eq0];thenecho"备份完成: SUCCESS">>$LOG_FILEexit0elseecho"备份完成: FAILED">>$LOG_FILEexit1fi
2.2.2 创建LNMP备份脚本
#!/bin/bash# /usr/local/bin/backup_lnmp.sh# 与LAMP脚本类似,主要修改以下部分:# 备份Nginx配置if[-d"/etc/nginx"];thentar-zcf$TEMP_DIR/config/nginx_$DATE.tar.gz -C /etc nginxfi# 备份PHP-FPM配置if[-d"/etc/php-fpm.d"];thentar-zcf$TEMP_DIR/config/php-fpm_$DATE.tar.gz -C /etc php-fpm.dfi
2.2.3 配置定时任务
# 编辑crontabcrontab-e# 添加以下内容(每天凌晨2:00执行)02* * * /usr/local/bin/backup_lamp.sh>>/var/log/cron_backup.log2>&1

2.3 批量部署脚本

2.3.1 使用Ansible批量部署
# deploy_backup.yml----name:部署备份客户端hosts:allvars:backup_server:10.0.0.100rsync_password:"BackupServerPass123"tasks:-name:安装必要软件yum:name:-rsync-mariadb-treestate:present-name:创建备份脚本目录file:path:/usr/local/binstate:directorymode:0755-name:创建认证文件copy:dest:/etc/rsync.client.passwdcontent:"{{ rsync_password }}"owner:rootgroup:rootmode:0600-name:分发备份脚本template:src:"backup_{{ server_type }}.sh.j2"dest:/usr/local/bin/backup.shmode:0755-name:配置定时任务cron:name:"Daily Backup"minute:"0"hour:"2"job:"/usr/local/bin/backup.sh >> /var/log/backup_cron.log 2>&1"user:root

2.4 监控和日志收集

# 备份服务器监控脚本#!/bin/bash# /usr/local/bin/backup_monitor.shBACKUP_DIR="/backup"LOG_DIR="/backup/logs"ALERT_EMAIL="admin@example.com"THRESHOLD_DAYS=2# 超过2天无备份告警check_backup(){forserver_typeinlamp lnmp;doforserverin$(ls$BACKUP_DIR/$server_type/2>/dev/null);doLAST_BACKUP=$(find$BACKUP_DIR/$server_type/$server -name"*.tar.gz"-type f -execstat-c %Y{}\;2>/dev/null|sort-nr|head-1)CURRENT_TIME=$(date+%s)DIFF_DAYS=$(((CURRENT_TIME-LAST_BACKUP)/86400))if[$DIFF_DAYS-gt$THRESHOLD_DAYS];thenecho"警告:$server_type/$server超过${DIFF_DAYS}天无备份">>$LOG_DIR/alert_$(date+%Y%m%d).log send_alert"$server_type/$server备份异常"fidonedone}send_alert(){localmessage="$1"echo"$(date):$message"|mail -s"备份系统告警"$ALERT_EMAIL}# 检查磁盘空间check_disk_space(){USAGE=$(df-h $BACKUP_DIR|awk'NR==2 {print$5}'|sed's/%//')if[$USAGE-gt90];thensend_alert"备份磁盘使用率超过90%:${USAGE}%"fi}check_backup check_disk_space

三、测试方案

3.1 单元测试

# 1. 测试rsync连接rsync--list-only rsyncbackup@10.0.0.100::lamp_backup --password-file=/etc/rsync.client.passwd# 2. 测试备份脚本bash-n /usr/local/bin/backup_lamp.sh /usr/local/bin/backup_lamp.sh --dry-run# 3. 测试恢复流程# 从备份中恢复一个文件rsync-avz rsyncbackup@10.0.0.100::lamp_backup/web-01/web/web_20240101.tar.gz /tmp/

3.2 集成测试

# 创建测试环境# 1. 模拟LAMP机器# 2. 执行完整备份# 3. 验证备份完整性# 4. 执行恢复测试

3.3 压力测试

# 使用多个客户端同时备份foriin{1..20};do/usr/local/bin/backup_test.sh&done

四、交付文档

4.1 系统架构图

┌─────────────────────────────────────────────────────────┐ │ 备份管理系统 │ ├─────────────────────────────────────────────────────────┤ │ 监控告警 │ 日志分析 │ 策略管理 │ 恢复管理 │ 报表系统 │ └─────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────┐ │ Rsync服务器 │ ├─────────────────────────────────────────────────────────┤ │ 认证模块 │ 传输模块 │ 日志模块 │ 配额管理 │ 加密传输 │ └─────────────────────────────────────────────────────────┘ │ ┌─────────────────────┼─────────────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ LAMP集群 │ │ LNMP集群 │ │ 其他服务 │ │ (50台) │ │ (50台) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘

4.2 操作手册

# 备份系统操作手册 ## 1. 日常维护 ### 1.1 查看备份状态 $ systemctl status rsync-backup $ tail -f /var/log/rsyncd.log ### 1.2 清理旧备份 $ /usr/local/bin/clean_old_backup.sh ## 2. 故障处理 ### 2.1 服务重启 $ systemctl restart rsync-backup ### 2.2 连接问题排查 1. 检查端口:nc -zv 10.0.0.100 873 2. 检查认证:cat /etc/rsync.client.passwd 3. 查看日志:tail -f /var/log/backup_*.log ## 3. 数据恢复 ### 3.1 完整恢复 $ /usr/local/bin/restore_full.sh web-01 20240101 ### 3.2 文件级恢复 $ rsync -avz rsyncbackup@10.0.0.100::lamp_backup/web-01/path/to/file ./

五、日常运维

5.1 监控告警

# 配置Zabbix监控# 监控项:# 1. 备份成功率# 2. 备份文件大小变化# 3. 备份耗时# 4. 磁盘使用率# 5. 网络带宽使用

5.2 定期维护任务

# 每周清理脚本#!/bin/bash# /usr/local/bin/weekly_maintenance.sh# 清理30天前的备份find/backup -name"*.tar.gz"-mtime +30 -deletefind/backup -name"*.log"-mtime +30 -delete# 生成周报generate_weekly_report(){echo"=== 备份系统周报 ==="echo"生成时间:$(date)"echo"总备份数:$(find/backup -name"*.tar.gz"|wc-l)"echo"总大小:$(du-sh /backup)"echo"最近7天备份成功率:$(calculate_success_rate)"}

5.3 性能优化

# /etc/rsyncd.conf 优化 # 增加以下配置: [optimization] rsync daemon = yes socket options = SO_KEEPALIVE compress = yes compress level = 6 bwlimit = 10240 # 限制带宽 10MB/s timeout = 600 refuse options = checksum dry-run

六、应急预案

6.1 故障恢复流程

# 1. 备份服务器故障# 切换到备用备份服务器# 修改客户端配置指向备用服务器# 2. 网络中断# 启用本地临时备份# 网络恢复后增量同步# 3. 磁盘满# 清理旧备份# 扩展磁盘空间# 启用异地备份

6.2 演练计划

每月第一个周六凌晨: 1. 模拟服务器故障恢复 2. 模拟数据恢复测试 3. 检查备份完整性 4. 更新应急预案

这个方案提供了完整的备份系统实施框架,包括规划、部署、测试和维护。在实际实施时,需要根据具体环境调整IP地址、目录路径和备份策略。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 0:25:30

8、ISO 8601 日期和时间标准化原则解析

ISO 8601 日期和时间标准化原则解析 1. 日期和时间管理模型概述 ISO 8601 将管理划分为独立的日期和时间模型。日期值基于公历(民用国际标准),时间则通过 24 小时计时系统表示。其遵循最大时间粒度元素应位于最左侧的原则,后续较小元素依次位于前一个元素的右侧。例如,年…

作者头像 李华
网站建设 2026/4/18 1:59:44

Autoware Universe自动驾驶系统:从零开始的终极部署指南

Autoware Universe自动驾驶系统:从零开始的终极部署指南 【免费下载链接】autoware.universe 项目地址: https://gitcode.com/gh_mirrors/au/autoware.universe 想要快速上手开源自动驾驶系统却不知从何开始?Autoware Universe作为新一代自动驾驶…

作者头像 李华
网站建设 2026/4/18 2:04:07

Admin.NET通用权限开发框架终极完整指南:快速构建企业级后台系统

你是否正在寻找一个能够快速搭建企业级后台管理系统的解决方案?🤔 Admin.NET基于.NET 6/8和Vue3技术栈,为你提供了一套完整的权限管理开发框架。无论你是要开发OA系统、企业资源规划系统还是电商后台,这个框架都能帮你节省大量开发…

作者头像 李华
网站建设 2026/4/17 23:00:02

2025中国GEO服务商标杆企业测评报告

2025年,生成式AI技术加速渗透并规模化落地,彻底改写数字营销流量格局,GEO(生成式引擎优化)从企业非必需的营销补充项,跃升为突破流量瓶颈、实现长期增长的核心战略支柱。在此背景下,市场对GEO服…

作者头像 李华