天天看點

利用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 |
       

繼續閱讀