Mysql数据库drop表不用跑路,表空间传输助你恢复数据
今天给大家介绍一种,在Mysql数据库中,利用InnoDb的表空间传输功能,帮助你恢复drop的业务表。
Mysql表空间传输限制
要使用Mysql数据库表空间传输功能,有2个限制
1.Mysql数据库版本必须在5.6以上
2.Mysql数据库必须开启innodb_file_per_table
测试目标
测试库tmp中的test1表被drop了,需要用testdb库中的test1表记录进行恢复
目标库测试表drop
登录数据库,drop掉tmp.test1业务表
[root@localhost] 16:14:12 [tmp]>drop table test1;
Query OK, 0 rows affected (0.41 sec)
在目标库创建test1空表
从源库testdb导出test1表定义语句,并查看原表记录
[root@localhost] 15:49:45 [testdb]>show create table testdb.test1\G;
*************************** 1. row ***************************Table: test1
Create Table: CREATE TABLE `test1` (`id` int(11) NOT NULL,`name1` char(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',`name2` char(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
1 row in set (0.00 sec)ERROR:
No query specified[root@localhost] 15:49:54 [testdb]>select * from testdb.test1;
+----+-------+-------+
| id | name1 | name2 |
+----+-------+-------+
| 1 | test1 | test1 |
| 2 | test | test |
+----+-------+-------+
2 rows in set (0.00 sec)
在目标库上创建空表tmp.test1
[root@localhost] 15:50:45 [tmp]>show create table tmp.test1\G;
*************************** 1. row ***************************Table: test1
Create Table: CREATE TABLE `test1` (`id` int(11) NOT NULL,`name1` char(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',`name2` char(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
1 row in set (0.00 sec)
discard删除目标库业务表ibd文件
ALTER TABLE tmp.test1 DISCARD TABLESPACE;
从源库中拷贝test1表的ibd文件到目标库
[mysql@mysql tmp]$ cp /data/mysql/data/3306/testdb/test1.ibd /data/mysql/data/3306/tmp/
[mysql@mysql tmp]$ ls -l
total 108
-rw-r-----. 1 mysql mysql 8620 Sep 17 15:50 test1.frm
-rw-r-----. 1 mysql mysql 98304 Sep 17 15:52 test1.ibd
目标库导入ibd文件
在目标库中,导入ibd文件
[root@localhost] 15:51:34 [tmp]>ALTER TABLE tmp.test1 IMPORT TABLESPACE;
Query OK, 0 rows affected, 1 warning (0.02 sec)[root@localhost] 15:53:11 [tmp]>SHOW WARNINGS;
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1810 | InnoDB: IO Read error: (2, No such file or directory) Error opening './tmp/test1.cfg', will attempt to import without schema verification |
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)[root@localhost] 15:53:18 [tmp]>select * from tmp.test1;
+----+-------+-------+
| id | name1 | name2 |
+----+-------+-------+
| 1 | test1 | test1 |
| 2 | test | test |
+----+-------+-------+
2 rows in set (0.00 sec)
到此,可以看到,已经将源库testdb.test1业务表的数据,恢复到目标库tmp.test1的业务表了。
总结
在这里有一个步骤最为重要,就是导入ibd文件,可以想想,导入idb文件的时候,Mysql到底做了那些事情呢,总共做了3件事情
1.导入的ibd文件,每个page都会做一次checksum,看看是否有坏页
2.更新每个page的头部的表空间id和LSN号
3.将page页设置成脏页,并刷新到磁盘
https://mp.weixin.qq.com/s/4iXbW445nX1yn1qG_eafbA
Mysql数据库drop表不用跑路,表空间传输助你恢复数据相关推荐
- 人员考勤,MySQL数据库一个表自动生成3表筛选人员迟到早退缺勤
人员考勤,MySQL数据库一个表自动生成3表筛选人员迟到早退缺勤 </h1><div class="clear"></div><div c ...
- MySQL数据库 第5章:单表操作
MySQL数据库 第5章:单表操作 5.1 数据操作 5.1.1 复制表结构和数据 5.1.2 解决主键冲突 5.1.3 清空数据 5.1.4 去除重复记录 5.2 排序与限量 5.2.1 排序 5. ...
- Mysql数据库基本操作(七)多表查询-子查询,表自身关联查询
多表查询还有前面的两块内容--内连接查询,外连接查询,希望看到这篇博客的朋友先去看看我的"Mysql数据库"专栏中Mysql数据库基本操作(六)多表查询-内连接,外连接这一章博客, ...
- Mysql数据库基本操作(六)多表查询-内连接查询,外连接查询
数据准备 use mydb3 ; --创建部门表 create table if not exists dept3 ( deptno varchar (20) primary key , --部门号 ...
- 学会这个删库再也不用跑路了~ --技术流ken
前言 相信每一个学IT的人或多或少都听说过从删库到跑路这个梗~下图也是在各种交流群屡禁不止,新人听着也是瑟瑟发抖. 人们茶余饭后,街头巷角难免要问... 下面技术流ken就教给各位新手们一招删库再也不 ...
- MySQL从删库到跑路(2):大爷的SQL私房菜
大爷的SQL私房菜 夜色如墨,月凉如水,一轮皎洁的圆月高高地挂在夜空之上,平日里鼾声如雷的室友今夜也停止了打鼾,如此静谧的夜晚,李有为却辗转难眠. 时间悄然来到凌晨一点半,他已经在窗边站了53分钟23 ...
- MySQL从删库到跑路(5):in and not
"哈哈哈哈,看你这几天没来上课,我还以为你去拜什么高人为师了?原来就是这个烂番薯.臭鸟蛋的小卖部大爷学装逼,你逗我玩呢?哈哈哈哈哈" "哈哈哈哈,一个老屌丝,一个小屌 ...
- mysql binlog 备份_偷偷的删表删库,跑路之前,尝试用binlog恢复MySQL数据
一. Binlog二进制日志: MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(所有的写入,除了(读)数据查询语句select),以事件形式记录,还 ...
- MySQL数据库(四):多表查询、视图、事务、索引、函数、Go连接MySQL
MySQL数据库:视图.事务.索引.函数.Go连接MySQL 1.1 目录 文章目录 1.1 目录 1.2 多表查询分类 1.2.1 内连接[inner join] 1.2.2 左外连接[left j ...
最新文章
- WCF动态添加ServiceKnownType
- linux运维第二讲
- 交叉熵损失函数数学推导
- Android 人脸识别
- 2021-11-04Oracle19c 图形化安装,在windoes上)
- 正则表达式的匹配规则
- ie8 html 语音标签,让IE8支持html5中的video标签
- cv岗工作做什么_只会python能做什么工作
- bin文件如何编辑_每日学习:Linux文件与目录管理常用命令解析
- 反插值法求函数方程的根(内附代码及例题)
- Oracle截取字符串函数和查找字符串函数,连接运算符||
- 计算机内存不足16g内存,加装16G内存,电脑却运行卡顿、崩溃?原来是这项设置有问题!...
- iOS开发笔记1:ToDoList、相册、地图应用及新浪微博
- C指针之指针与数组的天生姻缘
- html p标签行间距怎么调,css怎么设置行距?
- GTK帮助文档的使用
- python 操作word 替换字符串为图片_用python将.docx文件中的字符串替换为jpg
- IP-guard功能详解——安全U盘
- 读书笔记- 韩鹏杰 -《道德经》
- 微信小程序开发之后的推广细节
热门文章
- 基于PyTorch+YOLOv4的口罩佩戴检测,附数据集
- 2017年网易游戏数据挖掘/机器学习实习生笔试
- logo qt添加_Qt官方示例-窗口标志
- oracle stalestats_深入理解oracle优化器统计数据(Optimizer Statistics)
- python中的sklearn教程_python作业之sklearn
- 概率论符号_考研概率论知识点总结1
- PowerDesigner 中将Comment(注释)及Name(名称)内容互相COPY的VBS代码
- [每日一题] OCP1z0-047 :2013-07-13 oracle 10g正则表达式 REGEXP_LIKE 用法
- 互联网轻量级框架SSM-查缺补漏第九天
- 强一致性、弱一致性、最终一致性