使用xtrabackup備份mysql數據庫(全備,增量, 差異備份)

使用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
## 進數據庫查看即可看到恢復的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章