xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下:
(1)xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表;
(2)innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。还有就是myisam不支持增量备份。
1、确保xtrabackup已经安装;
我另一篇文章介绍了安装过程:https://www.cnblogs.com/weiyiming007/p/10281820.html
2、创建四个测试库:testaa testbb testcc testdd
3、在四个数据库中创建相同的表,插入同样的数据(四个数据库都执行);
mysql> create table test(id int,id1 int,id2 int,id3 int);
mysql> insert into test(id,id1,id2,id3) values(1,2,3,4);
4、执行备份;
mkdir -p /data/backup/full
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /data/backup/full
/data/backup/full:备份数据存放目录
可看到已经备份完成;
5、关闭数据库并删除数据库文件
/var/lib/mysql/:是我的数据库存放目录
6、恢复
[root@saltstack ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup/full/2019-01-17_14-00-54
--copy-back :把完整备份文件拷贝到目标目录,由--defaults-file指定的my.cnf里设置决定;
7、添加权限
8、启动mysql
[root@saltstack ~]# systemctl start mysqld
9、验证是否成功
至此还原完成;
我这个实验是还原的整个数据目录,也可以还原部分数据,做法就是在恢复之前,把备份目录中不想恢复的数据库移走,然后再恢复就可以了;