1.完全备份

#192.168.88.8
#准备坏境Mysql8.0
mysql> create database db1;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)


[root@C8 ~]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.26-18/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm

[root@C8 ~]# yum install -y ./percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm

[root@C8 ~]# mkdir /backup

[root@C8 ~]# xtrabackup -uroot -p123456   --backup --target-dir=/backup/data    #完全备份数据

[root@C8 ~]# ll /backup/data/
total 72756
-rw-r-----. 1 root root      475 Oct 23 22:56 backup-my.cnf
-rw-r-----. 1 root root      156 Oct 23 22:56 C8-bin.000005
-rw-r-----. 1 root root       16 Oct 23 22:56 C8-bin.index
drwxr-x---. 2 root root       20 Oct 23 22:56 db1
-rw-r-----. 1 root root     6083 Oct 23 22:56 ib_buffer_pool
-rw-r-----. 1 root root 12582912 Oct 23 22:56 ibdata1
drwxr-x---. 2 root root      143 Oct 23 22:56 mysql
-rw-r-----. 1 root root 28311552 Oct 23 22:56 mysql.ibd
drwxr-x---. 2 root root     8192 Oct 23 22:56 performance_schema
drwxr-x---. 2 root root       28 Oct 23 22:56 sys
-rw-r-----. 1 root root 16777216 Oct 23 22:56 undo_001
-rw-r-----. 1 root root 16777216 Oct 23 22:56 undo_002
-rw-r-----. 1 root root       18 Oct 23 22:56 xtrabackup_binlog_info
-rw-r-----. 1 root root      102 Oct 23 22:56 xtrabackup_checkpoints
-rw-r-----. 1 root root      467 Oct 23 22:56 xtrabackup_info
-rw-r-----. 1 root root     2560 Oct 23 22:56 xtrabackup_logfile
-rw-r-----. 1 root root       39 Oct 23 22:56 xtrabackup_tablespaces

 scp -r /backup 192.168.88.18:/    #传输备份数据到恢复主机

#192.168.88.18
[root@C18 ~]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.26-18/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm

[root@C18 ~]# yum install -y ./percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm

#预准备:确保数据一致,提交完成的事务,回滚未完成的事务
[root@C18 ~]# xtrabackup --prepare --target-dir=/backup/data

#拷贝备份数据到mysql数据目录,需提前删除mysql数据目录
[root@C18 ~]# xtrabackup --copy-back --target-dir=/backup/data

#更改权限
[root@C18 ~]# chown -R mysql. /var/lib/mysql
 
[root@C18 ~]# systemctl start mysqld.service
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

2.增量备份+binlog恢复

#在以上基础实现,增量备份恢复
#192.168.88.8

#第一次修改数据
mysql> use db1
Database changed
mysql> create table std  (id int);
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| std           |
+---------------+
1 row in set (0.00 sec)

#第一次增量备份
[root@C8 ~]# xtrabackup -uroot -p123456 --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/data

#第二次修改数据
mysql> insert into std values (1),(2);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from std;
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

#第二次增量备份
[root@C8 ~]# xtrabackup -uroot -p123456 --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

#第三次修改数据
mysql> insert into std values (4),(5),(6),(7);

#查看增量备份时间后的binlog日记 --start-position= 点
mysqlbinlog /var/lib/mysql/C8-bin.000007

CigB19+9jw==
'/*!*/;
# at 125
#211023 23:41:48 server id 8  end_log_pos 156 CRC32 0x8179c6e8 	Previous-GTIDs   #我第二次增量备份的时间
# [empty]
# at 156
#211024  0:00:16 server id 8  end_log_pos 235 CRC32 0x24331521 	Anonymous_GTID	last_committed=0	sequence_number=1   rbr_only=yes	original_committed_timestamp=1635004816739336	immediate_commit_timestamp=1635004816739336	transaction_length=292



#传输备份数据
[root@C8 ~]# scp -r /backup 192.168.88.18:/

#导出为备份
mysqlbinlog --start-position=156 /var/lib/mysql/C8-bin.000007 > back.sql
scp back.sql 192.168.88.18:


#192.168.88.18
#预准备
[root@C18 ~]# xtrabackup --prepare --apply-log-only --target-dir=/backup/data
#合并第1次增量备份到完全备份
[root@C18 ~]# xtrabackup --prepare --apply-log-only --target-dir=/backup/data --incremental-dir=/backup/inc1
#合并第2次增量备份到完全备份
[root@C18 ~]# xtrabackup --prepare --apply-log-only --target-dir=/backup/data --incremental-dir=/backup/inc2

#还原数据到数据库目录
[root@C18 ~]# xtrabackup --copy-back --target-dir=/backup/data

[root@C18 ~]# chown -R mysql. /var/lib/mysql

[root@C18 ~]# systemctl start mysqld.service

#恢复第二次增量备份后的数据
mysql> source /root/back.sql
mysql> use db1
Database changed
mysql> select * from std;
+------+
| id   |
+------+
|    1 |
|    2 |
|    4 |
|    5 |
|    6 |
|    7 |
+------+
6 rows in set (0.00 sec)