原本能夠一篇寫完,結果因爲不可抗因素(筆記本沒電了╮(╯▽╰)╭),致使分爲了上下兩篇。mysql
mariadb 10.2.15要使用最新的2.4.11版本(這裏版本必定要選擇好,不然會沒法備份文後會附加下載連接)
sql
1.安裝percona-xtrabackup數據庫
yum localinstall percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm -y
2.徹底備份(先導入了一個自建的hellodb做爲測試數據)app
# innobackupex (--user=root) /backup/默認就是以root用戶去備份,這裏省略了 innobackupex /backup/
3.刪除數據模擬損壞ide
rm -rf /data/mysql/*
4.整理日誌信息測試
innobackupex --apply-log /backup/2018-06-15_22-12-06/
5.中止數據庫spa
systemctl stop mariadb
6.恢復數據到目錄並修改權限3d
innobackupex --copy-back /backup/2018-06-15_22-12-06/ chown -R mysql:mysql /data/mysql/
7.啓動mariadb,驗證是否成功日誌
systemctl start mariadb
1.要實現增量備份也是要在徹底備份的基礎上實現code
innobackupex /backup/
原始數據庫狀態
2.爲了看起來明瞭簡單這裏作3次增量備份,而且設置對應的目錄存放,生產中也能夠作相似分類,這樣可使得備份目錄看起來簡單明瞭。
mkdir /backup/inc{1,2,3}
3.模擬修改數據庫而且每次修改後都作一次增量備份
#第一次修改數據庫 mysql >create database db1; #作增量備份 innobackupex --incremental /backup/inc1/ --incremental-basedir=/backup/2018-06-16_09-53-14 #第二次修改 mysql >create database db2; #作增量備份 innobackupex --incremental /backup/inc2/ --incremental-basedir=/backup/inc1/2018-06-16_09-55-34 #作第三次修改(這裏導入一個有數據的數據庫) mysql <hellodb_innodb.sql #作增量備份 innobackupex --incremental /backup/inc3/ --incremental-basedir=/backup/inc2/2018-06-16_09-57-57
下圖是最後的數據庫信息
4.模擬損壞數據
rm -rf /data/mysql/* ls /data/mysql/
5.中止數據庫並準備恢復數據
#整合增量備份 innobackupex --apply-log --redo-only /backup/2018-06-16_09-53-14/ innobackupex --apply-log --redo-only /backup/2018-06-16_09-53-14/ --incremental-dir=/backup/inc1/2018-06-16_09-55-34 innobackupex --apply-log --redo-only /backup/2018-06-16_09-53-14/ --incremental-dir=/backup/inc2/2018-06-16_09-57-57 innobackupex --apply-log --redo-only /backup/2018-06-16_09-53-14/ --incremental-dir=/backup/inc3/2018-06-16_09-59-48 #關閉數據庫,若是是新機器數據沒啓動就不用關閉,可是新環境記得要修改數據庫配置文件與原相同 systemctl stop mariadb #查看數據目錄是否爲空,並導入數據 ls /data/mysql/ innobackupex --copy-back /backup/2018-06-16_09-53-14/ #修改權限 chown -R mysql:mysql /data/ #啓動數據庫 systemctl start mariadb
6.登錄數據庫並檢查,數據徹底恢復
清除以前是備份
1.備份單表
innobackupex --include="hellodb.stdents" /backup/ #導出建表過程,而且刪除無用的字段 mysql -e 'show create table hellodb.students' > students.sql
2.模擬表損壞或者被刪除
mysql -e 'drop table hellodb.students'
3.恢復數據
# 整理數據 innobackupex --apply-log --export /backup/2018-06-16_10-21-54/ #恢復表結構 mysql hellodb < students.sql #刪除表空間 mysql -e 'alter table hellodb.students discard tablespace' #恢復文件(在備份目錄裏) cp students.cfg students.exp students.ibd /data/mysql/hellodb/ #修改權限 chown -R mysql:mysql /data/mysql/hellodb/* #導入表空間 mysql -e 'alter table hellodb.students import tablespace'
4.驗證是否恢復
xtrabackup下載地址
https://www.percona.com/downloads/XtraBackup/LATEST/
使用的hellodb.sql文件地址
https://pan.baidu.com/s/1uI3Br-HJ8t5-C-_bfZenPg