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

阿里雲 RDS MySQL 5.6 物理備份本地恢復實戰:XtraBackup 解包全流程

     編輯:MySQL 綜合教學

背景與挑戰

  • 來源: 阿里雲 RDS MySQL 5.6 (高可用版/基礎版)
  • 目標: 公司內部自建 Linux 伺服器恢復驗證/開發測試
  • 難點: RDS 備份為 Percona XtraBackup 物理備份,需專用腳本解包,僅支援 Linux 64位,Windows 解壓見不到檔案

前置條件

  • 目標伺服器:CentOS 6/7 64位
  • 預裝 MySQL 5.6 社區版/Percona Server 5.6 (版本必須一致)
  • 足夠磁碟空間:備份檔大小 × 2 以上
  • root 權限

步驟 1:安裝 MySQL 5.6 (若未安裝)

# CentOS 6/7 通用 (官方 RPM)
rpm -ivh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm  # 先裝 repo
yum install -y mysql-community-server-5.6.*

# 或 Percona Server 5.6 (推薦,效能更強)
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install -y Percona-Server-server-56

步驟 2:下載 RDS 備份檔

  1. 登入 RDS 控制台 → 備份恢復 → 資料備份
  2. 選擇目標備份集 → 下載 (會生成 .tar.gz 或 _xb.qp 加密檔)
  3. 若為加密備份,需在控制台獲取解密金鑰

步驟 3:下載並使用官方解包腳本

chown -R mysql:mysql /data/mysql_restore/
# 確保 mysql 進程可讀寫

步驟 5:建立專用 my.cnf 配置檔

cat > /data/mysql_restore/my.cnf <<'EOF'
[mysqld]
datadir = /data/mysql_restore/backup_20240115_031920/
socket = /data/mysql_restore/mysql.sock
port = 3307
server_id = 99
log-error = /data/mysql_restore/error.log
pid-file = /data/mysql_restore/mysqld.pid
innodb_data_file_path = ibdata1:12M:autoextend
innodb_log_file_size = 50331648
innodb_log_files_in_group = 2
default-storage-engine = INNODB
skip-grant-tables   # 關鍵:跳過權限表,免密登入
EOF

步驟 6:啟動臨時實例並驗證

# 在 mysql 客戶端內執行
USE mysql;
UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
UPDATE user SET Host='%' WHERE User='root' AND Host='127.0.0.1';
FLUSH PRIVILEGES;

步驟 8:導出邏輯備份供生產導入 (推薦)

  
    項目官方文檔本實踐
  
  
    恢復工具需安裝 Percona XtraBackup 執行 --prepare + --copy-back直接啟動 mysqld 讀取解包後檔案 (利用 skip-grant-tables)
    Root 密碼官方未強調RDS 備份中 root 無密碼,需手動重置
    適用場景完整物理恢復至同版本 MySQL快速驗證/導出邏輯備份/異構遷移
  


常見坑點與解決

  • Windows 解壓無檔案: 必須在 Linux 使用官方腳本,檔案系統屬性 (inode/權限) 在 Windows 會丟失
  • 版本不匹配: RDS 5.6 必須對應 MySQL/Percona 5.6,5.7 備份不可用於 5.6
  • innodb_log_file_size 不匹配: 從 xtrabackup_logfile 或錯誤日誌獲取正確值寫入 my.cnf
  • SELinux 阻擋: setenforce 0 或配置正確上下文
  • 端口衝突: 使用非 3306 端口 (如 3307) 避免衝突

總結

阿里雲 RDS 物理備份本地恢復核心路徑:下載 → Linux 官方腳本解包 → 權限修正 → 專用 my.cnf (skip-grant-tables) → 啟動臨時實例 → 驗證/導出邏輯備份。此法繞過 XtraBackup prepare/copy-back 複雜流程,適合快速驗證、開發測試數據獲取、異構遷移。生產環境正式遷移仍建議使用邏輯備份或官方物理恢復流程。

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