MySQL8.0備份工具之Xtrabackup


隨着MySQL 8.0的推出,Percona公司也相繼推出了percona-xtrabackup-8.0,而原來的2.4版本也將繼續支持MySQL和Percona Server 5.6和5.7數據庫。

由於MySQL 8.0在數據字典,重做日志和撤消日志中引入的更改與以前的版本不兼容,因此Percona XtraBackup 8.0 目前不支持8.0之前的版本。

本文主要記錄下xtrabackup8.0與原來舊版本的不同和使用。

Usage: [xtrabackup [--defaults-file=#] --backup | xtrabackup [--defaults-file=#] --prepare] [OPTIONS]

--target-dir   destination directory 備份的目標目錄。如果目錄不存在,xtrabackup將創建它。如果目錄確實存在且為空,則xtrabackup將成功;xtrabackup不會覆蓋現有的文件;會在操作系統層面報錯,文件存在。

--backup            take backup to target-dir 

--prepare           prepare a backup for starting mysql server on the backup 為啟動備份上的mysql服務器准備一個備份。(類似innobackupex --apply-log)

--apply-log-only    此項較為重要。主要應用與增備,在常規備份中,執行兩種操作以使數據庫保持一致:從日志文件對數據文件重播已提交的事務,回滾未提交的事務。在准備備份時,必須跳過未提交事務的回滾,因為在備份時未提交的事務可能正在進行中,它們很可能在下一次增量備份中提交。您應該使用—apply-log-only選項來防止回滾階段。

警告:如果您不使用—apply-log-only選項來防止回滾階段,那么您的增量備份將是無用的。事務回滾后,無法應用進一步的增量備份。

--compress 該選項告訴xtrabackup使用指定的壓縮算法壓縮所有輸出數據,包括事務日志文件和元數據文件。目前唯一支持的算法是quicklz。與--compress-threads配合使用。

--compact 通過跳過二級索引頁創建一個緊湊的備份。

--compress-threads  此選項指定xtrabackup用於並行數據壓縮的工作線程數量。該選項默認為1。並行壓縮(壓縮線程)可以與並行文件復制(並行)一起使用。例如,--parallel=4 --compress --compress-threads=2將創建4個I/O線程,讀取數據並將其傳輸到2個壓縮線程。

--copy-back 將先前備份目錄中的所有文件復制到其原始位置。除非指定強制非空目錄選項,否則此選項不會復制現有文件。與MariaDB的Mariabackup的一項copy-back類似,做的時候確保datadir目錄為空,你可以把原目錄改個名字,再創建一個新的目錄。

--databases 此選項指定應該備份的數據庫和表的列表,它支持database_name.table_name,比如只想備份test庫下的su表,--databases=test.su。

--databases-exclude 排除基於名稱的數據庫,基本語法與--databases相同,不想備份的數據庫或表。注意點!此選項優先級高於--databases。

--galera-info 該選項創建xtrabackup_galera_info文件,該文件包含備份時的本地節點狀態。選項應該在執行Percona XtraDB集群備份時使用。

--incremental  該選項告訴xtrabackup創建增量備份。它被傳遞給xtrabackup子進程。指定此選項后,還可以指定--incremental-lsn或--incremental-basedir。如果兩個選項都沒有提供,則默認情況下將option——incremental-basedir傳遞給xtrabackup,設置為備份基本目錄中的第一個時間戳備份目錄。與原來舊版本--incremental類似

--slave-info 此選項在備份復制從屬服務器時非常有用。它打印主服務器的二進制日志位置。它還將此信息作為更改主命令寫入xtrabackup_slave_info文件。可以通過在這個備份上啟動一個從服務器並發出一個CHANGE master命令來設置這個主服務器的新從服務器,該命令的二進制日志位置保存在xtrabackup_slave_info文件中。

全量備份:

xtrabackup --defaults-file=/etc/my.cnf  --user='xx' --password='xx' -S /tmp/mysql.sock --compress --compress-threads=2 --backup --target-dir=/opt/mydump/

壓縮模式需要先安裝Percona自研的qpress壓縮工具。

yum install  https://repo.percona.com/yum/percona-release-latest.noarch.rpm  
yum install qpress -y

 

可以看一下備份出來的內容,如下圖:

 

都是以.qp為結尾的,不可讀,也算是另一種加密了。

解壓

 for bf in `find . -iname "*\.qp"`; do qpress -d $bf $(dirname $bf) && rm -f $bf; done

 

 

恢復備份期間增量數據(這一步類似innobackupex --apply-log)

xtrabackup  --prepare --target-dir=/opt/mydump/

 

恢復

 

① 關閉mysqld進程

 

② 確保datadir目錄為空,可以把原來的數據目錄mv到其他地方

 

③ 恢復

# xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/opt/mydump/

 

④ 更改目錄屬性

chown mysql:mysql -R /data/mysql

 

⑤ 啟動mysqld進程

增備(先建立一個全備):

xtrabackup --backup --target-dir=/opt/mydump

 

然后基於這個全備去做增備:

xtrabackup --backup --target-dir=/opt/incr1 --incremental-basedir=/opt/mydump

 

第二個增備:

xtrabackup --backup --target-dir=/opt/incr2  --incremental-basedir=/opt/incr1

應用第一個增備到全備:

xtrabackup --prepare --apply-log-only --target-dir=/opt/mydump --incremental-dir=/opt/incr1

應用第二個增備到全備(這個時候就不用加--apply-log-only了,至於理由與舊版本的增備相同):

xtrabackup --prepare --target-dir=/opt/mydump --incremental-dir=/opt/incr2

恢復過程與全備相同。

 

 

https://www.linuxidc.com/Linux/2016-08/134535.htm

https://www.percona.com/doc/percona-xtrabackup/2.4/howtos/recipes_ibkx_compressed.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM