萬盛學電腦網

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

MySQL 命令行模式下的資料庫備份與還原完整指南

前言

雖然 phpMyAdmin、Navicat 等圖形化工具操作直觀,但在自動化腳本、伺服器無形介面環境或追求極致效能時,MySQL 原生命令行工具 mysqldump 和 mysql 依然是最輕量、最高效的選擇。本文將系統整理命令列模式下備份、還原資料庫與資料表的常用姿勢。

一、備份單一資料庫

最基礎的用法,將 test_db 導出為 SQL 腳本:

mysqldump -u root -p test_db > d:/abc.sql

執行後會提示輸入密碼,完成後在 D 槽根目錄得到 abc.sql。

二、一次備份多個資料庫

使用 --databases 參數指定多個資料庫名稱,輸出檔案會自動包含 CREATE DATABASE 與 USE 語句:

mysqldump -u root -p --databases test_db1 test_db2 > d:/abc.sql

三、備份遠端伺服器上的資料庫

透過 -h 指定遠端 IP,同樣支援密碼驗證:

mysqldump -h 192.168.1.1 -u root -p test_db > d:/abc.sql

提示:確保遠端 MySQL 的 bind-address 允許連線,且防火牆開放 3306 埠。

四、還原資料庫

使用 mysql 客戶端讀取 SQL 檔案並執行:

mysql -u root -p test_db < d:/abc.sql

若 SQL 檔案已包含 CREATE DATABASE,可省略資料庫名稱直接導入:

mysql -u root -p < d:/abc.sql

五、備份指定資料表

在資料庫名稱後列出表名,即可只導出特定表:

# 備份單張表
mysqldump -u root -p test_db tab1 > d:/tab1.sql

# 備份多張表
mysqldump -u root -p test_db tab1 tab2 tab3 > d:/tables.sql

六、進階實用參數速查

參數說明
--single-transactionInnoDB 熱備份必備,啟動一致性快照,不鎖表
--quick / -q大表導出時逐行讀取,避免記憶體暴增
--extended-insert使用多行 INSERT 語句,大幅縮小檔案與提升還原速度(預設開啟)
--default-character-set=utf8mb4指定導出字元集,防止中文亂碼
--routines / -R包含預存程序與函數
--triggers包含觸發器(預設開啟)

七、生產環境建議組合

mysqldump -u root -p \
  --single-transaction \
  --quick \
  --extended-insert \
  --default-character-set=utf8mb4 \
  --routines --triggers \
  test_db > /backup/test_db_$(date +%F).sql

搭配 gzip 壓縮可進一步節省空間:

mysqldump ... | gzip > /backup/test_db_$(date +%F).sql.gz

結語

熟練掌握命令列備份/還原,不僅能應對無圖形介面的伺服器環境,更能輕鬆整合進 Shell 腳本、Cron 定時任務或 CI/CD 流程,實現真正的自動化運維。

copyright © 萬盛學電腦網 all rights reserved