萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

mysqldump 備份所有資料庫單指令完整語法

一條指令備份所有資料庫(含結構、資料、觸發器、預存程序),適合排程備份腳本使用。

完整指令

mysqldump \
  --user=root \
  --password='your_password' \
  --lock-all-tables \
  --all-databases \
  --routines \
  --triggers \
  --events \
  --single-transaction \
  --master-data=2 \
  > /backup/full_$(date +%F_%H-%M-%S).sql

參數詳解

參數作用
--all-databases備份所有資料庫
--lock-all-tables全域讀鎖(MyISAM 必須;InnoDB 建議改用 --single-transaction)
--single-transactionInnoDB 一致性快照,無需鎖表
--routines包含預存程序/函數
--triggers包含觸發器
--events包含 Event Scheduler 事件
--master-data=2輸出 CHANGE MASTER TO 註解(含 binlog 位置),利於主從搭建
--hex-blob二進位欄位以十六進位輸出(避免編碼問題)
--quick大表分批讀取,避免記憶體暴增

常見組合策略

純 InnoDB 環境(推薦)

mysqldump -u root -p --single-transaction --routines --triggers --events --all-databases > full_backup.sql

混合引擎或需完全鎖定

mysqldump -u root -p --lock-all-tables --routines --triggers --events --all-databases > full_backup.sql

壓縮輸出

mysqldump -u root -p --single-transaction --all-databases | gzip > full_backup_$(date +%F).sql.gz

還原指令

mysql -u root -p < full_backup.sql
# 或壓縮檔
zcat full_backup.sql.gz | mysql -u root -p

自動化備份腳本範例

#!/bin/bash
BACKUP_DIR="/backup/mysql"
DATE=$(date +%F_%H-%M-%S)
mkdir -p $BACKUP_DIR

mysqldump -u root -p'password' \
  --single-transaction --routines --triggers --events --all-databases \
  | gzip > "$BACKUP_DIR/full_$DATE.sql.gz"

# 保留 7 天
find $BACKUP_DIR -name "full_*.sql.gz" -mtime +7 -delete

設定 crontab 定時執行,即可實現自動化全量備份。

copyright © 萬盛學電腦網 all rights reserved