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

XtraBackup 實戰全流程:MySQL 熱備份與增量恢復、遠程傳輸、壓縮打包、權限修復

     編輯:MySQL 綜合教學

Percona XtraBackup 是 InnoDB 熱備份事實標準,支援非阻塞備份、增量備份、流式傳輸、壓縮、遠程備份。本文提供生產級標準化操作手冊。

工具組件與安裝

  • xtrabackup:核心二進制,備份 InnoDB/XtraDB 數據文件、redo log。
  • innobackupex(5.7 前)/ xtrabackup --backup(8.0+ 整合):Perl 包裝,支援 MyISAM、系統表、結構導出。
  • 安裝:yum install percona-xtrabackup-80(匹配 MySQL 8.0)或官網下載二進制包。

完整備份模式

模式命令範例適用場景
本地目錄xtrabackup --backup --target-dir=/backup/full_$(date +%F) --user=root --password=xxx常規備份
流式打包xtrabackup --backup --stream=xbstream --target-dir=/backup | gzip > /backup/full_$(date +%F).xbstream.gz跨機房傳輸、存儲壓縮
遠程直接備份xtrabackup --backup --stream=xbstream | ssh user@remote "xbstream -x -C /backup/remote_dir"無本地磁盤空間、異地備份
指定庫/表--databases="db1 db2.t1"多租戶、僅備份核心業務庫

增量備份策略


# 基準:完整備份 LSN 記錄在 xtrabackup_checkpoints
# 第 1 次增量
xtrabackup --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full_20240101

# 第 2 次增量(基於上一次增量)
xtrabackup --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

# LSN 遞增原理:每頁 LSN > 基準 LSN 則備份該頁

注意:增量僅針對 InnoDB;MyISAM 仍為完整複製。

恢復流程:Prepare → Copy-back

  1. 停止 MySQL、清空 datadir:systemctl stop mysqld && rm -rf /var/lib/mysql/*。
  2. 完整備份 Prepare(應用 redo log 使數據一致):
    
    xtrabackup --prepare --target-dir=/backup/full_20240101
    # 若有增量:依次應用
    xtrabackup --prepare --target-dir=/backup/full_20240101 --incremental-dir=/backup/inc1
    xtrabackup --prepare --target-dir=/backup/full_20240101 --incremental-dir=/backup/inc2
    
  3. 還原數據文件:
    
    xtrabackup --copy-back --target-dir=/backup/full_20240101 --datadir=/var/lib/mysql
    
  4. 修復權限、啟動:
    
    chown -R mysql:mysql /var/lib/mysql
    systemctl start mysqld
    

關鍵參數速查

參數作用建議值
--compress快速壓縮(LZ4)節省 50-70% 空間,CPU 開銷低
--compress-threads壓縮線程數CPU 核心數 / 2
--encrypt=AES256備份加密配合 --encrypt-key 或 --encrypt-key-file
--throttle限流 IOPS如 100 (MB/s),避免影響線上業務
--parallel並發複製文件數4-8,視磁盤併發能力

避坑清單

  • 版本匹配:XtraBackup 版本必須與 MySQL 大版本一致(80→8.0、24→5.7)。
  • Prepare 必須在備份機/還原機執行,不可在源庫執行(會修改備份文件)。
  • 增量鏈完整性:任何一級增量損壞會導致後續無法恢復,定期重新做完整備份斷點。
  • innobackupex 已併入 xtrabackup,8.0 直接用 xtrabackup --backup。

自動化腳本骨架


#!/bin/bash
set -euo pipefail
FULL_DIR="/backup/full_$(date +%F)"
xtrabackup --backup --target-dir="$FULL_DIR" --compress --compress-threads=4 --parallel=4 --throttle=200
# 上傳至對象存儲 / 異地
# 保留策略:保留 7 天全備 + 30 天增量
find /backup -type d -mtime +30 -name 'inc*' -exec rm -rf {} +

XtraBackup + 定時任務 + 異地存儲 + 定期恢復演練,構建 MySQL 數據安全鐵三角。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved