天天看點

RDS MySQL實體備份檔案恢複教程

背景:

在基礎運維或必要驗證時,我們需要對備份的資料庫進行恢複,本文參考阿裡雲官方文檔及實踐整理教程。

基本環境:

1.系統要求: 建議CentOS 6.X/7.X, 本文使用的:7.8

2.Xtrabackup的版本

  • MySQL 5.6及之前的版本需要安裝 Percona XtraBackup 2.3,安裝指導請參見官方文檔Percona XtraBackup 2.3。
  • MySQL 5.7版本需要安裝 Percona XtraBackup 2.4,安裝指導請參見官方文檔Percona XtraBackup 2.4。
  • MySQL 8.0版本需要安裝 Percona XtraBackup 8.0,安裝指導請參見官方文檔Percona XtraBackup 8.0。

 Tips: 在MySQL5.7阿裡雲官方文檔推薦2.4,但是沒有明确具體的版本,記得yum預設2.4.3, 在2.4.3版本存在若幹BUG,建議直接根據連結下載下傳RPM 本地yum安裝。

如果為8.0,安裝8.0.4存在BUG,例如:

Populating InnoDB table cache.
Allocated tablespace ID 92 for dszgdb/dis_count, old maximum was 0
xtrabackup: Unknown error 3613
xtrabackup: Unknown error 3613
xtrabackup: Unknown error 3613
xtrabackup: Unknown error 3613      

需要安裝8.0.7版本問題解決

安裝示例:

1.如果已經安裝了,在恢複中,發現工具的版本不對,需要下載下傳對應的Percona XtraBackup,首先需要解除安裝目前版本:

# yum移除xtrabackup
yum remove percona-xtrabackup

# 查詢RPM包
rpm -qa|grep -i  xtrabackup
# 移除RPM
rpm -e percona-xtrabackup-2.3.5-1.el7.x86_64      

2.正式安裝:

1.在官方文檔找到RPM的安裝方式

2.以2.4版本進行安裝(以下指令為官網示例,注意此版本存在BUG,實際安裝參考建議使用2.4最新版本)

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm      

安裝後結果:

RDS MySQL實體備份檔案恢複教程

3.安裝qpress

XtraBackup的innobackupex指令依賴qpress指令,否則執行會提示: qpress command not found.

wget "http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/183466/cn_zh/1608011575185/qpress-11-linux-x64.tar"
tar xvf qpress-11-linux-x64.tar
chmod 775 qpress
cp qpress /usr/bin      

安裝成功:

RDS MySQL實體備份檔案恢複教程

資料恢複:

在獲得資料備份檔案的前提下,根據檔案類型不同,解壓方式也不一樣,阿裡雲目前大概類型如下:

  • tar 壓縮包 (.tar.gz 字尾)
    • tar -izxvf <資料備份檔案名> -C /home/mysql/data      
  • xbstream 壓縮包 (.xb.gz 字尾)
    •   
      gzip -d -c <資料備份檔案名> | xbstream -x -v -C /home/mysql/data      
  • xbstream 檔案包(_qp.xb 字尾)
    • 2019年2月20日後建立的MySQL 5.6執行個體,資料備份檔案的格式為xbstream檔案包(_qp.xb字尾)  
      ## 解包
      cat <資料備份檔案名> | xbstream -x -v -C /home/mysql/data
      
      ## MySQL 5.6/5.7解壓
      innobackupex --decompress --remove-original /home/mysql/data
      ## MySQL 8.0解壓
      xtrabackup --decompress --remove-original --target-dir=/home/mysql/data      
  • xbstream qpress壓縮包(_xb.qp字尾)
    • qpress -do  <資料備份檔案名>  | xbstream -x -v -C /home/mysql/data      

解壓後,進入該目錄,目錄結構如下:

RDS MySQL實體備份檔案恢複教程

 這裡有個小方法,mysql的資料目錄可以看出,此目錄結構為MySQL 8.0版本,使用對應8.0方式恢複即可。 

## MySQL 5.6/5.7
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data

## MySQL 8.0
xtrabackup --prepare --target-dir=/home/mysql/data
xtrabackup --datadir=/var/lib/mysql --copy-back --target-dir=/home/mysql/data      

恢複根據資料大小,進行恢複,資料量大可能比較慢,最終結果類似,如果過程報錯,大部分可能是安裝的XtraBackup和Mysql版本對應錯誤:

RDS MySQL實體備份檔案恢複教程

 若系統傳回如下報錯,可以用rm -rf ,(提示,資料恢複最好用幹淨的環境進行恢複)

rm -rf /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql      

修改資料配置:

RDS的資料庫阿裡雲進行了二次開發優化,原生mysql不支援部分參數,需要修改移除:

vim /home/mysql/data/backup-my.cnf      
添加:
lower_case_table_names=1
移除或注釋
#innodb_log_checksum_algorithm
#innodb_fast_checksum
#innodb_log_block_size
#innodb_doublewrite_file
#innodb_encrypt_algorithm
#rds_encrypt_data
#redo_log_version
#master_key_id
#server_uuid      

按Esc鍵,然後輸入:wq并回車進行儲存

賦予目錄權限

chown -R mysql:mysql /home/mysql/data      

啟動MySQL,建議停止其他MySQL服務

mysqld --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data      

mysqld根據情況進行指定,例如寶塔:/www/server/mysql/bin/mysqld,寶塔可以快速搭建使用MySQL各個版本。

如果不知道MySQL root的密碼,可在配置檔案中[mysqld]添加

[mysqld]
skip-grant-tables      

最近使用mysql指令進入資料庫:

RDS MySQL實體備份檔案恢複教程

資料導出:

如果希望對恢複的資料進行導出,可使用mysqldump進行導出,仍以寶塔路徑示例:

/www/server/mysql/bin/mysqldump  databases_name > databases.sql      

參考:

https://help.aliyun.com/knowledge_detail/41817.html

【版權所有@Sevck 部落格位址http://www.cnblogs.com/sevck】 可以轉載,注明出處.

繼續閱讀