温馨提示×

centos lamp如何进行数据备份

小樊
44
2025-12-23 14:56:47
栏目: 智能运维

备份范围与总体思路

  • 备份对象包括:网站文件(如 /var/www/html)、数据库(如 MySQL/MariaDB)、配置文件(如 /etc/httpd//etc/php.ini)。
  • 备份方式建议:mysqldump 做逻辑备份,tar 做文件归档,rsync/scp 做本地/远程传输与增量同步,cron 做定时自动化。
  • 策略建议:至少每周一次全量,必要时每日增量;实施多位置备份(本地+远程/云)并定期恢复演练验证可用性。

数据库备份与恢复

  • 单库备份(推荐)
    • 命令:mysqldump -u 用户名 -p 数据库名 > backup_$(date +%F).sql
  • 多库/全库备份(含存储过程/事件)
    • 命令:mysqldump -u 用户名 -p --databases 库1 库2 ... > backup_$(date +%F).sql
    • 或全库:mysqldump -u 用户名 -p --all-databases --events --routines > backup_$(date +%F).sql
  • 压缩备份(节省空间)
    • 命令:mysqldump -u 用户名 -p 数据库名 | gzip > backup_$(date +%F).sql.gz
  • 恢复
    • 未压缩:mysql -u 用户名 -p 数据库名 < backup_$(date +%F).sql
    • 压缩:gunzip < backup_$(date +%F).sql.gz | mysql -u 用户名 -p 数据库名
  • 安全建议:避免使用 root 远程备份,创建最小权限备份专用账号;如开启 GTID,恢复时加上 --set-gtid-purged=OFF(视版本与复制拓扑而定)。

网站文件与配置备份

  • 网站目录打包
    • 命令:tar -czvf web_$(date +%F).tar.gz -C /var/www/html .
  • 配置与代码分离备份
    • 命令:tar -czvf config_$(date +%F).tar.gz /etc/httpd /etc/php.ini
  • 远程同步(增量)
    • 命令:rsync -avz --delete /var/www/html/ 用户名@远程主机:/path/to/backup/
  • 远程拷贝(一次性)
    • 命令:scp -P 22 web_$(date +%F).tar.gz 用户名@远程主机:/path/to/backup/
  • 说明:以上路径为常见默认路径,实际以你的 LAMP 部署为准(如 DocumentRoot 可能在其他目录)。

自动化与远程备份脚本

  • 本地全量+远程同步脚本示例(/usr/local/bin/backup_lamp.sh)
    #!/usr/bin/env bash
    set -Eeuo pipefail
    BACKUP_DIR="/backup/$(date +%F)"
    MYSQL_USER="backup"
    MYSQL_PASS="YourStrongPass"
    DB_NAME="mydb"
    REMOTE_USER="backup"
    REMOTE_HOST="192.0.2.10"
    REMOTE_DIR="/data/backup"
    
    mkdir -p "$BACKUP_DIR"
    
    # 1) 数据库
    mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASS" --single-transaction --routines --triggers "$DB_NAME" \
      | gzip > "$BACKUP_DIR/db_$(date +%F).sql.gz"
    
    # 2) 网站文件
    tar -czvf "$BACKUP_DIR/web_$(date +%F).tar.gz" -C /var/www/html .
    
    # 3) 配置
    tar -czvf "$BACKUP_DIR/config_$(date +%F).tar.gz" /etc/httpd /etc/php.ini
    
    # 4) 远程同步
    rsync -avz --delete -e ssh "$BACKUP_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
    
    # 5) 保留最近7天
    find /backup -maxdepth 1 -type d -mtime +7 -exec rm -rf {} +
    
  • 定时任务(每天 02:00 执行)
    • 命令:0 2 * * * /usr/local/bin/backup_lamp.sh >> /var/log/backup.log 2>&1
  • 安全建议:将 MySQL 密码写入 ~/.my.cnf 或采用 ~/.mylogin.cnf 以避免在命令行暴露;SSH 建议使用密钥登录替代口令。

恢复步骤与验证

  • 数据库恢复
    • 未压缩:mysql -u 用户名 -p 数据库名 < db_YYYY-MM-DD.sql
    • 压缩:gunzip < db_YYYY-MM-DD.sql.gz | mysql -u 用户名 -p 数据库名
  • 网站文件恢复
    • 命令:tar -xzvf web_YYYY-MM-DD.tar.gz -C /var/www/html
  • 配置恢复
    • 命令:tar -xzvf config_YYYY-MM-DD.tar.gz -C /
  • 验证要点
    • 检查 MySQL 能否正常登录并查询核心表;访问网站首页与关键功能;核对 Apache/PHP 配置是否生效;定期做恢复演练并校验数据一致性。

0