RDS MySQL物理備份文件恢復(fù)到自建數(shù)據(jù)庫(kù)
可以參考阿里云官方教程:https://help.aliyun.com/knowledge_detail/41817.html
故障產(chǎn)生過(guò)程:
公司使用的阿里云版的mysql數(shù)據(jù)庫(kù),在線上數(shù)據(jù)庫(kù)中錯(cuò)將訂單表的會(huì)員編號(hào)批量改為了0或1。導(dǎo)致數(shù)據(jù)錯(cuò)亂。
好在阿里云自動(dòng)將數(shù)據(jù)每天進(jìn)行一次備份。
準(zhǔn)備工作:
1:自己準(zhǔn)備一個(gè)linux服務(wù)器,我用的是自己購(gòu)買的阿里云服務(wù)器
2:通過(guò)阿里云后臺(tái),將RDS Mysql物理備份下載下來(lái)。最終得到的是一個(gè)XXXXXX_qp.xb 文件
3: 本文以自定義路徑/home/mysql/data為例,您可以根據(jù)實(shí)際情況將其替換成實(shí)際路徑。
innobackupex解壓命令需要安裝qpress,您可以前往QuickLZ網(wǎng)站,下載qpress工具,然后使用如下命令安裝:
tar xvf qpress-11-linux-x64.tar
chmod 775 qpress
cp qpress /usr/bin
4:執(zhí)行以下命令:
cat <數(shù)據(jù)備份文件名>_qp.xb | xbstream -x -v -C /home/mysql/data
5: 解壓 備份文件,解壓成功后 /home/mysql/data目錄會(huì)有很多文件(文件夾對(duì)應(yīng)數(shù)據(jù)庫(kù)名稱,后綴.ibd文件對(duì)應(yīng)每張表)
xtrabackup --decompress --remove-original --target-dir=/home/mysql/data
將解壓的文件全部賦予mysql的權(quán)限
chown -R mysql:mysql /home/mysql/data
6:安裝mysql8.0 (我用的是物理安裝,非docker安裝),具體安裝步驟自己去找其他文章進(jìn)行參考,安裝的mysql版本要跟阿里云的mysql版本保持一致,mysql安裝完之后默認(rèn)數(shù)據(jù)存放路徑是:/var/lib/mysql。
7:重要的一個(gè)步驟
先停止mysql服務(wù)
systemctl stop mysqld
然后將路徑:/var/lib/mysql/ 下的所有文件刪除
8:
MySQL 8.0版本需要安裝 Percona XtraBackup 8.0,安裝指導(dǎo)請(qǐng)參見(jiàn)官方文檔Percona XtraBackup 8.0
將解壓的備份文件恢復(fù)到自己安裝的mysql數(shù)據(jù)存放路徑下, 執(zhí)行以下命令:
xtrabackup --prepare --target-dir=/home/mysql/data
xtrabackup --datadir=/var/lib/mysql --copy-back --target-dir=/home/mysql/data
9: 啟動(dòng)mysql
systemctl start mysqld
啟動(dòng)mysql的時(shí)候會(huì)有各種原因無(wú)法啟動(dòng)。
我當(dāng)時(shí)無(wú)法啟動(dòng)的原因查了之后是在/etc/my.cnf里面增加這句:
lower_case_table_names = 1
10: 重新登錄自己的安裝的mysql。
主機(jī):你剛才安裝mysql的自己的服務(wù)器公網(wǎng)ip
端口:你公司線上數(shù)據(jù)庫(kù)的端口
賬號(hào):你公司線上數(shù)據(jù)庫(kù)的賬號(hào)
密碼:你公司線上數(shù)據(jù)庫(kù)的密碼
沒(méi)錯(cuò),數(shù)據(jù)恢復(fù)后,賬號(hào)密碼都已經(jīng)變成那個(gè)備份的數(shù)據(jù)庫(kù)的登陸賬號(hào)密碼,和端口了
登陸成功之后就可以進(jìn)行各種數(shù)據(jù)操作拉。