天天看点

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

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

1、环境准备
服务器 作用 数据库版本 xtrabackup版本
10.0.0.8 数据备份 mysql8.0.26 8.0.28
10.0.0.18 数据还原
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/* [email protected]:/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 |
       

继续阅读