Xtrabackup備份與恢復

Xtrabackup備份與恢復

第一章..... xtrabackup. 3

1.1          備份原理... 3

1.2          xtrabackup安裝... 3

1.3          常用選項... 5

1.4          完整備份與恢復... 5

1.4.1       備份... 6

1.4.2       恢復... 6

1.4.3       備份文件說明... 6

1.5          增量備份與恢復... 7

1.5.1       第一次增量備份... 7

1.5.2            第二次增量備份... 8

1.5.3            日誌回滾... 8

1.5.4            合併增量備份1到完整備份... 8

1.5.5       合併增量備份2到完整備份... 9

1.5.6       備份恢復... 9

1.5.7       修改恢復數據文件權限... 9

1.5.8       啓動MySQL,查看數據庫恢復情況... 10

第一章   xtrabackup

     Xtrabackup是由percona開源的免費數據庫熱備份軟件,它能對InnoDB數據庫和XtraDB存儲引擎的數據庫非阻塞地備份(對於MyISAM的備份同樣需要加表鎖);mysqldump備份方式是採用的邏輯備份,其最大的缺陷是備份和恢復速度較慢,如果數據庫大於50G,mysqldump備份就不太適合。

1.1   備份原理

備份開始時首先會開啓一個後臺檢測進程,實時檢測mysql redo的變化,一旦發現redo中有新的日誌寫入,立刻將日誌記入後臺日誌文件xtrabackup_log中。之後複製innodb的數據文件和系統表空間文件ibdata1,待複製結束後,執行flush tables with read lock操作,複製.frm,MYI,MYD,等文件(執行flush table swith read lock的目的是爲了防止數據表發生DDL操作,並且在這一時刻獲得binlog的位置)最後會發出unlock tables,把表設置爲可讀可寫狀態,最終停止xtrabackup_log。

1.2   xtrabackup安裝

由於新的MySQL重做日誌和數據字典格式,8.0版本只支持mysql8.0和percona8.0,下載地址如下:

https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

早於mysql8.0的版本需要使用xtrabackup2.4備份和恢復,下載地址如下:

https://www.percona.com/downloads/Percona-XtraBackup-2.4/

安裝依賴包

yum install perl-DBD-MySQL

yum -y install rsync perl l perl-Digest-MD5

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm

rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

rpm -ivh percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

#查看安裝版本

xtrabackup -v

      1588082352(1).jpg       

               

1.3   常用選項

xtrabackup --help

 選項    描述  
 -u, --user=name    用戶  
 -p, --password=name    密碼  
 -P, --port=#    端口  
 -S, --socket=name    套接字  
 --backup    將備份數據恢復到目標目錄  
 --databases    備份數據庫,多個以空格分隔,默認備份所有庫  
 --databases-file=name    備份數據庫位於文件中  
 --tables=name    正則過濾表名  
 --tables-file=name    備份表位於文件中,格式database.table  
 --defaults-file    指定my.cnf配置文件  
 --apply-log    日誌回滾  
 --incremental    增量備份  
 --incremental-basedir    基於上次增量備份而增量備份  
 --redo-only    合併完全備份和增量備份文件  
 --copy-back    將備份數據恢復到數據庫  
 --no-timestramp    生成備份文件不以時間戳爲目錄名  
 --stream    流的格式做備份, 將備份歸檔, --stream-tar  
 --remote-host=user@ip DST_DIR    備份到遠程主機  

1.4   完整備份與恢復

1.4.1  備份

innobackupex --defaults-file=/etc/my.cnf--host=localhost --user=root --password=123456 --port=3306--socket=/tmp/mysql.sock /opt/backup

1.4.2  恢復

innobackupex --defaults-file=/etc/my.cnf--host=localhost   --user=root--password=123456 --port=3306 --socket=/tmp/mysql.sock --copy-back/opt/backup/2020-04-25_22-12-32

chown mysql . -R

systemctl restart mysqld

1.4.3  備份文件說明

backup-my.cnf:記錄innobackup使用到mysql參數

xtrabackup_binary:備份中用到的可執行文件

xtrabackup_checkpoints:記錄備份的類型、開始和結束的日誌序列號

xtrabackup_logfile:備份中會開啓一個log copy線程,用來監控innodb日誌文件(ib_logfile),如果修改就會複製到這個文件1588082394(1).jpg

1.5   增量備份與恢復

增量備份

上一步全量備份生成目錄:2020-04-25_22-12-321588082435(1).jpg

1.5.1  第一次增量備份

innobackupex --defaults-file=/etc/my.cnf--host=localhost --user=root --password=123456 --port=3306--socket=/tmp/mysql.sock --incremental /opt/backup--incremental-basedir=/opt/backup/2020-04-25_22-12-32

生成目錄:2020-04-25_22-18-35

1.5.2  第二次增量備份

innobackupex --defaults-file=/etc/my.cnf--host=localhost --user=root --password=123456 --port=3306--socket=/tmp/mysql.sock --incremental /opt/backup--incremental-basedir=/opt/backup/2020-04-25_22-18-35

生成目錄:2020-04-25_22-23-49

備份恢復

備份恢復思路:將增量備份1、增量備份2...合併到完整備份,加到一起出來一個新的完整備份,將新的完整備份以拷貝的形式到數據庫空目錄。

1.5.3  日誌回滾

#xtrabackup把備份過程中可能有尚未提交的事務或已經提交但未同步數據文件的事務,寫到xtrabackup_logfile文件,所以要先通過這個日誌文件回滾,把未完成的事務同步到備份文件,保證數據文件處於一致性。

innobackupex --apply-log --redo-only/opt/backup/2020-04-25_22-12-32

1.5.4  合併增量備份1到完整備份

innobackupex --apply-log --redo-only/opt/backup/2020-04-25_22-12-32--incremental-dir=/opt/backup/2020-04-25_22-18-35

1.5.5  合併增量備份2到完整備份

innobackupex --apply-log --redo-only/opt/backup/2020-04-25_22-12-32 --incremental-dir=/opt/backup/2020-04-25_22-23-49

備份恢復:

innobackupex --defaults-file=/etc/my.cnf--copy-back /opt/backup/2020-04-25_22-12-32

查看恢復日誌序列號1588082525(1).jpg

1.5.6  備份恢復

innobackupex --defaults-file=/etc/my.cnf--copy-back /opt/backup/2020-04-25_22-12-32

1.5.7  修改恢復數據文件權限

chown -R mysql /usr/local/mysql/

1.5.8  啓動MySQL,查看數據庫恢復情況

systemctl restart mysqld


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章