背景:
在基礎運維或必要驗證時,我們需要對備份的資料庫進行恢複,本文參考阿裡雲官方文檔及實踐整理教程。
基本環境:
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
安裝後結果:
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
安裝成功:
資料恢複:
在獲得資料備份檔案的前提下,根據檔案類型不同,解壓方式也不一樣,阿裡雲目前大概類型如下:
- 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
- 2019年2月20日後建立的MySQL 5.6執行個體,資料備份檔案的格式為xbstream檔案包(_qp.xb字尾)
- xbstream qpress壓縮包(_xb.qp字尾)
-
qpress -do <資料備份檔案名> | xbstream -x -v -C /home/mysql/data
-
解壓後,進入該目錄,目錄結構如下:
這裡有個小方法,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版本對應錯誤:
若系統傳回如下報錯,可以用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指令進入資料庫:
資料導出:
如果希望對恢複的資料進行導出,可使用mysqldump進行導出,仍以寶塔路徑示例:
/www/server/mysql/bin/mysqldump databases_name > databases.sql
參考:
https://help.aliyun.com/knowledge_detail/41817.html
【版權所有@Sevck 部落格位址http://www.cnblogs.com/sevck】 可以轉載,注明出處.