用 Docker Compose 部署 MySQL 備份自動化:cron + mysqldump 一步搞掂

# 用 Docker Compose 部署 MySQL 備份自動化:cron + mysqldump 一步搞掂 好多 IT 人一講到數據庫備份就頭痕,尤其係 MySQL 喺 Docker 環境入面跑,成日唔知點樣定時自動 backup。今日小 T 就同大家拆解一個超簡單嘅做法:用 Docker Compose 加 cron,將 mysqldump 備份流程完全自動化,仲要識得自動清理舊檔,等磁碟唔...

用 Docker Compose 部署 MySQL 備份自動化:cron + mysqldump 一步搞掂 - 文章重點速覽 infographic

# 用 Docker Compose 部署 MySQL 備份自動化:cron + mysqldump 一步搞掂

好多 IT 人一講到數據庫備份就頭痕,尤其係 MySQL 喺 Docker 環境入面跑,成日唔知點樣定時自動 backup。今日小 T 就同大家拆解一個超簡單嘅做法:用 Docker Compose 加 cron,將 mysqldump 備份流程完全自動化,仲要識得自動清理舊檔,等磁碟唔會爆。

## 點解要用 cron 做 MySQL 備份自動化?

生產環境最忌就係「人手記得先做備份」。你今日記得,聽日一忙就漏。用 cron 排程,等系統每日準時幫你 dump 一次,先至係真正嘅安全感。而且 MySQL 備份自動化仲有個好處:可以做到全自動、零人手介入、仲可以留多個時間點俾你回溯。

## 環境準備

假設你已經有個 MySQL 容器行緊,個 Compose 檔大概係咁:

version: '3.8'
services:
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: change_me
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:

## Step 1:寫備份 script

整一個 `backup.sh`,放喺宿主機上面:

#!/bin/bash
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/backup/mysql
RETENTION_DAYS=7

mkdir -p "$BACKUP_DIR"

docker exec db mysqldump \
  -uroot -pchange_me \
  --single-transaction \
  --routines \
  --triggers \
  myapp > "$BACKUP_DIR/myapp_$TIMESTAMP.sql"

# 清理 7 日前嘅舊備份
find "$BACKUP_DIR" -name "myapp_*.sql" -mtime +$RETENTION_DAYS -delete

echo "Backup done: $TIMESTAMP"

呢個 script 會用 `mysqldump` 做邏輯備份,`–single-transaction` 令 InnoDB 表唔會鎖表,適合線上環境。

## Step 2:加落 crontab

編輯 crontab:

crontab -e

加入一行,每日凌晨 2 點自動跑:

0 2 * * * /home/user/backup.sh >> /var/log/mysql_backup.log 2>&1

咁就完成晒,每日自動備份 MySQL,仲會自動刪走 7 日前嘅舊檔。

## Step 3:驗證備份檔可以用

千祈唔好只係「有 backup」就算,一定要定期試還原。可以開個測試容器:

docker run -d --name db_test -e MYSQL_ROOT_PASSWORD=test mysql:8.0
docker exec -i db_test mysql -uroot -ptest myapp < /backup/mysql/myapp_20260913_020000.sql

仲原到先至叫成功。

## 進階:加密 + 上雲

如果數據敏感,可以加多步用 gpg 加密,再 sync 上 S3 或者另一部機做異地備份。總之記住一個原則:備份要 3-2-1(3 份拷貝、2 種媒介、1 份異地)。

## 總結

🔗 參考資料:NVD NIST 漏洞資料庫

MySQL 備份自動化其實一啲都唔難,用 cron 加 mysqldump 十零分鐘就搞掂。最緊要係:排好程、寫好清理邏輯、定期試還原。咁你嘅數據先至真正安全。