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

MySQL 資料備份與還原:mysqldump、mysqlhotcopy 與物理複製全攻略

     編輯:MySQL 綜合教學

MySQL 備份策略直接關係資料安全與災難恢復能力(RPO/RTO)。本文系統整理三大主流備份方式:邏輯備份(mysqldump)、熱備份工具(mysqlhotcopy)、物理檔案複製,並說明適用場景、操作指令與避坑指南。

方式一:mysqldump 邏輯備份(最通用、跨版本相容)

常用指令速查

需求指令範例
備份單一資料庫mysqldump -h 192.168.1.100 -u root -p dbname > backup.sql
備份指定資料表mysqldump -u root -p dbname tbl_name > tbl_backup.sql
備份所有資料庫mysqldump -u root -p --all-databases > full_backup.sql
僅備份結構(無資料)mysqldump -u root -p -d --add-drop-table dbname > schema.sql
匯入還原mysql -u root -p dbname < backup.sql 或 source backup.sql

關鍵參數說明

  • --single-transaction:InnoDB 熱備必加,取得一致性快照不鎖表。
  • --master-data=2:備份檔含 CHANGE MASTER TO 註解,便於主從同步/增量恢復。
  • --skip-lock-tables:避免權限不足導致 LOCK TABLES 失敗。
  • --quick / --opt:大表備份避免記憶體暴漲(預設開啟)。

方式二:mysqlhotcopy 物理熱備份(僅 MyISAM、極速)

⚠️ 限制:僅支援 MyISAM 引擎,需 Perl 環境(perl-DBI, perl-DBD-MySQL),且必須在資料庫伺服器本機執行。

安裝依賴

yum -y install perl perl-DBI perl-DBD-MySQL

備份指令範例

# 備份單一資料庫
/usr/local/mysql/bin/mysqlhotcopy -u root -p 'pwd' dbname /backup/dir

# 備份多個資料庫
/usr/local/mysql/bin/mysqlhotcopy -u root -p 'pwd' db1 db2 db3 /backup/dir

# 正則匹配資料庫名
/usr/local/mysql/bin/mysqlhotcopy -u root -p 'pwd' 'dbprefix.*' /backup/dir

# 記錄 binlog 位點(增量備份關鍵)
/usr/local/mysql/bin/mysqlhotcopy --flushlog --record_log_pos=mysql.backup_log dbname /backup/dir

還原步驟

  1. 停止 MySQL 服務
  2. 複製備份目錄到 datadir
  3. 修正權限:chown -R mysql:mysql /var/lib/mysql/dbname
  4. 啟動 MySQL

方式三:物理檔案直接複製(停機冷備份、最簡單)

Windows 環境

  1. 停止 MySQL 服務:net stop mysql
  2. 複製 data 目錄下對應資料庫資料夾
  3. 啟動服務:net start mysql

Linux 環境

# 1. 找資料目錄
find / -name '*.MYD'

# 2. 進入目錄複製
cd /var/lib/mysql
cp -r dbname /backup/dbname_$(date +%F)

# 3. 權限修正
chown -R mysql:mysql /backup/dbname_*

# 4. 如需轉 SQL 可再用 mysqldump 匯出

三大方式對比與選型建議

維度mysqldumpmysqlhotcopy物理複製
引擎支援全引擎僅 MyISAM全引擎(需相同版本/配置)
線上熱備支援 (--single-transaction)支援 (LOCK TABLES)不支援(需停機)
備份速度較慢(SQL 解析/生成)極快(檔案級複製)極快
還原速度慢(SQL 重放)快(檔案複製)快
跨版本/架構遷移佳差差(版本、OS、配置需一致)
適用場景日常備份、異機還原、遷移大型 MyISAM 庫、本機快速備份檔案級快照、測試環境克隆

增量備份策略:結合 Binlog

  1. 週日全量 mysqldump --master-data=2
  2. 每日 FLUSH LOGS 產生新 binlog
  3. 定期備份 binlog 檔案
  4. 恢復:全量 SQL → mysqlbinlog binlog.xxx | mysql 重放至指定位點/時間

my.cnf 建議設定 expire_logs_days = 7 自動清理舊 binlog。

選對備份工具、驗證還原流程、定期演練,才是資料安全的真正保障。

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