此次实验的环境如下
MySQL 5.7.26
Redhat 6.10
操作系统账号:mysql
数据库备份账号:backup
上节我们说了如何进行部分备份,这部分我们说如何对其进行还原
关于还原部分备份,只有一个注意点,即不能使用传统的prepare和copy back命令,需要使用export和import的形式
上节我们介绍了如何使用innobackupex对数据库进行部分备份
结束后我们得到了一个非一致性的备份文件,即需要对未提交的事务进行回滚对提交的事务进行前滚
这个过程在xtrabackup中叫做准备阶段(prepare stage)
对部分备份的数据文件需要加上--export选项
使用--apply-log --export 进行恢复动作,相当于Oracle的recover动作
后面接部分备份的目录
如果内存有空闲,可使用--use-memory加快速度
innobackupex --apply-log --export --use-memory=1G /oradata/data/mysql/xtra/2019-11-06_10-39-58
在apply-log时候会有如下提示
这是由于为备份这些表,需要从数据字典中删除
这说明已经建立了用于import的文件了
结束后会出现如下提示
150806 01:01:57 InnoDB: Shutdown completed; log sequence number 1609228 150806 01:01:57 innobackupex: completed OK!
这时备份的文件会变成如下形式
每张表新加了cfg和exp文件,这些是我们需要的
首先我们需要在新的服务器上建立与需要导入的表相同结构的表
新服务器
use test
CREATE TABLE `innodb_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`age` tinyint(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=innodb DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
OTHERSERVER|mysql> ALTER TABLE test.innodb_table DISCARD TABLESPACE;
该命令会删除innodb_table的idb文件,frm文件还在
首先拷贝innodb_table的cfg,exp,ibd文件拷贝至数据库目录,即test目录下
OTHERSERVER|mysql> ALTER TABLE test.innodb_table IMPORT TABLESPACE;
本专题所有内容翻译子Percona XtraBackup的官方文档
可通过如下链接下载