我们还是假设从周一开始 删掉第二条数据
mysql> delete from test_db.t1 where id=2;
Query OK, 1 row affected (0.00 sec)
mysql> select * from test_db.t1;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
1.全被备份
因为之前全部备份用过了增量备份恢复 虽然我们已经使用了参数 --redo-only 但以防万一还是再全部备份一次。
innobackupex --user=root --password='123456' /xtrabackup/full/
2.模拟修改数据
mysql> insert into t1 values(2);
Query OK, 1 row affected (0.01 sec)
mysql> select * from test_db.t1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
3.一次差异备份(第一次差异备份跟增量备份没区别)
innobackupex --user=root --password='123456' --incremental /xtrabackup/full/ --incremental-basedir=/xtrabackup/full/2023-08-09_02-35-48/
4.再次修改数据,再做一次差异备份
修改数据
mysql> insert into t1 values(3);
Query OK, 1 row affected (0.01 sec)
mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
做一次差异备份(其实差异备份是以第一次全局备份为基础,全局备份时候到此次差异备份时间点中增删改的数据)
所以我们这次备份还是以第一次为基础备份就行
innobackupex --user=root --password='123456' -S /my_mysql/3306/mysql.sock --incremental /xtrabackup/full/ --incremental-basedir=/xtrabackup/full/2023-08-09_02-35-48/
[root@localhost full]# ll
drwxr-x--- 7 root root 336 8月 9 02:10 2023-08-09_01-12-31
drwxr-x--- 7 root root 256 8月 9 01:27 2023-08-09_01-22-13
drwxr-x--- 7 root root 298 8月 9 02:51 2023-08-09_02-35-48 //差异备份第一次完全备份
drwxr-x--- 7 root root 256 8月 9 02:37 2023-08-09_02-37-42 //第一次差异备份
drwxr-x--- 7 root root 256 8月 9 02:51 2023-08-09_02-43-29 //第二次差异备份
5.模拟数据数据损坏
cd /usr/local/mysql/data
rm -rf ./*
6.恢复(差异恢复用准备用的是最后一次的差异备份文件)
innobackupex --apply-log --redo-only /xtrabackup/full/2023-08-09_02-35-48/
innobackupex --apply-log --redo-only /xtrabackup/full/2023-08-09_02-35-48/ --incremental-dir=/xtrabackup/full/2023-08-09_02-43-29/
注意:经上面两条语句 全局备份数据中已经添加了差异备份的数据,
所以我们直接恢复一下已添加差异备份数据的全局备份文件(2023-08-09_02-35-48)
innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabackup/full/2023-08-09_02-35-48/
7.修改属主属组
chown -R mysql.mysql /usr/local/mysql/data
查看数据
mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
其实增量跟差异备份在这实际操作区别很小
增量备份:备份的数据是对上次备份(上次备份可以是全部备份、增量备份)到此时的数据备份
差异备份:备份的数据是对上次完全备份到此时的数据备份
所以差异备份恢复数据是利用上次完全备份文件和最近一次差异备份的数据就可以恢复最近的数据,而增量备份需要一次次的累加恢复数据。