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

mysqldump 備份與還原實戰速查表:從單表到全庫、壓縮、跨伺服器遷移

     編輯:MySQL 資料庫相關知識

核心命令模板

mysqldump [選項] -h主機 -u用戶 -p密碼 資料庫 [表...] > 輸出檔
mysql [選項] -h主機 -u用戶 -p密碼 資料庫 < 輸入檔

常用備份場景

場景命令範例說明
單庫完整備份mysqldump -h localhost -u root -p db1 > db1.sql含結構+資料
帶 DROP TABLE(覆蓋還原)mysqldump --add-drop-table -u root -p db1 > db1.sql還原前自動刪表
單表/多表備份mysqldump -u root -p db1 t1 t2 > t1_t2.sql指定表名
多庫備份mysqldump -u root -p --databases db1 db2 > multi.sql含 CREATE DATABASE
全例備份mysqldump -u root -p --all-databases > all.sql含 mysql 系統庫
僅結構(無資料)mysqldump --no-data --databases db1 db2 > schema.sqlDDL only
壓縮備份(管道)mysqldump -u root -p db1 | gzip > db1.sql.gz節省 70%+ 空間
排除特定表mysqldump -u root -p db1 --ignore-table=db1.log_table > db1.sql5.6+ 支援

還原與遷移

基本還原

mysql -h localhost -u root -p db1 < db1.sql

壓縮檔直接還原(免解壓)

gunzip < db1.sql.gz | mysql -u root -p db1

跨伺服器直接遷移(管道流式,無中間檔)

mysqldump -u root -p db1 | mysql -h target_ip -u root -p -C db1
  • -C 啟用壓縮協議,低頻寬環境加速
  • 目標庫需預先建立:CREATE DATABASE db1 CHARSET utf8mb4;

定時自動化備份腳本範例

#!/bin/bash
# /usr/local/bin/backup_mysql.sh
DATE=$(date +%F_%H%M)
OUT="/backup/mysql/db1_${DATE}.sql.gz"
mysqldump -u backup_user -p'strong_pass' --single-transaction --routines --triggers db1 | gzip > ${OUT}
# 保留 7 天
find /backup/mysql -name "db1_*.sql.gz" -mtime +7 -delete
  • --single-transaction:InnoDB 熱備份不鎖表
  • --routines --triggers:包含存儲過程/觸發器/事件

關鍵參數速查

參數作用
--single-transactionInnoDB 一致性熱備份(不加鎖)
--master-data=2輸出 CHANGE MASTER 註解,適合搭建從庫
--hex-blob二進制欄位以十六進制輸出,避免編碼問題
--default-character-set=utf8mb4強制連線編碼,防中文亂碼
--quick大表分批讀取,避免記憶體暴增
--lock-tables=falseMyISAM 不鎖表(配合 --single-transaction 無效)

驗證備份可用性(必做)

  1. 檔案大小 > 0、無截斷
  2. head -20 backup.sql 確認 CREATE TABLE/INSERT 結構完整
  3. 定期在測試環境 mysql < backup.sql 實測還原
  4. 核對關鍵表行數、檢查和

結語

mysqldump 是 MySQL 最通用的邏輯備份工具。掌握 單交易熱備、壓縮管道、跨機遷移、自動化保留 四大核心模式,並建立「備份 → 驗證 → 演練」閉環,才能在災難發生時從容恢復。

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