圖形化工具(如 EMS SQL Manager)在大數據量下易崩潰,官方 mysqldump 才是生產環境的可靠選擇。本文涵蓋單庫備份、跨庫遷移、定時同步架構設計。
mysqldump -h localhost -u root -padmin local_db > a.sql
常用參數:
--single-transaction:InnoDB 熱備份,不鎖表(需配合 --master-data=2 記錄 binlog 位點)--routines --triggers --events:導出存儲過程、觸發器、事件--no-data:僅導出結構--no-create-info:僅導出數據--extended-insert=FALSE:每行單獨 INSERT,便於 diff 對比mysql -h 110.110.110.110 -u root -padmin remote_db < a.sql
經典三步走定時任務:
mysqldump 全量/增量備份 → .sql 文件scp/rsync/ftp 傳輸至遠端服務器mysql < file.sql 導入# 本地備份腳本 backup.sh
#!/bin/bash
DATE=$(date +%F)
mysqldump -h localhost -u root -p'password' \
--single-transaction --master-data=2 \
--routines --triggers --events \
mydb > /backup/mydb_${DATE}.sql
gzip /backup/mydb_${DATE}.sql
# 遠端同步腳本 sync.sh(配合 crontab)
#!/bin/bash
scp /backup/mydb_$(date +%F).sql.gz user@remote:/backup/
ssh user@remote "gunzip -c /backup/mydb_$(date +%F).sql.gz | mysql -u root -p'password' mydb"
| 方案 | 適用場景 | 優點 | 缺點 |
|---|---|---|---|
| mysqldump + 定時任務 | 中小數據量(<100G)、日級同步 | 簡單、無依賴、全量一致性強 | 大表導入慢、無增量、佔用帶寬 |
| binlog 增量解析(Canal/Maxwell) | 實時/近實時同步、異構數據源 | 低延遲、增量、不鎖表 | 架構複雜、需維護解析組件 |
| MySQL 原生複製 | 主從高可用、讀寫分離 | 成熟穩定、自動故障轉移 | 不支援跨版本、邏輯錯誤會複製 |
| PT-archiver / gh-ost | 大表結構變更、歸檔 | 無鎖、可控流量 | 僅解決單表問題 |
mysql_upgrade)utf8mb4,排序規則 utf8mb4_general_cisql_mode 一致性(特別是 NO_AUTO_CREATE_USER、ONLY_FULL_GROUP_BY)WHERE id BETWEEN ...)ANALYZE TABLE 更新統計信息foreign_key_checks=0、unique_checks=0、autocommit=0,導入後再開啟。SET time_zone='+00:00'; 或導入時指定 --tz-utc。mysql 系統庫或使用 pt-show-grants 重建授權。