首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

innobackupex (XtraBackup) 全量備份恢復實戰:並行、流式、節流與異機恢復

     編輯:MySQL 綜合教學

innobackupex (XtraBackup) 全量備份恢復實戰:並行、流式、節流與異機恢復

Percona XtraBackup 的 innobackupex 封裝腳本是 MySQL 物理熱備主流選擇,支持 InnoDB 非阻塞備份、並行壓縮、流式傳輸、節流限速。本文記錄生產環境異機恢復全流程,含參數調優、常見報錯排查。

一、環境信息

  • 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

# 不壓縮版本(本地磁盤充足時)
./innobackupex --user=root --password=root --host=172.17.210.112 \
  --parallel=4 --throttle=400 \
  /mysqlbak/innobackupex \
  2>/mysqlbak/innobackupex/bak.log

核心參數解析

參數作用建議值
--parallel=N拷貝文件並行線程數CPU 核心數 2-4,IO 密集型可調大
--throttle=KB/s限制讀取源文件速率避免備份佔滿 IO,影響業務;如 400=400KB/s
--stream=tar標準輸出流式打包異機備份必備,管道傳輸無落地中間文件
2>bak.log標準錯誤重定向記錄備份過程、LSN、錯誤信息
1>fullbak.tar標準輸出重定向流式打包後的 tar 文件

三、備份成功標誌

141011 09:44:04 innobackupex: completed OK!

日誌關鍵信息:

  • Latest check point (for incremental): '14275993522' → 記錄 LSN,增量備份基準
  • log scanned up to (14275993522) → redo log 掃描結束位置
  • Backup created in directory '/mysqlbak/innobackupex'

四、全量恢復三步驟

前置條件:目標數據目錄必須為空

ls /u01/mysql/data  # 必須無任何文件,否則報 "Original data directory is not empty!"

步驟 1:應用日誌

./innobackupex --user=root --password=root1 \
  --defaults-file=/etc/my.cnf \
  --apply-log /u02/backup/

作用:重放 ibbackup_logfile 至 datadir,生成 ib_logfile0/1,使數據文件達到一致性點。

步驟 2:拷貝文件

./innobackupex --user=root --password=root1 \
  --defaults-file=/etc/my.cnf \
  --copy-back /u02/backup/

關鍵輸出:

innobackupex: Copying /u02/backup/ibdata1 to '/u01/mysql/data/ibdata1'
innobackupex: Copying /u02/backup/ib_logfile1 to '/u01/mysql/data/ib_logfile1'
innobackupex: Finished copying back files.

步驟 3:修正權限

cd /u01/mysql/data
chown -R mysql.mysql .

五、常見報錯與解決

現象原因解決
啟動失敗 The server quit without updating PID file數據目錄未初始化或權限錯誤mysql_install_db --basedir=/u01/mysql --datadir=/u01/mysql/data --user=mysql 後重試
PID 文件權限報錯root 操作產生文件屬主為 rootchown -R mysql.mysql /u01/mysql/data 含 PID 目錄
連接報 Can't connect to local MySQL server through socket '/tmp/mysql.sock'Socket 文件缺失或路徑不一致touch /tmp/mysql.sock && chown mysql.mysql /tmp/mysql.sock;檢查 my.cnf socket 參數
innobackupex: Error: ibdata1 size mismatch備份與目標實例 innodb_data_file_path 不一致恢復時必須使用備份自帶 backup-my.cnf 或 server-my.cnf 作為 --defaults-file

六、異機恢復關鍵點

  1. 流式傳輸:備份端 --stream=tar | ssh target "cat > /backup/fullbak.tar",目標端直接解包應用。
  2. 配置文件同步:目標機 /etc/my.cnf 需與源機關鍵 InnoDB 參數一致(innodb_log_file_size、innodb_page_size、innodb_data_file_path)。
  3. 版本兼容:XtraBackup 版本需匹配 MySQL 大版本(5.6 用 2.4 系列,5.7/8.0 用 8.0 系列)。

七、總結

innobackupex 以 --parallel 加速、--throttle 護業務、--stream=tar 異機無落地,三步驟 apply-log → copy-back → chown 恢復清晰可靠。生產建議:

  1. 建立標準化備份腳本,固化參數、日誌輪轉、告警推送。
  2. 每週演練異機恢復,驗證 RTO < 30min、RPO = 0。
  3. 備份文件異地多副本,定期校驗 md5sum。
  4. 升級 XtraBackup 版本同步 MySQL 版本,避免 ibdata1 格式不兼容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved