| 維度 | 分類 | 特點 |
|---|---|---|
| 邏輯備份 | INSERT 語句 | mysqldump,跨版本遷移易,速度慢,易不一致 |
| 分隔符文本 | SELECT ... INTO OUTFILE,體積小,無結構,難控制 | |
| 物理備份 | 冷備份 | 停庫拷貝文件,最簡單、最快、需停機 |
| 熱備份 | 不停服務,需引擎支援(InnoDB:xtrabackup/ibbackup) | |
| 快照備份 | LVM/ZFS/雲盤快照,秒級、需文件系統支援 |
--single-transaction(InnoDB,不可與 MyISAM 混用)、--lock-all-tables(全鎖)、--master-data=2(記錄 Binlog 位點)。-R(存儲過程)、-E(事件)、--triggers、--hex-blob、--quick(流式讀取)。mysql -u root -p < backup.sql。SELECT * INTO OUTFILE '/tmp/tbl.txt' FIELDS TERMINATED BY ',' FROM tbl;LOAD DATA INFILE 或 mysqlimport --local。xtrabackup:僅備份 InnoDB/XtraDB,不鎖表。innobackupex:腳本封裝,支援 MyISAM(需全局讀鎖 FLUSH TABLES WITH READ LOCK)。xtrabackup_logfile。FLUSH TABLES WITH READ LOCK → 刷新 MyISAM/.frm → 釋放鎖。
# 基於上次備份 LSN
xtrabackup --backup --incremental --incremental-basedir=/backup/base --target-dir=/backup/inc1
本質是備份 Redo Log 區間,極快。
xtrabackup --prepare --apply-log-only --target-dir=/backup/base(基礎備份)xtrabackup --prepare --apply-log-only --target-dir=/backup/base --incremental-dir=/backup/inc1(應用增量)xtrabackup --prepare --target-dir=/backup/base(最終回滾未提交事務)datadir,修正權限,啟動 MySQL。
# 按時間點
mysqlbinlog --stop-datetime="2023-01-01 10:00:00" binlog.000001 | mysql -u root -p
mysqlbinlog --start-datetime="2023-01-01 10:00:00" binlog.000001 | mysql -u root -p
# 按位置
mysqlbinlog --stop-position=368312 binlog.000001 | mysql -u root -p
mysqlbinlog --start-position=368315 binlog.000001 | mysql -u root -p
lvcreate -L10G -s -n mysql_snap /dev/vg/mysql 創建只讀快照。xtrabackup --prepare 於快照目錄。lvremove /dev/vg/mysql_snap。