mysql如何通过单个ibd文件进行数据恢复
时间:2021-09-06
本文章向大家介绍mysql如何通过单个ibd文件进行数据恢复,主要包括mysql如何通过单个ibd文件进行数据恢复使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
####################################
需求场景:
业务误操作时刻在路上,那么数据恢复是件常见的事,我们通常通过innobackupex或xtrabackup进行数据库实例的全量备份,遇到需要进行数据恢复时,我们就将该备份拷贝到测试机上进行恢复,这对于一般的中小型数据库实例而言,拷贝数据花不了多少时间,还是很方便的,
但是当数据库实例的数据量很大时,这个时候拷贝几百G,甚至几个T的数据,则是非常耗时。那么能不能只拷贝误操作的那几张表的数据呢,答案是可以,通过拷贝误操作的那几张表的ibd文件即可完成,下面就通过ibd文件进行数据恢复。[前提是数据库实例开启了每张表都是一个独立表空间,即查看这个全局变量:innodb_file_per_table=1]
假设线上集群的实例为10.10.10.11:3306,备份机所在机器为10.10.10.22,业务误操作了线上apple库的ipad表,测试机的mysql实例为10.10.10.33:3306
1,登录10.10.10.11:3306,查看apple.ipad表的表结构,同时预估一下数据量:
mysql> show create table apple.ipad \G;
mysql> select count(*) from apple.ipad ;
2,在测试机实例10.10.10.33:3306上创建相同的库和表,即创建apple和ipad表:
mysql> create database apple; mysql> use apple; mysql> create table ipad (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(255) NOT NULL,address varchar(255) NOT NULL,blob_name blob,PRIMARY KEY (id),KEY idx_name (name)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4; # 执行后会在apple数据库目录下面新增两个文件:ipad.ibd和ipad.frm文件
mysql> alter table ipad discard tablespace; # 执行后,该实例的apple库的ipad表只剩下数据定义文件ipad.frm,表空间文件ipad.ibd已被删除
3,拷贝备份机10.10.10.22上备份对应的表空间文件apple/ipad.ibd到测试机10.10.10.33:3306的apple数据库目录下:
# 任意地方均可执行,网络通即可: shell> scp work@10.10.10.22:/home/work/2021/data/apple/ipad.ibd work@10.10.10.33:/home/work/mysql_3306/data/apple/ # 在测试机10.10.10.33上执行: shell> chown -R work:work /home/work/mysql_3306
# 如果是拷贝正在运行的实例上的ibd文件则需要在该实例上执行: mysql> flush tables;lock tables apple.ipad read;
4,登录测试机10.10.10.33::3306导入表空间数据:
mysql> alter table apple.ipad import tablespace;
5,经过上面4个步骤已经将误操作的表的备份加载到了测试机上的数据库实例中,如果还需要将其恢复到该备份时刻后面的任意一刻,则需要通过配置复制过滤到线上集群的实例,且线上集群的某个实例在该备份时刻后到现在的的binlog还存在,这个步骤就省略了
#########################
igoodful@qq.com
原文地址:https://www.cnblogs.com/igoodful/p/15234608.html
- 以太坊·将数据写入到区块链中
- 如何使用Faster R-CNN来计算对象个数
- hyperledger v1.0.5 区块链运维入门
- 在TensorBoard中使用t-SNE实现TensorFlow自动编码器的可视化嵌入
- 以太坊智能合约开发入门
- CatBoost:一个自动处理分类(CAT)数据的机器学习库
- Python机器学习的练习八:异常检测和推荐系统
- Blade 模板中有关 section 的那些事
- 分布式计划任务设计与实现
- 怎样在Python的深度学习库Keras中使用度量
- 网络设备配置管理与版本控制
- 使用Python对Instagram进行数据分析
- 解决多标签分类问题(包括案例研究)
- Docker Compose + GPU + TensorFlow = Heart
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Android TextView Marquee的应用实例详解
- Android毛玻璃背景效果简单实现代码
- ClickHouse和他的朋友们(3)MySQL Protocol和Write调用栈
- ubuntu安装多个版本的CUDA并随时切换
- 如何在Ubuntu 18.04(实体机)上配置OpenWRT的开发环境
- Android 组合控件实现布局的复用的方法
- Android编程实现播放音频的方法示例
- 使用VSCode的Remote-SSH连接Linux进行远程开发
- Android ListView之EfficientAdapte的使用详解
- JavaScript:ECMAScript 2020中的新增功能
- Android编程实现播放视频的方法示例
- Android开发之RadioGroup的简单使用与监听示例
- Android 根据手势顶部View自动展示与隐藏效果
- Vue 3 如何安装
- Android实现状态栏(statusbar)渐变效果的示例