常用的幾種mariadb備份還原手段——下篇
阿新 • • 發佈:2018-06-16
oba image 無法 rm -rf 刪除數據 完全恢復 配置文件 日誌 tab 本來可以一篇寫完,結果由於不可抗因素(筆記本沒電了╮(╯▽╰)╭),導致分為了上下兩篇。
基於xtrabackup實現備份恢復
mariadb 10.2.15要使用最新的2.4.11版本(這裏版本一定要選擇好,否則會無法備份文後會附加下載鏈接)
完全備份和恢復
1.安裝percona-xtrabackup
yum localinstall percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm -y
2.完全備份(先導入了一個自建的hellodb作為測試數據)
# innobackupex (--user=root) /backup/默認就是以root用戶去備份,這裏省略了 innobackupex /backup/
3.刪除數據模擬損壞
rm -rf /data/mysql/*
4.整理日誌信息
innobackupex --apply-log /backup/2018-06-15_22-12-06/
5.停止數據庫
systemctl stop mariadb
6.恢復數據到目錄並修改權限
innobackupex --copy-back /backup/2018-06-15_22-12-06/
chown -R mysql:mysql /data/mysql/
7.啟動mariadb,驗證是否成功
systemctl start mariadb
實現增量備份
1.要實現增量備份也是要在完全備份的基礎上實現
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
常用的幾種mariadb備份還原手段——下篇