前言
環境:cetos7
資料庫:Mysql7.4
Xtrabackup版本: 2.4.10
Xtrabackup簡介:
xtrabackup是Percona公司CTO Vadim參與開發的一款基于InnoDB的在線熱備工具,具有開源,免費,支持在線熱備,備份恢復速度快,占用磁盤空間小等特點,并且支持不同情況下的多種備份形式,
xtrabackup包含兩個主要的工具,即xtrabackup和innobackupex,二者區別如下:
(1)xtrabackup只能備份innodb和xtradb兩種引擎的表,而不能備份myisam引擎的表;
(2)innobackupex是一個封裝了xtrabackup的Perl腳本,支持同時備份innodb和myisam,但在對myisam備份時需要加一個全域的讀鎖,還有就是myisam不支持增量備份,
安裝Xtrabackup
#創建備份目錄,下載完整的包
備注:2.3.3之后不備份死鎖,如果資料庫是mysql 5.7之后的
必須要裝2.4.4才可以用,可以向下兼容,
步驟一. mkdir -p /xtrabackup/full/
cd /xtrabackup/
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.10/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
步驟二.#配置安裝環境
yum install perl-DBI
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
yum -y install perl-Digest-MD5
步驟三. #安裝
rpm -ivh percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
步驟四. #查看安裝好的版本
xtrabackup -version
可以看到:xtrabackup version 2.4.10 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 3198bce)
全量備份
1.備份
#創建備份目錄
mkdir -p /xtrabackup/full/
給予Mysql的目錄權限
chown mysql.mysql /xtrabackup/full -R
#進行備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' /xtrabackup/full
#進入備份目錄進行查看
假設備份出的全量備份包為 2020-1-0 #最好對包進行壓縮,后期恢復時會對備份包進行一個破壞
[root@localhost full]# ll
總用量 0
drwxr-x--- 6 mysql mysql 238 12月 24 17:20 2020-1-0
2. 恢復
1.關閉資料庫,進行模擬破壞:
[root@mysql-server ~]# systemctl stop mysqld
[root@mysql-server ~]# rm -rf /var/lib/mysql/* //洗掉所有資料
[root@mysql-server ~]# rm -rf /var/log/mysqld.log
[root@mysql-server ~]# rm -rf /var/log/mysql-slow/slow.log
2.回滾事務:
[root@mysql-server ~]# innobackupex --apply-log /xtrabackup/full/2020-1-0
備注:為什么會有回滾這一項呢,博主個人理解是,備份出資料時,類似在備份包外加了一個'鎖',
而回滾則是'去鎖'的程序,'去鎖'后才能把資料恢復到庫目錄,這也正是為什么在匯出包時要做個壓縮備
份,應為'去鎖'后備份包就不完整了,打包后更安全,假如恢復失敗,還可以恢復備份包,
3.恢復
innobackupex --copy-back /xtrabackup/full/2020-1-0
2.增量備份
1.備份
首先全量備份一次
innobackupex --user=資料庫賬號 --password='資料庫密碼' /xtrabackup/
假設全量生成的備份包為2020-1-0
第一次增量備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-1-0/ #(基于全量的包)
假設第一次增量生成的包為 2020-1-1
第二次增量備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-1-1/ #(基于第一次增量包)
假設第二次增量生成的包為 2020-1-2
第三次增量備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-1-2/ #(基于第二次增量包)
假設第三次增量生成的包為 2020-1-3
....................以此類推..........
2. 恢復
首先回滾備份包
1. 先回滾全量的包
innobackupex --apply-log --redo-only /xtrabackup/2020-1-0
2. 回滾第一次增量包
innobackupex --apply-log --redo-only /xtrabackup/2020-1-0 --incremental-dir=/xtrabackup/2020-1-1
3. 回滾第二次增量包
innobackupex --apply-log --redo-only /xtrabackup/2020-1-0 --incremental-dir=/xtrabackup/2020-1-2
4. 回滾第三次增量包
innobackupex --apply-log --redo-only /xtrabackup/2020-1-0 --incremental-dir=/xtrabackup/2020-1-3
備注:此時回滾的所有增量資料都到了第一次備份的全量包里 這時資料還沒有到達庫指定目錄
接下來我們進行恢復,
恢復回滾好的 第一次全量包
5. innobackupex --copy-back /xtrabackup/2020-1-0
3.差異備份
1.備份
首先進行一次完全備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' /xtrabackup
假設完全備份的包是2020-1-0
進行第一次差異備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-1-0
假設第一次差異備份包是2020-1-1
進行第二次差異備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-1-1 #還是基于第一次的全備
假設第二次差異備份的包是2020-1-2
進行第三次差異備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-1-1 #還是基于第一次的全備
假設第三次差異備份的包是2020-1-3
進行第四次差異備份
innobackupex --user=資料庫賬號 --password='資料庫密碼' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-1-1 #還是基于第一次的全備
假設第四次差異備份的包是2020-1-4
.................以此類推......................
2.恢復
假設恢復到第三次差異備份的資料
我們回滾時候只需要回 '滾完全備份包' 和 '第三次差異包' 備份即可,
1. 回滾
回滾全量備份包
innobackupex --apply-log --redo-only /xtrabackup/2020-1-0
回滾第三次差異備份包
innobackupex --apply-log --redo-only /xtrabackup/2020-1-0--incremental-dir=/xtrabacku/2020-1-3
2.進行恢復
恢復回滾好的 第一次全量包
innobackupex --copy-back /xtrabackup/2020-1-0
======================================================================================================================================================================================================================================================================================================
辛苦瀏覽觀看,如果對你有幫助,請順手點個贊吧 (σ゚?゚)σ…:*☆
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240482.html
標籤:其他
上一篇:lvm(邏輯卷管理)基礎知識
