使用xtrabackup備份mysql數據庫(全備,增量, 差異備份)
1、數據庫備份 —xtrabackup
創建的目錄
[root@localhost ~]# mkdir -p /xtrabackup/{full,increment,difference}
(1)完全備份
①數據的備份
[root@localhost ~]# cd /xtrabackup/full
##語法:innobackupex --user=數據庫用戶名(root或授權用戶) --password=數據庫密碼 備份數據要存的目錄
[root@localhost full]# innobackupex --user=root --password=Mysql..1113 /xtrabackup/full
[root@localhost full]# ls #備份的數據以時間戳創建備份目錄
2019-11-15_21-50-19
#對數據庫進行更改,可在進行備份,同上。
②數據的恢復(–redo-only 表示只回滾已提交的事務, 忽略未提交的事務)
步驟(6步):停止數據庫 —> 清理環境 —> 重演回滾 —> 恢復數據 —> 修改權限 —> 啓動數據庫
##語法:innobackupex --apply-log --redo-only /要恢復的版本目錄/ #重演回滾
##語法:innobackupex --copy-back --redo-only /要恢復的版本目錄/ #恢復數據
[root@localhost full]# systemctl stop mysqld
[root@localhost full]# rm -rf /var/lib/mysql/*
[root@localhost full]# innobackupex --apply-log --redo-only /要恢復的版本目錄/
[root@localhost full]# innobackupex --copy-back --redo-only /要恢復的版本目錄/
[root@localhost full]# chown mysql.mysql -R /var/mysql/mysql/
[root@localhost full]# systemctl start mysqld
## 進數據庫查看即可看到恢復的數據
(2)增量備份(在完全備份的基礎上做)
①數據的備份
[root@localhost ~]# cd /xtrabackup/increment
##語法:innobackupex --user=數據庫用戶名(root或授權用戶) --password=數據庫密碼 --increateal 增量備份數據存放的目錄 --incremental-basedir=/基於的完全備份數據目錄/
[root@localhost increment]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/full/2019-11-15_21-50-19
[root@localhost increment]# ls
2019-11-15_22-03-27
## 在數據庫進行修改並進行第二次增量備份(基於上一次增量備份而不是完全備份)
[root@localhost increment]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/increment/2019-11-15_22-03-27
[root@localhost increment]# ls
2019-11-15_22-03-27 2019-11-15_22-13-14
## 在數據庫進行修改並進行第三次增量備份(基於上一次增量備份而不是完全備份)
[root@localhost increment]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/increment/2019-11-15_22-13-14
[root@localhost increment]# ls
2019-11-15_22-03-27 2019-11-15_22-13-14 2019-11-15_22-16-42
②數據的恢復(在此我們操作回滾到第二次增量備份的數據)
步驟(6步):停止數據庫 —> 清理環境 —> 重演回滾 —> 恢復數據 —> 修改權限 —> 啓動數據庫
##語法:innobackupex --apply-log --redo-only /完全備份的目錄/ --incremental-dir=/增量的版本依次回滾/ #重演回滾
##語法:innobackupex --copy-back --redo-only /完全備份的目錄/ #恢復數據
[root@localhost increment]# systemctl stop mysqld
[root@localhost increment]# rm -rf /var/lib/mysql/*
[root@localhost increment]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 #先回滾到完全備份
[root@localhost increment]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 --incremental-dir=/xtrabackup/increment/2019-11-15_22-03-27 #再回滾到第一次的增量備份
[root@localhost increment]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 --incremental-dir=/xtrabackup/increment/2019-11-15_22-13-14 #再回滾到第二次的增量備份
[root@localhost increment]# innobackupex --copy-back --redo-only /xtrabackup/full/2019-11-15_21-50-19 #恢復數據
[root@localhost increment]# chown mysql.mysql -R /var/mysql/mysql/
[root@localhost increment]# systemctl start mysqld
## 進數據庫查看即可看到恢復的數據
(3)差異備份
①數據的備份
[root@localhost ~]# cd /xtrabackup/difference
##語法:innobackupex --user=數據庫用戶名(root或授權用戶) --password=數據庫密碼 --increateal 差異備份數據存放的目錄 --incremental-basedir=/基於的完全備份數據目錄/
[root@localhost difference]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/full/2019-11-15_21-50-19
[root@localhost difference]# ls
2019-11-15_22-43-21
## 在數據庫進行修改並進行第二次差異備份(基於完全備份)
[root@localhost difference]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/full/2019-11-15_21-50-19
[root@localhost difference]# ls
2019-11-15_22-43-21 2019-11-15_22-45-14
## 在數據庫進行修改並進行第三次增量備份(基於完全備份)
[root@localhost difference]# innobackupex --user=root --password=Mysql..1113 --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/full/2019-11-15_21-50-19
[root@localhost difference]# ls
2019-11-15_22-43-21 2019-11-15_22-45-14 2019-11-15_22-50-37
②數據的恢復(在此我們操作回滾到第二次差異備份的數據)
步驟(6步):停止數據庫 —> 清理環境 —> 重演回滾 —> 恢復數據 —> 修改權限 —> 啓動數據庫
##語法:innobackupex --apply-log --redo-only /要恢復的版本目錄/ --incremental-dir=/要恢復到的差異版本/ #重演回滾
##語法:innobackupex --copy-back --redo-only /完全備份的目錄/ #恢復數據
[root@localhost difference]# systemctl stop mysqld
[root@localhost difference]# rm -rf /var/lib/mysql/*
[root@localhost difference]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 #先回滾到完全備份
[root@localhost difference]# innobackupex --apply-log --redo-only /xtrabackup/full/2019-11-15_21-50-19 --incremental-dir=/xtrabackup/increment/2019-11-15_22-45-14 #再回滾到要恢復的差異備份
[root@localhost difference]# innobackupex --copy-back --redo-only /xtrabackup/full/2019-11-15_21-50-19 #恢復數據
[root@localhost difference]# chown mysql.mysql -R /var/mysql/mysql/
[root@localhost difference]# systemctl start mysqld
## 進數據庫查看即可看到恢復的數據