Xtrabackup備份與恢復

Xtrabackup備份與恢復mysql

第一章..... xtrabackup. 3linux

1.1          備份原理... 3sql

1.2          xtrabackup安裝... 3數據庫

1.3          經常使用選項... 5app

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

1.4.1       備份... 6ide

1.4.2       恢復... 6spa

1.4.3       備份文件說明... 6.net

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

備份恢復

備份恢復思路:將增量備份一、增量備份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

相關文章
相關標籤/搜索