| 層級 | 頻率 | 介質 | 保留 | RTO/RPO |
|---|---|---|---|---|
| 本地熱備 | 每日/每小時 | 本地磁碟/NAS | 7-30 天 | 分鐘/秒 |
| 離線冷備 | 每週/每月 | DVD-R/DVD+RW | 年級 | 小時/天 |
| 異地同步 | 即時/每日 | 異地 Server/雲存儲 | 依合規 | 秒/分鐘 |
#!/bin/bash
# /usr/local/bin/mysql_daily_backup.sh
DB_USER="backup_user"
DB_PASS="xxx"
BAK_DIR="/backup/mysql/daily"
DATE=$(date +%F_%H%M)
mkdir -p $BAK_DIR
# 全庫壓縮備份 (含 routines/triggers/events)
mysqldump --single-transaction --master-data=2 \
--routines --triggers --events --hex-blob \
-u $DB_USER -p$DB_PASS --all-databases \
| gzip > $BAK_DIR/full_$DATE.sql.gz
# 保留 30 天
find $BAK_DIR -name "full_*.sql.gz" -mtime +30 -delete
# 記錄日誌
echo "$(date) Backup completed: full_$DATE.sql.gz" >> /var/log/mysql_backup.log
加入 cron:0 2 * * * /usr/local/bin/mysql_daily_backup.sh
hdc=ide-scsi (Grub kernel 行尾加入)。sg 模組)。dvd+rw-tools (growisofs, dvd+rw-format)cdrtools (mkisofs, cdrecord, readcd)cdrdao (DAO 模式燒錄)dvdrecord (命令列 DVD 燒錄)#!/bin/bash
# /usr/local/bin/burn_weekly_dvd.sh
ISO_DIR="/backup/mysql/weekly_iso"
DVD_DEV="/dev/dvd"
DATE=$(date +%Y%m%d)
# 1. 建立 ISO (每週完整備份)
mkisofs -V "MYSQL_WEEKLY_$DATE" -o $ISO_DIR/weekly_$DATE.iso /backup/mysql/daily/
# 2. 燒錄 (DVD+RW 可覆寫)
growisofs -Z $DVD_DEV=$ISO_DIR/weekly_$DATE.iso -speed=4
# 3. 驗證
readcd -c2 dev=$DVD_DEV f=$ISO_DIR/verify_$DATE.iso
diff $ISO_DIR/weekly_$DATE.iso $ISO_DIR/verify_$DATE.iso && echo "Verify OK"
/backup/mysql → Windows 掛載磁碟機。.sql.gz。source 還原。