Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

MySQL 資料庫備份與還原完整指南:mysqldump 參數詳解、壓縮、遠程遷移實戰

編輯:Linux 教學

mysqldump 是 MySQL 官方提供的邏輯備份工具,支援全庫、單表、結構、資料多種維度導出,配合管道可直接壓縮、遠程傳輸。本文彙整最常用的備份/還原場景與參數說明,適合 DBA 與開發人員速查。

基礎備份語法

mysqldump -h主機 -u用戶 -p密碼 資料庫名 [表名...] > 輸出檔.sql

注意:-p 後無空格直接接密碼(不安全,建議省略讓終端機提示輸入),或使用 --defaults-extra-file 指定憑證檔。

常用備份場景與指令

場景指令範例關鍵參數說明
備份整個資料庫mysqldump -u root -p dbname > dbname.sql預設包含 CREATE TABLE、INSERT 語句
備份單張表mysqldump -u root -p dbname users > dbname_users.sql表名放在資料庫名之後
僅備份結構(無資料)mysqldump -u root -p -d --add-drop-table dbname > structure.sql-d no-data;--add-drop-table 便於覆蓋匯入
多庫同時備份mysqldump -u root -p --databases db1 db2 db3 > multi.sql--databases 會在輸出加入 CREATE DATABASE
備份所有資料庫mysqldump -u root -p --all-databases > all.sql含 mysql 系統庫,遷移實例最適用
GZIP 即時壓縮備份mysqldump -u root -p dbname | gzip > dbname.sql.gz管道導向 gzip,節省磁碟空間
帶 DROP TABLE 的備份mysqldump --add-drop-table -u root -p dbname > with_drop.sql匯入前自動刪除同名表,避免衝突
排除特定表mysqldump -u root -p dbname --ignore-table=dbname.logs > no_logs.sql--ignore-table 可重複指定

還原操作

# 一般還原
mysql -h主機 -u用戶 -p密碼 目標資料庫 < 備份檔.sql

# 還原 GZIP 壓縮檔
gunzip < dbname.sql.gz | mysql -u用戶 -p密碼 目標資料庫

# 直接跨伺服器遷移(管道串聯)
mysqldump -h源主機 -u用戶 -p密碼 dbname | mysql -h目標主機 -u用戶 -p密碼 dbname

自動化備份腳本範例(每日 02:00 執行)

#!/bin/bash
# /usr/local/bin/mysql_daily_backup.sh
BACKUP_DIR="/backup/mysql"
DATE=$(date +%F)
mkdir -p "$BACKUP_DIR"
mysqldump -u backup_user -p'strong_password' --all-databases --single-transaction --routines --triggers | gzip > "$BACKUP_DIR/all_dbs_$DATE.sql.gz"
# 保留 7 天
find "$BACKUP_DIR" -name 'all_dbs_*.sql.gz' -mtime +7 -delete

加入 crontab -e:0 2 * * * /usr/local/bin/mysql_daily_backup.sh

關鍵參數補充

  • --single-transaction:InnoDB 熱備份必備,避免鎖表,保證一致性視圖。
  • --routines --triggers --events:備份存儲過程、觸發器、事件調度器。
  • --master-data=2:輸出 CHANGE MASTER TO 註釋(含 binlog 位點),便於主從同步搭建。
  • --hex-blob:二進制欄位以十六進制導出,避免字符集問題。

大資料庫優化建議

  • 改用 Percona XtraBackup(物理熱備份,備份/恢復速度快數倍)。
  • 分表並行導出:mysqldump --tab=/tmp --where="id%10=0" dbname tbl 配合多進程。
  • 導入時關閉索引、外鍵檢查、唯一性檢查:SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;。
Copyright © Windows教程網 All Rights Reserved