1. 程式人生 > >常用的幾種mariadb備份還原手段——下篇

常用的幾種mariadb備份還原手段——下篇

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備份還原手段——下篇