首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Linux 異構網絡下 MySQL 備份策略:本地、DVD 歸檔、遠程同步三層防護

     編輯:MySQL 資料庫相關知識

場景背景

  • 架構:RHEL 4 + PHP 4.3 + MySQL 4.0.3 + Apache 1.3
  • 日均 IP 200,典型中小站點
  • 無磁帶庫,硬件:DVD 刻錄機 + 網絡硬盤 (NAS)
  • 異構環境:服務端 Linux,桌面端 Windows 9x/2000/XP

第一層:本地熱備份

mysqldump 邏輯備份(推薦日備)

# 單庫完整備份(含結構+數據,單事務一致性視圖)
mysqldump -u backup_user -p --single-transaction --routines --triggers --events \
  --master-data=2 --flush-logs --hex-blob \
  phpbb_db > /backup/mysql/phpbb_db_$(date +%F).sql

# 壓縮存儲(節省 70%+ 空間)
mysqldump -u backup_user -p --single-transaction phpbb_db | gzip > /backup/mysql/phpbb_db_$(date +%F).sql.gz

# 僅備份結構
mysqldump -u backup_user -p --no-data phpbb_db > /backup/mysql/phpbb_db_struct_$(date +%F).sql

關鍵參數:

  • --single-transaction:InnoDB 熱備核心,利用 MVCC 獲取一致性快照,無需鎖表。
  • --master-data=2:輸出 CHANGE MASTER TO 註釋,記錄 Binlog 位點,便於從庫搭建/增量恢復。
  • --flush-logs:備份瞬間切換 Binlog,配合增量備份窗口劃分。
  • --hex-blob:二進制列十六進制導出,避免字符集問題。

恢復驗證腳本(每周必跑)

#!/bin/bash
# restore_test.sh
DB=phpbb_db
DATE=$(date -d 'yesterday' +%F)
gunzip -c /backup/mysql/${DB}_${DATE}.sql.gz | mysql -u root -p${ROOT_PWD} test_restore_${DATE}
# 校驗行數
mysql -u root -p${ROOT_PWD} -e "SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test_restore_${DATE}';"
# 清理
mysql -u root -p${ROOT_PWD} -e "DROP DATABASE test_restore_${DATE};"

第二層:DVD 離線歸檔(月度/季度)

硬件準備

  • IDE DVD-RW:需內核啟用 ide-scsi 模擬(Grub kernel ... hdc=ide-scsi)。
  • USB/1394 外置刻錄機:即插即用,無需內核參數。

軟件棧

工具用途安裝
dvd+rw-toolsgrowisofs 燒錄、dvd+rw-format 格式化源碼編譯或 RPM
cdrtoolsmkisofs 製作 ISO、readcd 讀取 ISO、cdrecord 燒 CD源碼編譯
cdrdaoDAO 模式燒錄,控制磁道間隙RPM

燒錄流程

# 1. 製作 ISO 鏡像(排除臨時文件)
mkisofs -o /tmp/backup_$(date +%Y%m).iso -V "MySQL_Backup_$(date +%Y%m)" \
  -J -r -exclude-list /backup/exclude.txt /backup/mysql/

# 2. 燒錄 DVD+R/RW(growisofs 自動處理多會話)
growisofs -Z /dev/dvd=/tmp/backup_$(date +%Y%m).iso -speed=4

# 3. 驗證
md5sum /tmp/backup_$(date +%Y%m).iso
readcd dev=/dev/dvd f=/tmp/verify.iso
md5sum /tmp/verify.iso
# 兩者 MD5 一致即成功

DVD 介質管理

  • 採用 DVD+R(一次寫入,壽命 10-50 年)歸檔;DVD+RW 做臨時測試。
  • 標籤:MySQL_Backup_202401_Full、MySQL_Backup_202401_Inc_01。
  • 異地存放:至少一份放在不同防火區/機房。

第三層:異構網絡遠程同步(實時/近實時)

rsync over SSH(Linux → Linux/NAS)

# 每小時增量同步到備份服務器
rsync -avz --delete --bwlimit=10000 \
  -e "ssh -i /root/.ssh/backup_key" \
  /backup/mysql/ backup_user@192.168.1.100:/mnt/nas/mysql_backup/

Windows 客戶端拉取

  • 安裝 cwRsync 或 DeltaCopy (rsync GUI)。
  • 計劃任務每日運行同步腳本。

二進制日誌增量備份(配合 mysqldump 全量)

# 啟用 Binlog (my.cnf)
[mysqld]
log-bin = /var/log/mysql/mysql-bin
binlog_format = ROW
expire_logs_days = 14
max_binlog_size = 100M

# mysqlbinlog 導出增量
mysqlbinlog --start-datetime="2024-01-15 00:00:00" \
  --stop-datetime="2024-01-16 00:00:00" \
  /var/log/mysql/mysql-bin.000123 > /backup/binlog/inc_20240115.sql

備份策略總覽表

層級頻率保留介質RTORPO工具
本地全量每日 02:0014 天本地磁盤<30 分鐘24hmysqldump + gzip
本地增量每小時7 天本地磁盤<15 分鐘1hmysqlbinlog
DVD 歸檔月度永久DVD+R數小時1 月mkisofs + growisofs
遠程同步每小時30 天NAS/異地服務器<1 小時1hrsync over SSH

總結

「3-2-1 原則」落地:3 份副本(本地全量+增量、遠程同步、DVD 歸檔),2 種介質(磁盤+光盤),1 份異地(遠程/異地 DVD)。中小站點無磁帶庫時,DVD+R 歸檔成本極低(單盤 <1 元,4.7GB 存數月增量),配合 rsync 遠程同步,即可構建企業級備份體系。核心動作:每日驗證 mysqldump 可恢復、每月驗證 DVD 可讀、每季驗證異地可拉取。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved