介绍
Persona Xtrabackup 是 MySQL 中的一个免费的热备份工具。它针对 InnoDB 和 XtraDB 提供了无锁的热备份。它有如下几个特点:
- 可靠的快速备份。
- 备份时不中断事务处理。
- 节省硬盘空间和网络带宽。
- 自动的备份校验。
- 快速的数据恢复。
- 支持 InnoDB no-blocking 热备份。
- 支持增量备份。
- 支持压缩流式备份到另一台服务器
- 在不同的服务器中在线迁移表。
前提
需要账号和密码连接服务器
xtrabackup --user=user --password=password --backup --target-dir=/data/backup
除此之外,--port可以指定端口,--socket指定使用 localhost 本地连接的 socket 文件的位置,--host指定 tcp/ip 链接的时候的地址。
需要一些账号权限
RELOAD和LOCK TABLES(如果使用了--no-lock参数,则不需要这个权限),这两个权限是为了执行FLUSH TABLES WITH READ LOCK和FLUSH ENGINE LOGS指令。BACKUP_ADMIN权限,查询performance_schema .log_status需要这个权限,LOCK INSTANCE FOR BACKUP,LOCK BINLOG FOR BACKUP,LOCK TABLES FOR BACKUP也需要。REPLICATION CLIENT,为了查询二进制日志的位置。CREATE TABLESPACE,为了导入表。PROCESS,运行SHOW ENGINE INNODB STATUS。SUPER,INSERT和SELECT权限。
创建备份账号的一个例子:
CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cr%T';
GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO
˓→'bkpuser'@'localhost';
GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'localhost';
FLUSH PRIVILEGES;备份的一些例子
创建一个备份
使用--backup参数
sudo xtrabackup --user=xtrabackup --password=password --port=3306 --host=localhost --backup --target-dir=/var/backups/mysqlbackup

准备一个备份
使用--prepare参数
sudo xtrabackup --prepare --target-dir=/var/backups/mysqlbackup
在执行数据恢复之前,必须先执行 prepare 操作。在执行 prepare 操作之前这些个备份的数据都是不一致的,因为这些文件是在程序运行的不同时间复制的。

实现一个增量备份
使用--incremental-dir指定基础的版本
sudo xtrabackup --user=xtrabackup --password=password --port=3306 --host=localhost --backup --incremental-basedir=/var/backups/mysqlbackup

恢复一个备份
使用--copy-back,--move-back参数,其中--move-back参数会删除备份,请谨慎使用。
xtrabackup --copy-back --target-dir=/data/backups/