XtraBackup工具详解 Part 11 使用innobackupex对部分备份进行恢复
时间:2022-07-23
本文章向大家介绍XtraBackup工具详解 Part 11 使用innobackupex对部分备份进行恢复,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
实验环境
此次实验的环境如下
- MySQL 5.7.26
- Redhat 6.10
- 操作系统账号:mysql
- 数据库备份账号:backup
上节我们说了如何进行部分备份,这部分我们说如何对其进行还原
关于还原部分备份,只有一个注意点,即不能使用传统的prepare和copy back命令,需要使用export和import的形式
1. prepare阶段
上节我们介绍了如何使用innobackupex对数据库进行部分备份
结束后我们得到了一个非一致性的备份文件,即需要对未提交的事务进行回滚对提交的事务进行前滚
这个过程在xtrabackup中叫做准备阶段(prepare stage)
对部分备份的数据文件需要加上--export选项
1.1 prepare 备份
使用--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文件,这些是我们需要的
2. 导入表
2.1 创建相同结构的表
首先我们需要在新的服务器上建立与需要导入的表相同结构的表
新服务器
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;
2.2 破坏表空间
OTHERSERVER|mysql> ALTER TABLE test.innodb_table DISCARD TABLESPACE;
该命令会删除innodb_table的idb文件,frm文件还在
2.3 导入表
首先拷贝innodb_table的cfg,exp,ibd文件拷贝至数据库目录,即test目录下
OTHERSERVER|mysql> ALTER TABLE test.innodb_table IMPORT TABLESPACE;
3. 参考资料
本专题所有内容翻译子Percona XtraBackup的官方文档
可通过如下链接下载
http://www.zhaibibei.cn/mysql/xtrabackup/tutorial1
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于Jsp和Servlet的简单项目
- 基于Servlet实现的简单登陆练习
- JavaScript初识
- 聊聊dubbo-go的DubboInvoker
- 如何在云开发Cloudbase中使用MySQL数据库
- Kubernetes笔记之基本概念
- 腾讯云语音识别之一句话识别
- 创建线程都有哪些方式?— Callable篇
- UiAutomator源码学习(3)-- UiObject
- RTSP协议视频流媒体播放器EasyPlayer-RTSP-OCX接口文档API接口函数定义
- Python逐行写入
- C++ this 指针
- C++ push方法与push_back方法
- 别人变强靠天赋,而我,靠思维导图
- Spring Boot 五种热部署方式