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 -u root -p db_name < backup.sql
mysql -u root -p
CREATE DATABASE IF NOT EXISTS db_name;
USE db_name;
SOURCE /path/backup.sql;
| 參數 | 用途 |
|---|---|
| --opt | 綜合優化(快速、鎖表、延遲插入、多行 INSERT 等),預設開啟 |
| --single-transaction | InnoDB 熱備份不鎖表(需配合 --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 腳本備份。
--default-character-set=utf8 或手動修改 SQL 檔。max_allowed_packet(伺服器與客戶端皆需設)。SELECT, LOCK TABLES, SHOW VIEW, TRIGGER, PROCESS 等權限。