mysqldump 是 MySQL 官方提供的邏輯備份工具,支援完整備份、增量備份、跨主機遷移等核心場景。本文系統整理從基礎語法到生產環境自動化部署的完整知識體系,助你構建可靠的資料保護策略。
# 備份單一資料庫
mysqldump -u root -p database_name > backup.sql
# 還原資料庫
mysql -u root -p database_name < backup.sql
預設輸出包含 CREATE TABLE 結構語句與 INSERT 資料語句,適用於中小型資料庫的完整邏輯備份。
--opt)啟用 --opt 參數(預設開啟)可獲得:
DROP TABLE IF EXISTS 保冪等性重建LOCK TABLES / UNLOCK TABLES 確保備份一致性--extended-insert) 減輸出體積mysqldump --host=source_host --opt source_db | mysql --host=target_host -C target_db
-C 啟用壓縮傳輸,適合內網高速遷移場景。
# 僅備份結構
mysqldump --no-data --databases db1 db2 db3 > schema.sql
# 備份所有資料庫
mysqldump --all-databases > full_backup.sql
編輯 /etc/crontab 實現每日壓縮備份:
30 1 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /mnt/backup/db_$(date +\%m-\%d-\%Y).sql.gz
關鍵點:
gzip 節省磁碟 I/O/mnt/backup) 隔離故障域#!/bin/bash
BACKUP_DIR="/backup"
OLD_DIR="/oldbackup"
DATE=$(date +%F)
cd $BACKUP_DIR
mv backup_* $OLD_DIR/
mysqldump -u user -p'password' database_name > backup_${DATE}.sql
echo "備份完成: backup_${DATE}.sql"
搭配 crontab -e 設定排程,實現舊備份自動歸檔與新備份生成的閉環管理。
mysqldump 還原後會丟失備份點之後的變更,需結合 mysqlbinlog 實現時間點恢復 (PITR)。
[mysqld]
log-bin=mysql-bin # 啟用二進位日誌
server-id=1 # 主從架構必備
mysqldump --single-transaction --flush-logs --master-data=2 > full_backup.sql
參數解析:
--single-transaction: InnoDB 熱備份不鎖表--flush-logs: 切換新的 binlog 檔案作為增量起點--master-data=2: 註釋記錄 binlog 位置 (CHANGE MASTER TO 語法)# 1. 還原全量備份
mysql -u root -p < full_backup.sql
# 2. 套用增量日誌
mysqlbinlog mysql-bin.000003 | mysql -u root -p
# 恢復至指定時間前
mysqlbinlog --stop-date="2024-01-15 10:00:00" mysql-bin.000003 | mysql -u root -p
# 跳過錯誤時段繼續恢復
mysqlbinlog --start-date="2024-01-15 10:05:00" mysql-bin.000003 | mysql -u root -p
# 先導出可讀 SQL 分析位置
mysqlbinlog --start-date="2024-01-15 09:55:00" --stop-date="2024-01-15 10:05:00" mysql-bin.000003 > /tmp/analyze.sql
# 根據位置號恢復
mysqlbinlog --stop-position=368312 mysql-bin.000003 | mysql -u root -p
mysqlbinlog --start-position=368315 mysql-bin.000003 | mysql -u root -p
優勢:避免時鐘偏差問題,適合高併發交易系統的精準恢復。
SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER 權限掌握 mysqldump 完整工具鏈,是構建 MySQL 高可用架構的基石。建議根據業務 RPO/RTO 要求,靈活組合全量、增量、延遲從庫等多層防護策略。