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

MySQL 簡易備份方案:從實體檔案到邏輯備份演進

     編輯:MySQL 資料庫相關知識

前言:phpBB 論壇頻繁崩潰的教訓

論壇資料庫 phpbb2_users 表損壞,嘗試 myisamchk -o 修復多次才恢復。為避免資料遺失,著手建立備份機制,並為未來遷移做準備。

錯誤修正與預檢

  • 備份前先 myisamchk 檢查修復,確保資料完整。
  • 檢查時務必停止 MySQL 或執行 mysqladmin flush-tables 避免衝突。
  • 排程安排在離峰時段(如深夜)。

實體檔案備份(冷備份)

PHP 程式碼備份

tar cvfz phpbb2_YYYYMMDD.tgz phpbb目錄

MySQL 資料目錄備份

/etc/rc.d/init.d/mysqld stop
tar cvfz phpbb2_db_YYYYMMDD.tgz /var/lib/mysql/phpbb2
/etc/rc.d/init.d/mysqld start

優點:極快、保留精確時間點檔案狀態。缺點:需停機、跨版本/引擎遷移風險高(需同為 MyISAM 且 MySQL 3.23+)。

還原實體備份

/etc/rc.d/init.d/mysqld stop
mv phpbb2 phpbb2_error
tar xvfz phpbb2_db_YYYYMMDD.tgz
/etc/rc.d/init.d/mysqld start

線上邏輯備份(mysqldump)

為解決跨版本遷移與不停機需求,改用 mysqldump 產生可移植 SQL。

常用指令

  • 完整備份:mysqldump --opt 資料庫 > 備份.sql
  • 壓縮:mysqldump --opt 資料庫 | gzip > 備份.sql.gz
  • 單表:mysqldump 資料庫 表名 > 表.sql
  • 跨主機遷移:mysqldump --opt 資料庫 | mysql --compress -h 目標主機 目標資料庫

自動化腳本雛形

#!/bin/sh
DATE=$(date +%Y%m%d)
mysqldump --opt phpbb2 | gzip > /backup/phpbb2_$DATE.sql.gz
# 保留 7 天
find /backup -name 'phpbb2_*.sql.gz' -mtime +7 -delete

總結與建議

  • 小型/可停機系統:實體備份最簡單可靠。
  • 生產/需遷移系統:邏輯備份雖慢但通用性強。
  • 兩者結合:每日邏輯備份 + 每週實體備份,兼顧 RPO/RTO。
  • 備份檔異地存放、定期驗證可還原性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved