MySQL备份与恢复之percona-xtrabackup实现增量备份及恢复(一)

2014-11-24 16:59:39 · 作者: · 浏览: 0

一 文章回顾

在上一篇文章,我们讲到percona-xtrabackup软件的使用,这一篇文章我们讲解percona-xtrabackup实现增量备份及恢复。

二 增量备份示意图

\

三 percona-xtrabackup实现增量备份及恢复原理

首先,使用percona-xtrabackup工具对数据库进行全备,然后再每次数据库的数据更新后对数据进行增量备份,每次增量备份均在上一次备份的基础上。恢复时依次把每次增量备份的数据恢复到全备中,最后使用合并的数据进行数据恢复。

四 percona-xtrabackup实现增量备份及恢复

第一步,全备

[root@serv01 databackup]# innobackupex --user=root --password=123456 /databackup/

第二步,查看数据

mysql> use larrydb;
Database changed
mysql> select * from class;
+------+-------+
| cid  | cname |
+------+-------+
|    1 | linux |
|    2 | dab   |
|    3 | Devel |
+------+-------+
3 rows in set (0.00 sec)

mysql> select * from stu;
+------+----------+------+
| sid  | sname    | cid  |
+------+----------+------+
|    1 | larry007 |    1 |
+------+----------+------+
1 row in set (0.00 sec)

第三步,更新数据

mysql> insert into stu values(2,'larry02',1);
Query OK, 1 row affected (0.00 sec)

mysql> select * from stu;
+------+----------+------+
| sid  | sname    | cid  |
+------+----------+------+
|    1 | larry007 |    1 |
|    2 | larry02  |    1 |
+------+----------+------+
2 rows in set (0.00 sec)

第四步,增量备份,进行了全备和第一次增量备份,所以有两个备份文件夹。我们每次增量备份都是针对上一次备份。

#--incremental:增量备份的文件夹
#--incremental-dir:针对哪个做增量备份
[root@serv01 databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-12-50/

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona Inc 2009-2012.  All Rights Reserved.
……
innobackupex: Backup created in directory '/databackup/2013-09-10_22-15-45'
innobackupex: MySQL binlog position: filename 'mysql-bin.000004', position 353
130910 22:16:04  innobackupex: completed OK!

[root@serv01 databackup]# ll
total 8
drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50
drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45

第五步,再次插入数据

mysql> insert into stu values(3,'larry03',1);
Query OK, 1 row affected (0.00 sec)

mysql> select * from stu;
+------+----------+------+
| sid  | sname    | cid  |
+------+----------+------+
|    1 | larry007 |    1 |
|    2 | larry02  |    1 |
|    3 | larry03  |    1 |
+------+----------+------+
3 rows in set (0.00 sec)

第六步,再次增量备份

[root@serv01 databackup]# ll
total 8
drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50
drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45
[root@serv01 databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-15-45/

第七步,再次插入数据

mysql> insert into stu values(4,'larry04',1);
Query OK, 1 row affected (0.00 sec)

mysql> select * from stu;
+------+----------+------+
| sid  | sname    | cid  |
+------+----------+------+
|    1 | larry007 |    1 |
|    2 | larry02  |    1 |
|    3 | larry03  |    1 |
|    4 | larry04  |    1 |
+------+----------+------+
4 rows in set (0.00 sec)

第八步,再次增量备份。一次全备,三次增量备份,所以有四个备份文件夹

[root@serv01 databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-19-21/


[root@serv01 databackup]# ll
total 16
drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50
drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45
drwxr-xr-x. 9 root root 4096 Sep 10 22:19 2013-09-10_22-19-21
drwxr-xr-x. 9 root root 4096 Sep 10 22:22 2013-09-10_22-21-42

第九步,模拟数据丢失

mysql> drop database larrydb;
Query OK, 2 rows affected (0.02 sec