温馨提示×

Ubuntu LAMP怎么备份数据

小樊
45
2026-01-08 16:11:02
栏目: 智能运维

Ubuntu LAMP 备份与恢复实操指南

一 备份范围与策略

  • 备份对象应包含:网站文件(如 /var/www/html)、数据库(MySQL/MariaDB)、配置文件(Apache/PHP/MySQL)、证书与密钥(如 /etc/ssl)、以及必要的日志(按需)。
  • 策略建议:采用完全备份 + 增量/差异的组合;每日增量、每周全量;设置保留周期(如近 7–30 天);实施异地/云端存储与定期恢复演练验证可用性。

二 数据库备份

  • 使用 mysqldump(逻辑备份,通用、易恢复)
    • 备份单个库:mysqldump -u 用户名 -p 数据库名 > backup.sql
    • 备份所有库:mysqldump -u 用户名 -p --all-databases > all.sql
    • 备份单表:mysqldump -u 用户名 -p 数据库名 表名 > table.sql
  • 使用 mysqlpump(并行导出,适合大体量库)
    • 示例:mysqlpump -u 用户名 -p 数据库名 > backup.sql
  • 使用 Percona XtraBackup(物理热备,InnoDB 友好,几乎不停机)
    • 安装:sudo apt-get install percona-xtrabackup-24
    • 全量:xtrabackup --backup --user=用户名 --password=密码 --target-dir=/path/to/backup
    • 准备:xtrabackup --prepare --target-dir=/path/to/backup
  • 建议:为备份文件加上时间戳压缩;将备份同步到远程/云端;定期校验与恢复演练

三 网站文件与配置备份

  • 网站文件归档(示例):sudo tar -czvf /backup/website_$(date +%F).tar.gz /var/www/html
  • 配置文件打包:sudo tar -czvf /backup/config_$(date +%F).tar.gz /etc/apache2 /etc/php /etc/mysql /etc/ssl
  • 远程/增量同步(示例):rsync -aAXv --delete /var/www/html/ user@backup:/backup/www/
  • 说明:-aAX 保留权限/ACL/xattrs;--delete 保持两端一致;敏感目录(如 /proc、/sys、/dev、/run)不应纳入常规文件备份。

四 自动化与本地系统快照

  • 定时备份脚本示例(数据库)
    • 保存为 /usr/local/bin/backup_mysql.sh,内容:
      #!/bin/bash
      DB_USER="root"
      DB_PASS="你的密码"
      DB_NAME="your_db"
      BACKUP_DIR="/backup/mysql"
      mkdir -p "$BACKUP_DIR"
      FILE="$BACKUP_DIR/${DB_NAME}_$(date +%F_%H-%M-%S).sql.gz"
      mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$FILE"
      # 保留最近7天
      find "$BACKUP_DIR" -type f -mtime +7 -name "*.sql.gz" -delete
      
    • 赋权并加入 cron(每日 2:00):
      chmod +x /usr/local/bin/backup_mysql.sh
      sudo crontab -e
      0 2 * * * /usr/local/bin/backup_mysql.sh >> /var/log/backup_mysql.log 2>&1
      
  • 本地系统快照(可选)
    • Timeshift(RSYNC 或 BTRFS 快照,适合系统级回滚):sudo apt install timeshift,按向导选择备份位置与计划。
    • Deja Dup(图形化个人文件/主目录备份):在“设置 → 备份”中启用并设置位置与频率。

五 恢复步骤与校验

  • 数据库恢复
    • 逻辑备份:mysql -u 用户名 -p 数据库名 < backup.sql
    • 压缩包:gunzip < backup.sql.gz | mysql -u 用户名 -p 数据库名
    • XtraBackup:先 xtrabackup --prepare,再按官方流程将备份拷贝回 /var/lib/mysql 并启动 MySQL(注意文件属主/权限)。
  • 网站文件与配置恢复
    • 归档解压:sudo tar -xzvf /backup/website_2025-08-01.tar.gz -C /var/www/html
    • 配置还原:sudo tar -xzvf /backup/config_2025-08-01.tar.gz -C /
  • 校验与演练
    • 核对数据一致性(如 mysqldump 导出前后 SELECT COUNT(*)、重要文件 md5sum)、定期做恢复演练并记录校验日志,确保关键时刻可用。

0