XtraBackup 是由 percona 开源的免费数据库热备份软件,它能对 InnoDB 和 XtraDB 存储引擎的数据库非阻塞地备份(对于 MyISAM 的备份同样需要加表锁)。mysqldump 备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump 备份就不太适合。

XtraBackup 优点

  • 备份速度快,物理备份可靠
  • 备份过程不会打断正在执行的事务(无需锁表)
  • 能够基于压缩等功能节约磁盘空间和流量
  • 自动备份校验
  • 还原速度快
  • 可以流传将备份传输到另外一台机器上
  • 在不增加服务器负载的情况备份数据

安装

导入 Percona 仓库

1
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

安装 XtraBackup

1
yum -y install xtrabackup

备份&恢复

命令帮助

```
innobackupex --help
```

帮助文档

https://www.percona.com/doc/percona-xtrabackup/2.2/innobackupex/innobackupex_script.html

基础命令

```
$ innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
```

可选项说明

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
--user:用户名
--password:密码
--defaults-file:指定MySQL配置文件
--host:主机IP
--port:端口号
--no-timestamp:不根据时间戳创建备份目录
--databases:备份的数据库/表(文件或空格隔开的库/表)
	$ innobackupex --databases="mydatabase.mytable mysql" /path/to/backup
--tables-file:包含需要备份数据表的文件
	$ mysql -uroot -p -S /tmp/mysql.sock --skip-column-names -e "SELECT CONCAT(table_schema,'.',table_name) FROM information_schema.tables WHERE table_schema REGEXP '^ttlsa_com_(posts_n[0-9]|user)$';" > tables.txt
	$ innobackupex --tables-file=/tmp/tables.txt /path/to/backup
--include:正则匹配到的数据表
	$ innobackupex --include='^mydatabase[.]mytable' /path/to/backup
--incremental:增量备份
--incremental-basedir:指定完整备份的目录

参考资料