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

mysqldump 備份與恢復操作手冊:從入門到遠程異機實戰

     編輯:MySQL 資料庫相關知識

工具定位

  • mysqldump 是客戶端程序,**不可在 mysql> 交互模式下執行**
  • 位置:$MYSQL_HOME/bin/mysqldump(Windows/Linux 同名)
  • 幫助:mysqldump --help

核心語法

mysqldump -h -u -p  > 
# 遠程備份
mysqldump -h 192.168.0.1 -uroot -p123 erm > d:\erm.sql

# 本地備份(省略 -h)
mysqldump -uroot -p dbcurr > 20090219.sql

關鍵點:
— 密碼緊貼 -p 無空格(安全建議省略密碼交互輸入)
— > 重定向輸出,**無分號結尾**
— 未指定 -h 默認連接本地 Socket

恢復操作

# 本地恢復
mysql -uroot -p dbcurr < d:\20090219.sql

# 遠程恢復
mysql -h 192.168.0.1 -uroot -p dbcurr < backup.sql

前置條件:目標資料庫必須已存在(除非備份含 CREATE DATABASE)。

常用參數組合速查

場景命令範例
單表結構+數據mysqldump -uroot -p --tables db tbl > tbl.sql
僅結構mysqldump -uroot -p -d db > struct.sql
僅數據mysqldump -uroot -p -t db > data.sql
多庫備份mysqldump -uroot -p -B db1 db2 > multi.sql
全庫備份mysqldump -uroot -p -A > all.sql
InnoDB 熱備份(生產標配)mysqldump --single-transaction --master-data=2 -R -E db > backup.sql
分離導出(大表專用)mysqldump -T /tmp db tbl → tbl.sql + tbl.txt

壓縮與傳輸最佳實踐

# 備份並壓縮
mysqldump --single-transaction db | gzip > db_$(date +%F).sql.gz

# 遠程直傳(無本地落盤)
mysqldump -h src_host db | ssh dst_host "mysql -h localhost -uroot -p db"

常見錯誤與排查

錯誤原因解決
ERROR 1049: Unknown database目標庫不存在先 CREATE DATABASE
Access denied權限不足/密碼錯誤檢查賬戶、FLUSH PRIVILEGES
Lost connection大表導出超時調大 net_read_timeout、max_allowed_packet
mysqldump: command not foundPATH 未包含 bin 目錄用絕對路徑或 export PATH

驗證備份可用性腳本

#!/bin/bash
# verify_backup.sh
BACKUP_FILE=$1
TEST_DB="verify_$(date +%s)"

mysql -uroot -p -e "CREATE DATABASE $TEST_DB;"
zcat $BACKUP_FILE | mysql -uroot -p $TEST_DB
TABLE_COUNT=$(mysql -uroot -p -N -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='$TEST_DB';")
echo "Restored $TABLE_COUNT tables."
mysql -uroot -p -e "DROP DATABASE $TEST_DB;"

建議納入 CI/CD 流程,每日自動驗證最近一次全備。

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