用Xtrabackup实现MySQL全库备份与恢复

Posted 秋刀鱼的滋味w

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Xtrabackup实现MySQL全库备份与恢复相关的知识,希望对你有一定的参考价值。

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:备份数据存放目录

  也可以加上 --host参数;

  

  可看到已经备份完成;

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、验证是否成功

  

  

  至此还原完成;

  我这个实验是还原的整个数据目录,也可以还原部分数据,做法就是在恢复之前,把备份目录中不想恢复的数据库移走,然后再恢复就可以了;

    

 

以上是关于用Xtrabackup实现MySQL全库备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库物理备份

MySQL数据库物理备份

MySQL生产库之Xtrabackup物理备份

MySQL 採用Xtrabackup对数据库进行全库备份

Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

xtrabackup全库还原+binlog日志还原