萬盛學電腦網

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

mysqldump 備份還原全攻略:常用參數、壓縮、跨服務器遷移、恢復報錯處理

基礎備份命令

# 單庫備份
mysqldump -u user -p db_name > backup.sql

# 帶 DROP TABLE(覆蓋導入安全)
mysqldump --add-drop-table -u user -p db_name > backup.sql

# 壓縮備份(管道 gzip)
mysqldump -u user -p db_name | gzip > backup.sql.gz

# 指定表備份
mysqldump -u user -p db_name table1 table2 > backup.sql

# 多庫備份
mysqldump --databases db1 db2 db3 > multi.sql

# 僅結構
mysqldump --no-data --databases db1 db2 > struct.sql

# 全實例備份
mysqldump --all-databases > all.sql

還原命令

# 普通還原
mysql -u user -p db_name < backup.sql

# 解壓還原
gunzip < backup.sql.gz | mysql -u user -p db_name

# 跨服務器直接遷移
mysqldump -u user -p db_name | mysql -h remote_host -u user -p db_name

常見報錯處理

ERROR 1214: The used table type doesn't support FULLTEXT indexes

原因:源表有全文索引,目標引擎(如 InnoDB 早期版本)不支持。

解決:修改配置默認引擎為 MyISAM,或導入前手動調整建表語句引擎。

[mysqld]
default-storage-engine=MyISAM

核心參數速查表

參數作用
--add-drop-table每表前加 DROP TABLE IF EXISTS,覆蓋導入不報錯
--add-locksINSERT 前後加 LOCK/UNLOCK TABLES,加速導入
-c / --complete-insertINSERT 帶列名,跨庫導入安全
--extended-insert / -e多行 VALUES,文件更小、導入更快
--quick / -q不緩衝結果集,直接流式寫文件(大表必加)
--lock-tables / -l備份期間鎖表(MyISAM 必須,InnoDB 用 --single-transaction)
--no-create-info / -t不輸出 CREATE TABLE
--no-data / -d不輸出 INSERT(只導結構)
--opt開啟 --quick --add-drop-table --add-locks --extended-insert --lock-tables(默認開啟)
--skip-opt禁用上述優化,每行單獨 INSERT
-T / --tab=path輸出 .sql (DDL) + .txt (DATA) 文件,需同機器權限
-w / --where="..."導出條件過濾(如 -w "id>100")

生產環境推薦組合

mysqldump --single-transaction --quick --extended-insert \
  --add-drop-table --master-data=2 --flush-logs \
  -u backup_user -p db_name | gzip > /backup/db_$(date +%F).sql.gz
  • --single-transaction:InnoDB 一致性非阻塞備份。
  • --master-data=2:輸出 CHANGE MASTER TO 註釋(從庫搭建用)。
  • --flush-logs:切換 Binlog,便於增量恢復。
copyright © 萬盛學電腦網 all rights reserved