1.安装xtrbackup
# wget http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
# rpm -ivh percona-release-0.1-4.noarch.rpm
[root@mysql-server yum.repos.d]# vim percona-release.repo
修改如下内容:将原来的1改为0
[root@mysql-server yum.repos.d]# yum -y install percona-xtrabackup-24.x86_64
2.实验环境
1.周一:全量备份 周二:增量备份 周三增量备份 周四差异备份
2.mkdir /backup
mkdir /backup/full //存放全量备份
mkdir /backup/add //存放增量备份
mkdir /backup/chayi //存放差异备份
3.实验步骤
3.1 进入mysql创建实验库实验表
mysql> create database backup default charset utf8;
mysql> create table work(
mysql> id int,
mysql> age varchar(10),
mysql> time varchar(50));
#插入一条默认数据当做全备内容
mysql> insert into work values(1,'一','星期一');
mysql> quit
3.2制作全量备份
[root@mysql ~]# innobackupex --user=root --password=123 /backup/full/
[root@mysql ~]# cd /backup/
[root@mysql backup]# cd full
#查看全量备份
[root@mysql full]# ll
total 0
drwxr-x--- 7 root root 251 Nov 18 18:43 2023-11-18_18-43-20
3.3制作周二增量备份
#进入mysql先插入周二的增量数据
mysql> insert into backup.work values(2,'二','星期二');
mysql> select * from backup.work
-> ;
+------+------+-----------+
| id | age | time |
+------+------+-----------+
| 1 | 一 | 星期一 |
| 2 | 二 | 星期二 |
+------+------+-----------+
2 rows in set (0.00 sec)
mysql> quit
#制作周二增量备份
[root@mysql backup]# innobackupex --user=root --password=123 --incremental /backup/add --incremental-basedir=/backup/full/2023-11-18_18-43-20/
#查看增量备份好的
[root@mysql backup]# ll /backup/add
total 0
drwxr-x--- 7 root root 277 Nov 18 18:57 2023-11-18_18-57-21
3.4制作周三增量备份
#进入mysql插入周三数据
mysql> insert into backup.work values(3,'三','星期三');
Query OK, 1 row affected (0.00 sec)
mysql> select * from backup.work;
+------+------+-----------+
| id | age | time |
+------+------+-----------+
| 1 | 一 | 星期一 |
| 2 | 二 | 星期二 |
| 3 | 三 | 星期三 |
+------+------+-----------+
3 rows in set (0.00 sec)
mysql> quit
#制作周三基于周二数据的增量备份
[root@mysql backup]# innobackupex --user=root --password=123 --incremental /backup/add --incremental-basedir=/backup/add/2023-11-18_18-57-21/
#查看周三增量备份知否完成
[root@mysql backup]# ll /backup/add/
total 0
drwxr-x--- 7 root root 277 Nov 18 18:57 2023-11-18_18-57-21
drwxr-x--- 7 root root 277 Nov 18 19:01 2023-11-18_19-01-16
3.5制作周四差异备份(基于上一次全量备份)
#插入周四的数据做差异备份
mysql> insert into backup.work values(4,'四','星期四');
Query OK, 1 row affected (0.00 sec)
mysql> select * from backup.work;
+------+------+-----------+
| id | age | time |
+------+------+-----------+
| 1 | 一 | 星期一 |
| 2 | 二 | 星期二 |
| 3 | 三 | 星期三 |
| 4 | 四 | 星期四 |
+------+------+-----------+
4 rows in set (0.00 sec)
mysql> quit
#基于上一次全量备份做差异备份
[root@mysql backup]# innobackupex --user=root --password=123 --incremental /backup/chayi --incremental-basedir=/backup/full/2023-11-18_18-43-20/
#查看差异数据
[root@mysql backup]# ll /backup/chayi/
total 0
drwxr-x--- 7 root root 277 Nov 18 19:08 2023-11-18_19-08-46
3.6模拟数据丢失恢复(重演回滚)
3.6.1 关闭数据库
[root@mysql ~]# systemctl stop mysqld
3.6.2 删除mysql数据目录的所有东西
#cd到数据存放目录然后删除
[root@mysql ~]# cd /var/lib/mysql
[root@mysql mysql]# ll
total 188516
-rw-r----- 1 mysql mysql 56 Oct 21 16:02 auto.cnf
drwxr-x--- 2 mysql mysql 52 Nov 18 18:35 backup
-rw------- 1 mysql mysql 1680 Oct 21 15:29 ca-key.pem
-rw-r--r-- 1 mysql mysql 1112 Oct 21 15:29 ca.pem
-rw-r--r-- 1 mysql mysql 1112 Oct 21 15:29 client-cert.pem
-rw------- 1 mysql mysql 1676 Oct 21 15:29 client-key.pem
-rw-r----- 1 mysql mysql 6828 Nov 17 18:27 ib_buffer_pool
-rw-r----- 1 mysql mysql 79691776 Nov 18 19:15 ibdata1
-rw-r----- 1 mysql mysql 50331648 Nov 18 19:15 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Nov 18 19:15 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Nov 18 19:15 ibtmp1
drwxr-x--- 2 mysql mysql 4096 Oct 21 15:29 mysql
srwxrwxrwx 1 mysql mysql 0 Nov 18 09:02 mysql.sock
-rw------- 1 mysql mysql 5 Nov 18 09:02 mysql.sock.lock
drwxr-x--- 2 mysql mysql 8192 Oct 21 15:29 performance_schema
-rw------- 1 mysql mysql 1676 Oct 21 15:29 private_key.pem
-rw-r--r-- 1 mysql mysql 452 Oct 21 15:29 public_key.pem
-rw-r--r-- 1 mysql mysql 1112 Oct 21 15:29 server-cert.pem
-rw------- 1 mysql mysql 1676 Oct 21 15:29 server-key.pem
drwxr-x--- 2 mysql mysql 8192 Oct 21 15:29 sys
-rw-r----- 1 mysql mysql 499 Oct 21 15:29 xtrabackup_info
-rw-r----- 1 mysql mysql 1 Oct 21 15:29 xtrabackup_master_key_id
drwxr-x--- 2 mysql mysql 12288 Nov 17 17:13 zabbix
[root@mysql mysql]# rm -rf *
3.6.3 第一步先回滚全量备份
[root@mysql ~]# innobackupex --apply-log --redo-only /backup/full/2023-11-18_18-43-20/
3.6.4 第二步直接回滚差异备份到全量备份(因为差异备份包括增量备份所以不需要回滚增量备份)
[root@mysql ~]# innobackupex --apply-log --redo-only /backup/full/2023-11-18_18-43-20/ --incremental-dir=/backup/chayi/2023-11-18_19-08-46/
3.6.5 恢复数据
[root@mysql ~]# innobackupex --copy-back /backup/full/2023-11-18_18-43-20/
#查看数据是否恢复
[root@mysql ~]# cd /var/lib/mysql
[root@mysql mysql]# ll
total 77888
drwxr-x--- 2 root root 52 Nov 18 19:24 backup
-rw-r----- 1 root root 6828 Nov 18 19:24 ib_buffer_pool
-rw-r----- 1 root root 79691776 Nov 18 19:24 ibdata1
drwxr-x--- 2 root root 4096 Nov 18 19:24 mysql
drwxr-x--- 2 root root 8192 Nov 18 19:24 performance_schema
drwxr-x--- 2 root root 8192 Nov 18 19:24 sys
-rw-r----- 1 root root 26 Nov 18 19:24 xtrabackup_binlog_pos_innodb
-rw-r----- 1 root root 555 Nov 18 19:24 xtrabackup_info
-rw-r----- 1 root root 1 Nov 18 19:24 xtrabackup_master_key_id
drwxr-x--- 2 root root 12288 Nov 18 19:24 zabbix
#修改属主和属组为mysql
[root@mysql mysql]# chown mysql.mysql /var/lib/mysql -R
3.6.6 重启mysql查看数据
systemctl start mysqld
4.实验完成.