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

最簡便的 MySQL 資料庫備份法:直接複製資料目錄 vs mysqldump 官方工具

     編輯:MySQL 綜合教學

方法一:直接複製資料目錄(實驗性、極快)

原理:MySQL 資料庫 = 資料目錄下的同名子目錄。停止服務或 FLUSH TABLES WITH READ LOCK 後,直接複製目錄即可完成備份/遷移。

# 來源主機
mysqladmin -u root -p flush-tables-with-read-lock
tar czf /backup/db_backup.tar.gz /var/lib/mysql/mydb
mysqladmin -u root -p unlock-tables

# 目標主機
tar xzf db_backup.tar.gz -C /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql/mydb
chmod 700 /var/lib/mysql/mydb
  • 優點:速度極快(受限於磁碟 I/O)、保留檔案屬性、適合大資料庫、跨同版本/同架構主機遷移。
  • 缺點:需鎖表/停服務、不同版本/儲存引擎/架構(32/64位、大端小端)可能不相容、InnoDB 共享表空間需一併複製 ibdata*、ib_logfile*。

方法二:mysqldump 官方邏輯備份(通用、標準)

# 完整備份
mysqldump -h host -u root -p --single-transaction --routines --triggers --events db_name > backup.sql
# 僅結構
mysqldump -u root -p -d db_name > schema.sql
# 僅資料
mysqldump -u root -p -t db_name > data.sql
# 純文字資料(每表 .sql + .txt)
mysqldump -T /tmp/export_dir db_name

關鍵參數

參數作用
--single-transactionInnoDB 一致性備份(不鎖表)
--lock-tablesMyISAM 鎖表備份(預設)
--routines/--triggers/--events包含存儲過程/觸發器/事件
--quick逐行讀取不緩衝,大表必加
--extended-insert多值 INSERT,備份檔更小、還原更快
--master-data=2記錄 Binlog 位置,支援時間點恢復
--compress客戶端-伺服器傳輸壓縮

還原

mysqladmin -h host -u root -p create db_name
mysql -h host -u root -p db_name < backup.sql
# 大檔優化
mysql -h host -u root -p --init-command="SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0;" db_name < backup.sql

選型建議

同版本、同架構、可停機/鎖表 → 直接複製目錄最快。
跨版本、異構、需邏輯審計、無停機窗口 → mysqldump(或 Percona XtraBackup 物理熱備)。

結語

「最簡便」取決於場景。物理複製極快但有相容性限制;myshldump 通用標準、支援熱備與時間點恢復。生產環境建議:主庫採用 XtraBackup 物理熱備 + Binlog 增量,從庫定期 mysqldump 邏輯備份異地存儲,構建多層次備份體系。

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