通过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.查询还原的数据库,数据正常,和还原前无差异。
以上验证测试说明,可以在数据库全实例备份的基础上实现指定数据库的还原。