天天看點

使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

最近有個任務是需要把阿裡雲rds資料庫備份再轉移到ecs伺服器中,本篇文章是通過官方網站上再結合自己的操作筆記備忘。

RDS資料庫的版本是 myql5.7,ECS伺服器上的版本是mysql5.7

使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

一、備份前的準備

1.ECS安裝mysql5.7

如果安裝了,請忽略。

Centos7系統下編譯安裝Mysql5.7
# wget https://gitee.com/funet8/MYSQL/raw/master/Mysql_Shell/CentOS7_Install_mysql5_7.sh
# sh CentOS7_Install_mysql5_7.sh           

2.ECS安裝Percona XtraBackup

對于MySQL 5.7、5.6或5.5執行個體:安裝Percona XtraBackup 2.4。

對于MySQL 8.0執行個體,安裝 Percona XtraBackup 8.0。

我這邊安裝Percona XtraBackup 2.4 參考網站:https://docs.percona.com/percona-xtrabackup/2.4/installation/yum_repo.html

安裝percona-release配置工具:
root您可以通過以使用者身份或使用 以下指令運作以下指令來安裝 percona-release 的 yum 存儲庫
# yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
測試存儲庫:
# yum list | grep percona
啟用存儲庫:
如果Percona XtraBackup 打算與上遊 MySQL 伺服器結合使用,您隻需要啟用tools 存儲庫:
# percona-release enable-only tools           

通過運作安裝Percona XtraBackup

# yum install -y percona-xtrabackup-24
# xtrabackup -version
xtrabackup: recognized server arguments: --datadir=/var/lib/mysql 
xtrabackup version 2.4.26 based on MySQL server 5.7.35 Linux (x86_64) (revision id: 19de43b)
Percona XtraBackup 安裝成功。           

3.安裝解壓工具qpress

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資料庫--->執行個體清單--->備份恢複

使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

複制内網位址,公網是需要收費的。

使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

在Linux伺服器上,執行如下指令下載下傳實體備份。

# wget -c 'http://...' -O test1_qp.xb
指令:
# wget -c 'http://rdsbak-st-v2.oss-cn-shenzhen-internal.aliyuncs.com/custins34273877/hins19034500_data_20221129104523_qp.xb?Expires=******************************************************&Region=cn-shenzhen' -O test1_qp.xb
# ll -h test1_qp.xb 
-rw-r--r-- 1 root root 8.7G Nov 29 10:48 test1_qp.xb           

二、解壓和恢複備份

1.在Linux伺服器上,建立一個目錄(例如/home/mysql/data)用于存放解壓後的檔案。

mkdir -p /home/mysql/data           

2.解壓壓縮包。根據壓縮包的字尾選擇解壓指令。

## 先解包
cat test1_qp.xb | xbstream -x -v -C /home/mysql/data  【已執行】
## 然後解壓
### 對于MySQL 5.6/5.7
innobackupex --decompress --remove-original /home/mysql/data 【已執行】           
使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

說明 您可以把test1和/home/mysql/data替換為實際的檔案名和路徑。

3.執行如下指令,查詢解壓後生成的檔案。

ls -l /home/mysql/data           

4.執行如下指令,恢複解壓好的備份檔案。

## MySQL 5.6/5.7
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data 【已執行】           
使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

1.恢複時請耐心等待,若系統傳回如下類似結果,則說明備份檔案已成功恢複到自建資料庫。

使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

2.若系統傳回xtrabackup: Unknown error 3613,請将Percona XtraBackup更新到最新版本後再次嘗試。

3.若系統傳回如下報錯,可以用rm -rf /var/lib/mysql指令清空檔案夾内檔案,然後用chown -R mysql:mysql /var/lib/mysql修改權限。

使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

4.若系統傳回如下報錯,請參見前提條件中的第2項說明。

使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

三、啟動MySQL

1.為避免版本問題,需修改backup-my.cnf檔案,具體操作步驟如下。

執行如下指令,以文本方式編輯backup-my.cnf檔案。

# vi /home/mysql/data/backup-my.cnf
添加如下參數:
lower_case_table_names=1
port = 61922
datadir=/home/mysql/data
        
注釋掉如下自建資料庫不支援的參數:
#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           

說明 如果自建資料庫使用的是MyISAM引擎,無法相容阿裡雲的InnoDB,則需要多注釋掉如下參數并增加skip-grant-tables參數:

#innodb_log_checksum_algorithm=strict_crc32
#redo_log_version=1
skip-grant-tables           

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

2.執行如下指令,修改檔案屬主,并确定檔案所屬為MySQL使用者。

chown -R mysql:mysql /home/mysql/data
執行如下指令,啟動MySQL程序。
mysqld --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
關閉本地的mysql否則會報錯
[ERROR] Another process with pid 27300 is using unix socket file.
# netstat -tunpl|grep mysql
tcp6       0      0 :::61922                :::*                    LISTEN      9366/mysqld    
恢複成功。           
使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

root密碼問題:

  • 如果您的執行個體版本為MySQL 5.5或5.6,需要重置root密碼方可正常使用。更多資訊,請參見官方文檔。
  • 如果您的執行個體版本為MySQL 5.7或8.0,則root密碼即自建庫的root密碼。
  • 如果啟動MySQL程序報錯,可以嘗試修改存儲引擎。更多資訊,請參見常見問題。

登入MySQL資料庫以驗證程序啟動成功

mysql -u<源RDS執行個體賬号> -p<對應密碼>
# mysql -u<源RDS執行個體賬号> -h127.0.0.1 -P 61922 -p<對應密碼>
mysql -uxshd_mysql -h127.0.0.1 -P 61922 -p           

進入資料庫:

使用XtraBackup将阿裡雲的MySQL5.7實體備份檔案恢複到伺服器中

參考文檔

官方幫助文檔:阿裡雲-RDS MySQL實體備份檔案恢複到自建資料庫https://help.aliyun.com/knowledge_detail/41817.html

繼續閱讀