通过Xtrabackup实现MySQL实例的全库备份与按需单库恢复

Posted 东山絮柳仔

tags:

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

 在实际的生产环境中,为了管理方便,我们一般是通过 Xtrabackup实现实例的全库备份,即将实例上的所有数据库备份。

但是,考虑到快速恢复 我们常常面临的需求是快速还原单个数据库。针对初学者来说,网上相关的资料不是很多,以下的测试工作是我们为实现实例的全库备份与按需单库恢复的相关验证。

 

第一部分数据库测试环境

 

Step 1创建 四个用户数据库

Step2 四个数据库创建相同的表,插入同样的数据。

执行的代码一样

CREATE TABLE `test` (                                 

          `id` int(11) NOT NULL AUTO_INCREMENT,               

          `str` varchar(255) NOT NULL,                                    

          `state` tinyint(1) unsigned zerofill DEFAULT NULL,  

          `state2` tinyint(2) unsigned zerofill DEFAULT NULL, 

          `state3` tinyint(3) unsigned zerofill DEFAULT NULL, 

          `state4` tinyint(4) unsigned zerofill DEFAULT NULL, 

          PRIMARY KEY (`id`)                                  

        ) 

 

insert into test (str,state,state2,state3,state4) values(\'csdn\',4,4,4,4);

 

step 3 显示验证前所有数据库

表数据查询显示

 

第二部分 主要测试步骤和执行命令

 

Step 1 执行备份命令:

 

(innobackupex  --defaults-file=/data/mysql/support-files/my_default.cnf  --user=用户 --password=密码 /data/backup/full)

备份目录为: /data/backup/full

Step 2 关闭数据库并删除数据库文件

Step 3 将备份目录中不需要的数据备份文件迁移出去

 (本验证案例为 数据库testaa,testbb,testcc )

 

Step 4 执行恢复命令

(命令如下:innobackupex --defaults-file=/data/mysql/support-files/my_default.cnf  --user=用户 --password=密码 --copy-back  /data/backup/full/2018-04-03_09-42-58

查询结果OK

Step 5 赋予权限

(如果不赋予权限,报错信息:Starting MySQL... ERROR! The server quit without updating PID file (/XXXX/XXXX/XXX/XXXX.pid). 还要留意,需要先还原,让后再赋予权限)

Step 6 重启mysql 服务

 

第三部分数据验证

 

1.还原后,查询显示所有的数据,可以看到 数据库testaa,testbb,testcc没有还原。

2.查询还原的数据库,数据正常,和还原前无差异。

 

以上验证测试说明,可以在数据库全实例备份的基础上实现指定数据库的还原。

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

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

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

MySQL生产库之Xtrabackup物理备份

xtrabackup全库还原+binlog日志还原

如何使用MySQL中的全库备份数据恢复单表数据

MySQL数据库物理备份