| 參數 | 作用 |
--single-transaction | InnoDB 一致性熱備份,不鎖表(需 REPEATABLE READ) |
--master-data=2 | 輸出註解含 binlog 位置,作為增量恢復起點 |
--flush-logs | 切換 binlog,配合 master-data 形成檢查點 |
--routines/triggers/events | 包含預存程序、觸發器、事件 |
--add-drop-table | 還原前先 DROP,避免表已存在報錯 |
--quick | 大表逐行輸出,降低記憶體 |
--lock-tables | MyISAM 需鎖表保證一致性 |
遠程直接遷移
# 來源 → 目標(需目標已建庫)
mysqldump --single-transaction -h src_host -u u -p db | mysql -h dst_host -u u -p db
方法二:物理備份(速度快、適合大庫、版本綁定)
冷備份(停機)
systemctl stop mysqld
tar czf /backup/mysql_$(date +%F).tar.gz /var/lib/mysql
systemctl start mysqld
熱備份:Percona XtraBackup(推薦 InnoDB)
# 完全備份
xtrabackup --backup --target-dir=/backup/full_$(date +%F) --user=root --password
# 增量備份(基於上次完整/增量)
xtrabackup --backup --target-dir=/backup/inc_$(date +%F) --incremental-basedir=/backup/full_20240101 --user=root --password
# 準備(apply log)
xtrabackup --prepare --target-dir=/backup/full_20240101
xtrabackup --prepare --target-dir=/backup/full_20240101 --incremental-dir=/backup/inc_20240102
# 還原
systemctl stop mysqld
rm -rf /var/lib/mysql/*
xtrabackup --copy-back --target-dir=/backup/full_20240101
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
方法三:binlog 增量恢復(配合完全備份達成 PITR)
- 確認
log_bin=ON、binlog_format=ROW、expire_logs_days 足夠長。
2. 完全備份時記錄 binlog 位置(--master-data=2 或 SHOW MASTER STATUS)。
3. 災難發生:
a. 還原完全備份。
b. 套用 binlog:
mysqlbinlog --start-position=12345 --stop-position=67890 binlog.000001 | mysql -u root -p db
或指定時間:
mysqlbinlog --start-datetime="2024-01-15 10:00:00" --stop-datetime="2024-01-15 14:30:00" binlog.* | mysql -u root -p db
單表恢復技巧
- 從完整 SQL 檔提取單表片段(
sed -n '/CREATE TABLE `tbl`/,/^UNLOCK TABLES/p')。
- 或另建臨時庫還原完整備份,再
mysqldump 導出單表、導入目標庫。
- 使用
mysqlbinlog --database=db --table=tbl 過濾 binlog(ROW 格式支援較好)。
自動化與監控
# /etc/cron.d/mysql-backup
0 2 * * * root /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1
mysql_backup.sh 內含:備份、壓縮、上傳至 S3/NAS、校驗和、保留策略、失敗告警(郵件/Slack/企業微信)。
異地容災清單
- 備份檔至少在兩個可用區/資料中心。
- 定期(月/季)演練全量恢復、PITR 恢復、單表恢復。
- 記錄演練耗時、問題、改進措施。
- 核心庫 RPO < 5 分鐘(binlog 同步)、RTO < 30 分鐘(自動化腳本)。
- 上一篇文章: ASP 連接 MySQL 完整教學:MyODBC 驅動、DSN 設定與安全連線模式
- 下一篇文章: PHP 輕量級 MySQL 備份還原工具 MyDB:分卷備份、Web 介面、無需 Shell 權限
Copyright ©
程式碼之家 All Rights Reserved