環境:MySQL 5.6.19,安裝 /u01/mysql,數據 /u01/mysql/data,備份目標 /u02/backup。異機恢復操作與本機一致。
./innobackupex --user=root --password=root --host=172.17.210.112 \
--parallel=4 --throttle=400 --stream=tar /mysqlbak/innobackupex \
2>/mysqlbak/innobackupex/bak.log \
1>/mysqlbak/innobackupex/fullbak.tar
| 參數 | 作用 | 建議值 |
|---|---|---|
| --parallel | 並行複製線程數 | CPU 核心數 1-2 倍,默認 1 |
| --throttle | IO 限流 | 每秒 400 操作,避免影響主庫性能 |
| --stream=tar | 流式打包輸出 | 單文件便於傳輸,體積減 30%+ |
| 2>bak.log | 錯誤日志重定向 | 排查失敗核心依據 |
innobackupex: completed OK!
日志中出現 All tables unlocked、Transaction log of lsn ... was copied 表示一致性備份完成。
datadir 必須為空,否則報錯 Original data directory is not empty!。異機恢復先清空或重建目錄。
./innobackupex --user=root --password=root1 \
--defaults-file=/etc/my.cnf --apply-log /u02/backup/
將備份過程中產生的 redo log 應用到數據文件,使數據文件達到一致性狀態。
./innobackupex --user=root --password=root1 \
--defaults-file=/etc/my.cnf --copy-back /u02/backup/
依據 my.cnf 中 datadir、innodb_log_group_home_dir 等路徑,將文件拷回原位。見 Finished copying back files. 即成功。
chown -R mysql:mysql /u01/mysql/data
| 錯誤現象 | 根因 | 解決方案 |
|---|---|---|
| PID 文件丟失、啟動失敗 | 權限錯誤或數據目錄非空 | 重新 chown、確保 datadir 空目錄 |
| Can't connect to ... mysql.sock | socket 文件缺失 | touch /tmp/mysql.sock && chown mysql:mysql /tmp/mysql.sock |
| Unknown/unsupported storage engine: InnoDB | my.cnf 配置缺失或路徑錯誤 | 核對 --defaults-file 指定的配置文件 |
./innobackupex --user=root --password=root --host=172.17.210.112 \
--parallel=4 --throttle=400 /mysqlbak/innobackupex \
2>/mysqlbak/innobackupex/bak.log
生成目錄結構而非單文件,恢復時直接 --copy-back 目錄路徑,適合本機磁盤備份、網絡傳輸受限場景。
建立「每日全備 + 定期恢復演練」機制,才是備份系統真正可用的保障。