測試環境:
mysql
OS: rhel5linux
mysql : mysql-5.6.25-linux-glibc2.5-i686.tar.gzsql
xtrabackup: percona-xtrabackup-2.2.10-1.el5.i386.rpm數據庫
這裏mysql的通用二進制包安裝步驟省略~app
mysql的數據目錄創建在一個邏輯捲上 /mydata/data
ide
mysql的數據備份目錄 /backup測試
1.安裝xtrabackup
spa
# rpm -ivh percona-xtrabackup-2.2.10-1.el5.i386.rpmrem
2.創建原始數據it
# mysql
mysql> create database student;
mysql> use student;
mysql> create table user(id tinyint primary key auto_increment not null,name char(32) not null default '');
mysql> desc user;
mysql> insert into user(name) values ('luochen'),('redhat');
mysql> select * from user; ###驗證數據是否插入成功
3.徹底備份
# innobackupex --user=root /backup ##這裏沒有設定root密碼
# cd /backup/ ###查看是否有一個已當前時間生成的目錄
PS: 若是不進行增量備份想還原徹底備份使用下面命令
# innobackupex --apply-log /backup/2015-09-24_10-27-04
# innobackupex --copy-back /backup/2015-09-24_10-27-04
4.修改數據庫表中的數據(模以真實的狀況)
# mysql
mysql> insert into user(name) values ('zuowei'),('zhangsan');
mysql> select * from user;
5.進行第一次增量備份(在徹底備份的基礎上)
# innobackupex --incremental /backup --increment-basedir=/backup/2015-09-24_10-27-04
PS: 2015-09-24_10-27-04 爲徹底備份生成的目錄
6.再次修改表中數據
# mysql
mysql> use student;
mysql> delete from user where id in(2,3);
mysql> insert into user(name) values ('endtime');
mysql> select * from user;
7.進行第二次增量備份
# innobackupex --incremental /backup --incremental-basedir=/backup/2015-09-24_10-28-43
PS: 2015-09-24_10-28-43 爲第一次增量備份生成的目錄
8.模以數據被破壞
# service mysqld stop
# rm -rf /mydata/data/*
9.準備從徹底備份和增量備份中恢復數據
# innobackupex --apply-log --redo-only /backup/2015-09-24_10-27-04
# innobackupex --apply-log --redo-only /backup/2015-09-24_10-27-04 --incremental-dir=/backup/2015-09-24_10-28-43
# innobackupex --apply-log --redo-only /backup/2015-09-24_10-27-04 --incremental-dir=/backup/2015-09-24_10-30-37
10.恢復全部數據
# innobackupex --copy-back /backup/2015-09-24_10-27-04
11.改變數據目錄文件的所屬主組
# cd /mydata/data
# chown -R mysql.mysql ./*
12.驗證數據是否恢復成功
# mysql
mysql> use student;
mysql> select * from user;
PS:
2015-09-24_10-27-04 ###徹底備份
2015-09-24_10-28-43 ###第一次增量備份
2015-09-24_10-30-37 ###第二次增量備份