利用xtrabackup8完全,增量备份及还原MySQL8

利用xtrabackup8完全,增量备份及还原MySQL8

1、环境准备
服务器 作用 数据库版本 xtrabackup版本
10.0.0.8 数据备份 mysql8.0.26 8.0.28
10.0.0.18 数据还原 mysql8.0.26 8.0.28
2、备份
[root@rocky8 ~]# ls
anaconda-ks.cfg  percona-xtrabackup-80-8.0.28-20.1.el8.x86_64.rpm
[root@rocky8 ~]# yum install -y percona-xtrabackup-80-8.0.28-20.1.el8.x86_64.rpm
[root@rocky8 ~]# mkdir /data/backup
[root@rocky8 ~]# systemctl start mysqld.service 
[root@rocky8 ~]# xtrabackup --backup --target-dir=/data/backup/base    #完全备份
[root@rocky8 ~]# rz hellodb_innodb.sql
[root@rocky8 ~]# mysql < hellodb_innodb.sql     #修改数据
[root@rocky8 ~]# mysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| hellodb            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
mysql> insert students(name,age)values('wang',20);    #修改数据

[root@rocky8 ~]# xtrabackup --backup --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/base                      #第一次增量备份
[root@rocky8 ~]# mysql
mysql> insert students(name,age)values('jack',22);   #第二次修改数据

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

[root@rocky8 ~]# du -sh /data/backup/*         #观察目录文件的大小
70M	/data/backup/base
4.9M	/data/backup/inc1
2.0M	/data/backup/inc2

[root@rocky8 ~]# scp -r /data/backup/* root@10.0.0.28:/data/backup/     #拷贝到远程主机


[root@rocky ~]# cd /data/backup     #远程主机查看拷贝过来生成的三个文件
[root@rocky backup]# ls
base  inc1  inc2

3、还原
# 还原机操作:
[root@rocky ~]# yum install -y percona-xtrabackup-80-8.0.28-20.1.el8.x86_64.rpm

##预准备完成备份,此选项--apply-log-only 阻止回滚未完成的事务
[root@rocky ~]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base    

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

######## 合并第2次增量备份到完全备份:最后一次还原不需要加选项--apply-log-only     #########
[root@rocky ~]# xtrabackup --prepare --target-dir=/data/backup/base --incremental-dir=/data/backup/inc2


[root@rocky ~]# systemctl stop mysqld

[root@rocky ~]# cd /data/backup/base/ 
[root@rocky base]# xtrabackup --copy-back --target-dir=/data/backup/base    #执行这一步需要进入到备份目录下,也就是base目录下,要不然会报找不到备份文件  #或者执行下面操作也可以

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@centos ~]#cp -r /backup/base/* /var/lib/mysql     #执行了上边命令就不用执行这一步
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[root@rocky base]# chown -R mysql. /var/lib/mysql

[root@rocky base]# systemctl start mysqld.service

#验证
[root@rocky ~]# mysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| hellodb            |

mysql> use hellodb
mysql> select * from students;
|    26 | wang          |  20 | F      |    NULL |      NULL |
|    27 | jack          |  22 | F      |    NULL |      NULL |

posted @ 2022-09-09 13:50  大雨转暴雨  阅读(302)  评论(0编辑  收藏  举报