mysql備份工具innobackupex遷移恢復(fù)數(shù)據(jù)適用場景: 數(shù)據(jù)量比較大,通常以G計算,常規(guī)sql導(dǎo)入導(dǎo)出數(shù)據(jù)龐大容易出錯。要將其他地方的mysql遷移到我司彈性云服務(wù)器,這時候就可以考慮使用innobackupex來備份遷移。 先決條件: linux系統(tǒng)服務(wù)器,原數(shù)據(jù)庫服務(wù)器支持ssh登陸,擁有控制管理權(quán)限。原數(shù)據(jù)庫服務(wù)器和現(xiàn)在服務(wù)器都需要安裝innobackupex。 注意: 以下示例來源于網(wǎng)上,路徑均為示例,具體以實際路徑為準(zhǔn),請充分了解并有相關(guān)備份再操作。 安裝: wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.21/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.21-1.el7.x86_64.rpm yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL #安裝依賴包 rpm -ivh percona-xtrabackup-24-2.4.21-1.el7.x86_64.rpm --nodeps --force innobackupex常用選項: --host 指定主機 --user 指定用戶名 --password 指定密碼 --port 指定端口 --databases 指定數(shù)據(jù)庫 --incremental 創(chuàng)建增量備份 --incremental-basedir 指定包含完全備份的目錄 --incremental-dir 指定包含增量備份的目錄,增量備份目錄 --apply-log 對備份進行預(yù)處理操作,一般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復(fù)操作,因為備份的數(shù)據(jù)中可能會包含尚未提交的事務(wù)或已經(jīng)提交但尚未同步至數(shù)據(jù)文件中的事務(wù)。因此,此時數(shù)據(jù)文件仍處理不一致狀態(tài)。“準(zhǔn)備”的主要作用正是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)。 --redo-only 不回滾未提交事務(wù) --copy-back 恢復(fù)備份目錄 一些常用的其他可選參數(shù): --lock-wait-query-type 該參數(shù)允許用戶指定,哪類的SQL語句是需要Flush table with read lock等待的 --lock-wait-threshold 運行超過這個時間的查詢才算長查詢 --lock-wait-timeout 等待長查詢多少時間后再嘗試FTWRL,一旦Flush table with read lock被阻塞超過預(yù)定時間,則XtraBackup出錯返回退出,參數(shù)允許用戶指定了超過該閾值時間的查詢會被Kill,同時也允許用戶指定Kill 使 全量備份: innobackupex --user=root --password=xxxx --datadir=/var/lib/mysql /mysql_bkup/ #datadir是mysql數(shù)據(jù)data存儲路徑,可以到my.cnf里面查看。mysql_bkup備份存放路徑。默認(rèn)會以時間命名備份目錄。 #合并數(shù)據(jù),使數(shù)據(jù)文件處于一致性的狀態(tài): innobackupex --apply-log /mysql_bkup/2022-08-03_21-14-37/ 異機恢復(fù)準(zhǔn)備: 1、使用scp命令將/mysql_bkup/2022-08-03_21-14-37/轉(zhuǎn)移到目標(biāo)新服務(wù)器數(shù)據(jù)庫。 2、新服務(wù)器mysql服務(wù)關(guān)停。將datadir數(shù)據(jù)存儲目錄下的數(shù)據(jù)刪除。這里建議改名,然后再新建一個(datadir路徑可從my.cnf配置文件里面查看)。 恢復(fù)數(shù)據(jù): 按上面做好了恢復(fù)準(zhǔn)備,使用命令恢復(fù)。 innobackupex --copy-back /mysql_bkup/2022-08-03_21-14-37/ 或者: innobackupex --copy-back --datadir=/var/lib/mysql /mysql_bkup/2022-08-03_21-14-37/ 恢復(fù)以后注意使用chown重置目錄權(quán)限,然后將mysql服務(wù)重新啟動。 如果數(shù)據(jù)庫遷移過程是在運行的,數(shù)據(jù)有更新,就需要增量備份。 增量備份: --incremental 創(chuàng)建增量備份 --incremental-basedir 指定包含完全備份的目錄 --incremental-dir 指定包含增量備份的目錄 #合并全備數(shù)據(jù)目錄,確保數(shù)據(jù)的一致性 innobackupex --apply-log --redo-only /mysql_bkup/2022-08-03_21-14-37/ #創(chuàng)建增量備份 innobackupex --user=root --password=xxx --incremental /mysql_bkup_add/ --incremental-basedir=/mysql_bkup/2022-08-03_21-14-37/ #將增量備份數(shù)據(jù)合并到全備數(shù)據(jù)目錄當(dāng)中 innobackupex --apply-log /mysql_bkup/2022-08-03_21-14-37/ --incremental-dir=/mysql_bkup_add/增量備份/ #數(shù)據(jù)一致性 innobackupex --apply-log /mysql_bkup/2022-08-03_21-14-37 #恢復(fù)數(shù)據(jù): innobackupex --copy-back /mysql_bkup/2022-08-03_21-14-37 #恢復(fù)到異地也是需要scp遷移到新服務(wù)器,按上面說明先停止服務(wù),刪除data數(shù)據(jù)再操作。 增量備份可以是多次,以下是多次增量備份示例: #進行第一次全備 [root@ebs~]#innobackupex --datadir=/var/lib/mysql --user=root --password=xxx ./bkup #進行第一次增備,基于上次的全備 [root@ebs ~]#innobackupex --datadir=/var/lib/mysql --user=root --password=xxx --incremental ./bkup/incer1 --incremental-basedir=./bkup/2022-04-23_11-39-31 #進行第二次全備,基于第一次增備 [root@ebs ~]#innobackupex --datadir=/var/lib/mysql --user=root --password=xxx --incremental ./bkup/incer2 --incremental-basedir=./bkup/incer1/2022-04-23_11-47-10 --incremental 創(chuàng)建增量備份 --incremental-basedir 指定包含完全備份的目錄 --incremental-dir 指定包含增量備份的目錄 ##########################恢復(fù)時進行數(shù)據(jù)整合#################################################### #對整合的開始備份集——全備集應(yīng)用日志,并指定"--redo-only"表示開始進入日志追加 innobackupex --apply-log --redo-only ./bkup/2022-04-23_11-39-31/ #對第一個增備集進行"準(zhǔn)備",將其追加到全備集中 innobackupex --apply-log --redo-only ./bkup/2022-04-23_11-39-31/ --incremental-dir=./bkup/incer1/2022-04-23_11-47-10/ #對第二個增備集進行"準(zhǔn)備",將其追加到全備集中,但是不再應(yīng)用"--redo-only",表示整合的結(jié)束點 innobackupex --apply-log ./bkup/2022-04-23_11-39-31/ --incremental-dir=./bkup/incer2/2022-04-23_11-53-19/ #對整合完成的全備集進行一次整體的"準(zhǔn)備" innobackupex --apply-log ./bkup/2022-04-23_11-39-31/ ###################進行數(shù)據(jù)的恢復(fù)############################# innobackupex --copy-back --datadir=/var/lib/mysql ./bkup/2022-04-23_11-39-31/ #如果是異地恢復(fù),需要scp遷移過去再執(zhí)行。 ###############修改目錄權(quán)限并啟動mysql########### chown mysql:mysql -R /usr/local/mysql/data && systemctl start mysqld 官方文檔給出的恢復(fù)步驟: innobackupex --apply-log --redo-only BASE-DIR innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1 innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2 innobackupex --apply-log BASE-DIR innobackupex --copy-back BASE-DIR
|
|||||
| >> 相關(guān)文章 | |||||
|
|
|||||
400-028-5800
028-62778877
您好,非正常上班時間若有緊急技術(shù)問題,請撥總機后按7號鍵, 其他問題請?zhí)峤还位蛟谏习鄷r間聯(lián)系,謝謝支持!