Xtrabackup介绍及使用

一、基本介绍

Percona-xtrabackup是 Percona公司开发的一个用于MySQL数据库物理热备的备份工具,支持MySQL、Percona server和MariaDB, 开源免费,是目前较为受欢迎的主流备份工具。xtrabackup只能备份innoDB和xtraDB两种数据引擎的表,而不能备份MyISAM数据表。

xtrabakackup有3个工具,分别是xtrabakup、innobakupex、xbstream

xtrabackup 支持InnoDB,XtraDB

innobakupex 支持Myisam,InnoDB、XtraaDB

xbstream:以专有格式压缩 xtrabackup 输出的信息

优点:

(1)备份速度快,物理备份可靠

(2)备份过程不会打断正在执行的事务(无需锁表)

(3)能够基于压缩等功能节约磁盘空间和流量

(4)自动备份校验

(5)还原速度快

(6)可以流传将备份传输到另外一台机器上

(7)在不增加服务器负载的情况备份数据

二、xtrabackup安装

1、mysql 8.0版本安装

wget https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.30-23/binary/redhat/7/x86_64/Percona-XtraBackup-8.0.30-23-r873b467185c-el7-x86_64-bundle.tar

tar -xvf Percona-XtraBackup-8.0.30-23-r873b467185c-el7-x86_64-bundle.tar

yum install percona-xtrabackup-80-8.0.30-23.1.el7.x86_64.rpm

2、mysql5.7版本安装

wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.15/binary/tarball/percona-xtrabackup-2.4.15-Linux-x86_64.libgcrypt145.tar.gz

tar -xvf percona-xtrabackup-2.4.15-Linux-x86_64.libgcrypt145.tar.gz

三、常用选项:  (innobackupex)

  --host     指定主机

  --user     指定用户名

  --password    指定密码

  --port     指定端口

  --databases     指定数据库

  --incremental    创建增量备份

  --incremental-basedir   指定包含完全备份的目录

  --incremental-dir      指定包含增量备份的目录    

  --apply-log        对备份进行预处理操作              

    一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。

   “准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

  --redo-only     该参数的意思是只应用xtrabackup日志中已提交的事务数据,不回滚还未提交的数据

  --copy-back     恢复备份目录

备份后文件说明:

xtrabackup_binlog_info 记录备份时的二进制日志文件位置

xtrabackup_checkpoints :记录LSN及备份类型

xtrabackup_logfile:备份日志文件,记录备份操作过程中数据库的变更

xtrabackup_info : 记录备份版本、类型等信息

backup-my.cnf : 包含备份时与INNODB 相关的选项

五、备份恢复案例

(目前innobackupex与xtrabackup 合并使用xtrabackup)

1、创建备份用户及授权:

create user 'xtrabk'@'localhost' identified by 'xtrabk';

grant reload,lock tables,replication client,super,process on *.*  to 'xtrabk'@'localhost';

xtrabackup --defaults-file=/usr/local/mysql/my.cnf  --user=xtrabk --password=xtrabk  --backup --target-dir=/home/mysql/backup/20200413

2、第一种场景:全库备份,全库恢复

使用innobackupex 备份全库:

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=xtrabk --password=xtrabk  /home/mysql/backup/

使用全库恢复:

innobackupex --defaults-file=/usr/local/mysql/my.cnf --apply-log /home/mysql/backup/2020-04-13_15-55-36/

innobackupex --defaults-file=/usr/local/mysql/my.cnf   --copy-back /home/mysql/backup/2020-04-13_15-55-36/

总结全库备份与恢复三步曲:

a. innobackupex全量备份,并指定备份目录路径;

b. 在恢复前,需要使用--apply-log参数先进行合并数据文件,确保数据的一致性要求;

c. 恢复时,直接使用--copy-back参数进行恢复,需要注意的是,在my.cnf中要指定数据文件目录的路径

3、第二种场景:增量备份,增量恢复    

增量备份:(基于全量备份,没有全量备份,请先做一份全备份)

全备份:innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=xtrabk --password=xtrabk  /home/mysql/backup/

指明基于上一次全备份做增量备份:

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=xtrabk --password=xtrabk  --incremental  /home/mysql/backup/incremental --incremental-basedir=/home/mysql/backup/2020-04-13_15-55-36/  

指明基于上一个增量备份路径做增量备份:增量备份之后再一次进行增量备份时,其--incremental-basedir应该指向上一次的增量备份所在的目录

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=xtrabk --password=xtrabk  --incremental  /home/mysql/backup/incremental --incremental-basedir=/home/mysql/backup/incremental/2020-04-13_18-05-28

4、使用全备份和增量恢复:

4.1、针对全量做准备

innobackupex --defaults-file=/usr/local/mysql/my.cnf --apply-log --redo-only  /home/mysql/backup/2020-04-13_15-55-36

4.2、针对增量做准备

innobackupex --defaults-file=/usr/local/mysql/my.cnf  --apply-log --redo-only /home/mysql/backup/2020-04-13_15-55-36/  --incremental-dir=/home/mysql/backup/2020-04-13_18-05-28/

innobackupex --defaults-file=/usr/local/mysql/my.cnf  --apply-log --redo-only /home/mysql/backup/2020-04-13_15-55-36/  --incremental-dir=/home/mysql/backup/2020-04-15_14-30-27/

如果存在多次增量备份的话,就多次执行

对合并后的全量备份做回滚

innobackupex --defaults-file=/usr/local/mysql/my.cnf  --apply-log /home/mysql/backup/2020-04-13_15-55-36

4.3、执行恢复操作

innobackupex --defaults-file=/usr/local/mysql/my.cnf  --copy-back /home/mysql/backup/2020-04-13_15-55-36/

特别说明:针对增量备份已经执行了增量恢复,再次执行相关恢复命令时,会报错

方案:此错误是提示你日志已损坏,即上次的恢复命令已经对日志进行了回滚。所以每次对增量备份执行恢复时,可事先备份数据,以防万一。

打包及压缩:(支持--stream 流复制)

innobackupex   --defaults-file=/usr/local/mysql/my.cnf --user=xtrabk  --password=xtrabk  --stream=tar  /home/mysql/backup  |  gzip  -> /home/mysql/backup/xtra_fullbackup.tar.gz

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值