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

MySQL 資料庫匯出匯入完整指令集:mysqldump、source、實體檔案備份

     編輯:MySQL 資料庫相關知識

命令列匯出

匯出整個資料庫

mysqldump -u root -p db_name > backup.sql
# 輸入密碼後生成 backup.sql

匯出單張表

mysqldump -u root -p db_name table_name > table.sql

只匯出資料(不含結構)

mysqldump -u root -p -t db_name > data_only.sql

匯出存儲過程、觸發器、事件

# 存儲過程/函數
mysqldump -u root -p -R db_name > routines.sql
# 事件
mysqldump -u root -p -E db_name > events.sql
# 觸發器(隨表自動匯出,無需額外參數)

完整備份所有資料庫

mysqldump -u root -p -A > all_dbs.sql

命令列匯入

方式一:mysql 指令導入

mysql -u root -p db_name < backup.sql

方式二:進入 MySQL 後用 source

mysql -u root -p
CREATE DATABASE IF NOT EXISTS db_name;
USE db_name;
SOURCE /path/backup.sql;

進階參數說明

參數用途
--opt綜合優化(快速、鎖表、延遲插入、多行 INSERT 等),預設開啟
--single-transactionInnoDB 熱備份不鎖表(需配合 --master-data=2)
--master-data=2記錄 binlog 位點(從庫同步用)
--hex-blob二進制欄位用十六進制匯出
--no-create-info不匯出 CREATE TABLE(-t 同義)
--no-data只匯出結構(-d 同義)
--compress啟用壓縮傳輸
--default-character-set=utf8mb4指定連線字元集

實體檔案備份(冷備份/實體複製)

適用於 MyISAM 或關閉服務的 InnoDB:

# 1. 停止服務
systemctl stop mysqld

# 2. 打包資料目錄
tar czf mysql_data.tar.gz /var/lib/mysql

# 3. 複製到目標機器並解壓
tar xzf mysql_data.tar.gz -C /var/lib/mysql

# 4. 修正權限
chown -R mysql:mysql /var/lib/mysql
chmod -R 660 /var/lib/mysql/*

# 5. 啟動服務
systemctl start mysqld

注意:不同 MySQL 版本、作業系統、架構間實體複製可能不相容,建議優先用 SQL 腳本備份。

常見問題排查

  • 匯入報錯 Unknown collation:目標版本較舊,匯出時加 --default-character-set=utf8 或手動修改 SQL 檔。
  • Max packet size:大資料匯入失敗,調整 max_allowed_packet(伺服器與客戶端皆需設)。
  • 權限不足:確認備份帳號具備 SELECT, LOCK TABLES, SHOW VIEW, TRIGGER, PROCESS 等權限。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved