MariaDB/MySQL备份和恢复(三):xtrabackup用法和原理详述

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

MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。

xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下:

  1. xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表;
  2. innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。myisam不支持增量备份。

安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 先创建一个文件来存放的xtraBackup
mkdir /xtraBackup

# 将下好的tar包进行解压到/xtraBackup文件下
tar -xf Percona-XtraBackup-2.4.20-rc8b4056-el7-x86_64-bundle.tar -C /xtraBackup/

# 安装
cd /xtraBackup
yum install -y *

# 查看
xtrabackup -version

备份加锁

对于不支持backup lock的版本,只能通过flush tables with read lock来获取全局读锁,但这样也同样会锁住innodb表,杀伤力太大。所以使用xtrabackup备份Oracle的MySQL,实质上只能实现innodb表的部分时间热备、部分时间温备。

对于支持backup lock的版本,xtrabackup通过lock tables for backup获取轻量级的backup locks来替代flush tables with read lock,因为它只锁定非innodb表,所以由此实现了innodb表的真正热备。

备份和恢复

常用参数:

1
2
3
4
5
6
--apply-log		    在进行数据库恢复操作之前执行,以确保数据的一致性和完整性
--redo-only     	不回滚未提交事务
--copy-back     	恢复备份目录
--incremental		指定增量备份
--incremental-basedir	指定基于哪个备份做增量备份,最后是增量备份保存的目录。

备份

1
innobackupex --user=root --password='123456' /xtrabackup/full

恢复

1
innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabackup/full

参考