什么是增量备份 增量备份就是指系统在进行一次完全备份后进行的备份,它会自动对比之前做过的完全备份,只记录备份与之前完全备份增加或者修改的文件。这样实际上它备份的只是每次增加或者修改的部分,由于这部分其实数据量相对于完全备份小很多,因此备份时间短且占用系统资源也较少。 但是增量备份的缺点也是很明显的:每次备份的内容都不是相同的,如果想还原备份,那么就需要把完全备份以及后面所有做的增量备份一一还原才可以,而且一旦其中某个环节的增量备份损坏那么其后的所有增量备份也都无法还原了。
实验前提准备: 1、提前准备数据
mysql> select *from tmp.tmp1;
+------+------+------+
| id | name | age |
+------+------+------+
| 1 | tom | 22 |
+------+------+------+
1 row in set (0.00 sec)
2、开启二进制日志,并且做过全量备份
[root@localhost sqlbak]
all.sql
3、对数据进行改变
向表中插入了几条数据
mysql> select *from tmp1;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | tom | 22 |
| 2 | jack | 20 |
| 3 | jarry | 20 |
| 4 | jie | 11 |
+------+-------+------+
4 rows in set (0.00 sec)
4、模拟数据丢失
删除数库模拟故障
mysql> drop database tmp;
Query OK, 1 rows affected (0.01 sec)
5、将最近的一份二进制日志拷贝走
[root@localhost data]
6、运用全量备份恢复数据
mysql> source /tmp/sqlbak/all.sql
7、查询数据恢复情况
mysql> select *from tmp1;
+------+------+------+
| id | name | age |
+------+------+------+
| 1 | tom | 22 |
+------+------+------+
1 row in set (0.00 sec)
可以看到,之后插入的数据并没有恢复 8、使用binlog增量备份恢复数据
查找事故发生地点,查找到所对应的at值
mysqlbinlog /tmp/sqlbak/binlog.000005
找到事故发生的点
[root@localhost bin]
Enter password:
–start-position 增量备份的结束at值 –stop-position 发生事故的at值 表示这一段事件的数据同步
8、再次查询数据
mysql> mysql> select *from tmp1;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | tom | 22 |
| 2 | jack | 20 |
| 3 | jarry | 20 |
| 4 | jie | 11 |
+------+-------+------+
4 rows in set (0.00 sec)
可以看到数据已经全部恢复
|