首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Drupal 小站備份與大型站點 MySQL 備份策略:從 Backup Migrate 到 mysqldump 分庫壓縮異地存儲

     編輯:MySQL 綜合教學

中小型 Drupal 站點:Backup Migrate + SVN 輕量級方案

模塊配置

  • 安裝 backup_migrate 模塊。
  • 設置排程:每日/每周、保留份數、壓縮格式 (gz)。
  • 目標目錄:sites/default/files/backup_migrate/scheduled/。

自動化腳本(每日 Cron 執行)

#!/bin/bash
# cron.sh - 放置站點根目錄,crontab: 0 0 * * * cd /www/web/html && bash cron.sh >> cron.log 2>&1

date  # 開始時間
DRUSH_PHP=/usr/bin/php
export DRUSH_PHP

# 1. 執行 Drupal Cron 觸發備份
drush cron

# 2. SVN 管理備份文件(刪除舊、添加新、提交)
cd /www/web/html
svn st sites/default/files/backup_migrate/scheduled/ | grep '^!' | awk '{print $2}' | xargs -r svn delete --force
svn add sites/default/files/backup_migrate/scheduled/*
svn ci sites/default/files/backup_migrate/scheduled/ -m "auto backup $(date +%F)"

date  # 結束時間

大型站點:MySQL 原生備份策略(分庫、壓縮、異地、驗證)

核心原則

  1. 邏輯備份:mysqldump --single-transaction(InnoDB 熱備份,不加鎖)。
  2. 分庫並行:每庫獨立文件,便於單庫恢復、並行壓縮。
  3. 壓縮存儲:gzip -9 最大壓縮比。
  4. 異地複製:備份完成後 rsync/scp 至異地存儲/雲對象存儲。
  5. 定期驗證:月度抽樣恢復演練,確保備份可用。

生產級 PHP 備份腳本

#!/usr/bin/php -q
 $file.gz";
    $ret = system($cmd, $code);
    if ($code !== 0) {
        mail($to, "Backup FAILED: $db on $hostname", "Command: $cmd\nExit: $code");
    } else {
        echo "Backed up $db\n";
    }
}

// 異地同步(示例:rsync 到備份服務器)
system("rsync -avz --delete $bpath/$byear/$bmonth/$bday/ backup-server:/remote/backup/mysql/$byear/$bmonth/$bday/");

echo "All backups in $bpath\n";

Crontab 排程

[client]
user=backup
password=StrongRandomPass
host=localhost

備份保留策略示例

恢復演練清單(季度必做)

  1. 隨機挑選一個每日備份文件。
  2. 在測試環境解壓導入:zcat db.sql.gz | mysql -u root -p test_db。
  3. 驗證核心表行數、關鍵業務查詢結果。
  4. 記錄耗時、問題、修正措施。

備份不備份,關鍵看恢復。**未經驗證的備份 = 廢紙**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
頻率保留存儲位置
每日全量30 天本地 + 異地
每周全量12 週異地
每月全量12 個月異地 + 歸檔存儲 (S3 Glacier/冷存儲)