XtraBackup是Percona公司的开源项目,用以实现类似Innodb官方的热备份工具InnoDB Hot Backup的功能,它支持在线热备份(备份时不影响数据读写)。
XtraBackup有很多功能和优点:例如支持全备、增量备份、部分备份;支持压缩备份;备份不影响数据读写、事务等,但是也有缺陷不足:例如不支持脱机备份、不支持直接备份到磁带设备、不支持Cloud Back,MyISAM的备份也会阻塞。不过这些小瑕疵不影响XtraBackup成为一款流行的MySQL备份工具。另外,请注意XtraBackup只支持Linux平台,不支持Windows平台。
1、安装xtrabackup
yum install -y xtrabackup
2、创建备份所需要的用户名和密码以及权限
create user 'dbback'@'192.168.99.%' identified by '123';
grant reload.lock tables.replication client.process.super on *.* to 'dbback'@'192.168.99.%';
3、创建备份的文件夹
mkdir -p /tmp/backup/
4、全备操作,不采用系统默认创建的备份集文件名称,使用--no-timestamp参数,自己给备份文件命名。命令如下:
xtrabackup --defaults-file=/etc/my.conf --no-timestamp --user dbback --host 192.168.99.22 --password 123 /tmp/backup
备份完成后显示complete OK
※ xtrabackup命令后需要紧跟--defaults-file参数,否则报错。
5、备份的主要文件
xtrabackup_checkpoints:记录备份完成时检查点lsn号和该备份文件的类型,此次是一次全量
备份,标识为full-backup
xtrabackup_binlog_info:记录二进制日志和偏移量,如果开启gtid功能,还可以记录gtid的
位置信息,为在线搭建从库做好准备
xtrabackup_info:记录备份的详细信息,如备份命令、备份的开始时间和结束时间、mysql版本
和XtraBackup的版本等
6、全备的恢复(恢复操作需要加--apply-log参数)
xtrabackup --defaults-file=/etc/my.conf --no-timestamp --user dbback
--host 192.168.99.22 --password 123 --apply-log /tmp/backup
※ 出现“complete Ok”证明备份集校验成功,离最后的数据还原只差一步
7、先停掉MySQL实例,重命名原来的数据库目录,改名为/data/mysql_bak,把新的备份目录集移动到/data下,改名为mysql,并赋予mysql的权限,再重启MySQL实例。
mysqladmin -uroot -p123 shutdown
mv /data/mysql /data/mysql_bak
mv /tmp/backup /data/
cd /data
mv backup/ mysql
chown mysql:mysql -R mysql
mysql_safe --defaults-file=/etc/my.conf &