MySQL如何快速恢复单表(物理方式)

news2024/11/22 16:18:08
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:xryz
  • 文章来源:社区投稿

使用方法

1、首先创建一个测试表test1,并插入几条数据:

mysql> create table test1 (id int auto_increment primary key,name varchar(20));
Query OK, 0 rows affected (0.05 sec)

mysql> insert into test1 (name) values ('张三'),('李四'),('王二');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test1;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王二   |
+----+--------+
3 rows in set (0.00 sec)

2、创建目标表test2:

mysql> create table test2 like test1;
Query OK, 0 rows affected (0.10 sec)
查看数据目录里面的ibd文件(test2.ibd、test1.ibd):
-rw-r-----. 1 * * 114688 Nov  2 16:20 test1.ibd
-rw-r-----. 1 * * 114688 Nov  2 16:23 test2.ibd

3、通过alter table discard的方法丢弃表test2的idb文件(为下一步复制test1的数据过来做准备):

mysql> alter table test2 discard tablespace;   
Query OK, 0 rows affected (0.02 sec)

查看ibd文件情况,发现test2的ibd文件已经被删除

-rw-r----- 1 * * 114688 Nov  2 16:20 test1.ibd

4、执行下面的命令,生成一个test1的cfg文件,如下:

mysql> flush table test1 for export; 
Query OK, 0 rows affected (0.00 sec)

生成了一个test1.cfg的cfg文件

-rw-r----- 1 * *    655 Nov  2 16:25 test1.cfg
-rw-r----- 1 * * 114688 Nov  2 16:20 test1.ibd

5、拷贝源表test1的cfg文件和ibd文件到目标表test2,并修改文件权限:

cp test1.cfg test2.cfg
cp test1.ibd test2.ibd
chown -R mysql.mysql test2.*

6、复制完成之后,执行select命令发现出现以下报错:

mysql> select * from test2;
ERROR 1100 (HY000): Table 'test2' was not locked with LOCK TABLES

7、执行unlock tables,释放源表的test1.cfg文件,然后导入ibd文件:

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

并用alter table的方法为目标表test2导入这个ibd文件:

mysql> alter table test2 import tablespace; 
Query OK, 0 rows affected (0.03 sec)
1 row in set (0.00 sec)

8、再次执行select,发现数据已经导入:

mysql> select * from test2;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王二   |
+----+--------+
3 rows in set (0.00 sec)

物理复制方法介绍

上述单表物理复制的方法,核心在于cp命令,因为是通过物理拷贝,所以如果复制的表非常大,那么通过物理拷贝,就会比逻辑上的SQL写入快很多,比如insert into select语句。

简单总结一下上述物理复制过程:
  • 1、create table like语法创建一个相同表结构的空的目标表
  • 2、目标表执行alter table discard,丢弃ibd文件
  • 3、源表执行alter table for export语法,生成.cfg文件,并锁表
  • 4、使用cp命令复制源表cfg文件和ibd文件为目标表
  • 5、unlock tables 释放源表的cfg文件和锁
  • 6、alter table import命令导入目标表的ibd数据文件。

alter table for export语法介绍:

  • 1、这个命令是为了将内存中关于这个表的数据刷新到磁盘上,确保数据都能被binlog所记录;
  • 2、这个操作需要flush table或者reload权限;
  • 3、这个操作会持有当前表的共享MDL锁,阻止其他会话修改表结构,在FOR EXPORT操作完成时不会释放先前获取的MDL锁,需要手工释放
  • 4、InnoDB会在与该表相同的数据库目录中生成一个名为table_name.cfg的文件
  • 5、处理完表复制后,需要使用UNLOCK tables释放源表的MDL锁或者断开连接。

注意:

因为alter table for export锁表,所以这种方法更适合在从库上停掉复制关系,然后执行这个表复制的操作。如果有业务操作当前的源表,需要谨慎考虑。


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

捉虫活动详情:https://greatsql.cn/thread-97-1-1.html

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

6440

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DataParallel里为什么会显存不均匀以及如何解决

作者:台运鹏 (正在寻找internship...)主页:https://yunpengtai.top鉴于网上此类教程有不少模糊不清,对原理不得其法,代码也难跑通,故而花了几天细究了一下相关原理和实现,欢迎批评指正!关于此部…

商品上下游第六讲-交易中心-商品秒杀

交易中心-商品秒杀设计 文章目录 交易中心-商品秒杀设计1、项目背景2、主要技术3、项目职责4、项目实现4.1、需求分析4.2、核心流程4.3、关键链路技术方案4.4、库存处理方式1、库存超卖问题订单层面的控制4.5、限流,熔断,降级4.6、超职购小程序—接口梳理4.7、缓存的设计4.8、…

mybatis入门(一)

什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的…

如何使用匈牙利算法解决多维度的约束条件问题

🍿*★,*:.☆欢迎您/$:*.★* 🍿 正文 假设 一个项目 有三个 维度的参数 A B C 都要 组合后最小 分别求解 a b c 三个维度的最优组合 如果三个组合方案刚好 重叠 那么说明有一个使得三个方案最优的 解 如果没有 那么若选择某个方案 其他维度的参数 的值 是…

直播倒计时 2 天 | SOFAChannel#31 RPC 框架设计的考和量

SOFARPC 是蚂蚁集团开源的一款基于 Java 实现的 RPC 服务框架,为应用之间提供远程服务调用能力,具有高可伸缩性,高容错性,目前蚂蚁集团所有的业务的相互间的 RPC 调用都是采用 SOFARPC。SOFARPC 为用户提供了负载均衡,…

Android -- 每日一问:回调函数和观察者模式的区别?

知识点 观察者模式 网上很容易查到观察者模式的定义: 观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 Android中大量的使用了观察者模式。你可能已经用过ListView…

基于51单片机的舞蹈机器人步进机仿真设计

程序运行图: 仿真原理图: 部分程序: #include "reg51.h" #include "intrins.H" //8步式步进电机脉冲序列 //unsigned char steps[8] {0x77,0x33,0xbb,0x99,0xdd,0xcc,0xee,0x66}; unsigned char steps[8] {0x2,0x…

Vue2快速入门

Vue 介绍 Vue 是一套构建用户界面的渐进式前端框架只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合通过尽可能简单的API来实现响应数据的绑定和组合的视图组件特点易用:在有HTML CSS JavaScript的基础上,快速…

拓扑排序(数据结构之图的应用)

我们先搞清楚一个概念: 什么是出度与入度? 在有向图中,箭头是具有方向的,从一个顶点指向另一个顶点,这样一来,每个顶点被指向的箭头个数,就是它的入度。从这个顶点指出去的箭头个数&#xff0c…

不锈钢风淋室的使用需要注意哪些事项

风淋室的使用需要注意哪些事项 一、风淋室的操作说明: 1) 接通380V,50HZ电源(L1、L2、L3-火线,N-零线,E-接地线),打开工作、照明开关,确认风机与照明工作正常,此时,风/货淋室处于初…

原创 | Attention is all you need 论文解析(附代码)

作者:杨金珊审校:陈之炎本文约4300字,建议阅读8分钟“Attention is all you need”一文在注意力机制的使用方面取得了很大的进步,对Transformer模型做出了重大改进。目前NLP任务中的最著名模型(例如GPT-2或BERT&#x…

【数集项目之 MCDF】(四) 整形器 formatter

根据上一章的arbiter结构图,结合设计文档中MCDF的整体结构图,可以发现formatter整形器模块是arbiter的上级,负责最终的数据输出,与外界数据接收端相连。 第一节 fromatter文档理解 设计文档formatter的部分时序介绍如下 如图所示…

钡铼技术S274数据遥测终端机

钡铼技术S274数据遥测终端机功能特点: 内置 2 路 DC 直流电源输出,无需单独额外增加变送器的电源适配器,节省布线成本;  采用完备的防掉线机制,保证数据终端永远在线,掉线重发数据以及掉线短信通知用户…

第38篇 网络(八)TCP(二)

导语 在上一节里我们使用TCP服务器发送一个字符串,然后在TCP客户端进行接收。在这一节将重新写一个客户端程序和一个服务器程序,这次实现客户端进行文件的发送,服务器进行文件的接收。有了上一节的基础,这一节的内容就很好理解了…

postgresql_internals-14 学习笔记(三)冻结、rebuild

一、 Freezing 冻结 1. 引入原因 简单说来就是目前pg事务id只有32位,大业务量下很可能用完,触发事务id回卷(循环使用)。而pg是根据事务id大小判断可见性的,如果新事务却使用了小id,旧事务将可以看到新事务…

win下 conda 虚拟环境没有名字怎么进入

本文主要介绍windows下,在conda 虚拟环境名字消失后的解决办法。主要介绍两种解决方案。 文章目录前言解决方案一:往.condarc文件中添加envs_dirs1. 设置envs_dirs2. 重新查看虚拟环境解决方案二:直接通过path 激活虚拟环境总结前言 我们都知…

Grafana 监控大屏可视化图表

Grafana 系列文章,版本:OOS v9.3.1 Grafana 的介绍和安装Grafana监控大屏配置参数介绍(一)Grafana监控大屏配置参数介绍(二)Grafana监控大屏可视化图表 前面我们以Time series 图表为例,学习了面…

每天投递一两个公司,我连续投了三个月

作者:阿秀校招八股文学习网站:https://interviewguide.cn你好,我是阿秀。阿秀以前在秋招的时候投递过八九十份简历,当时还没有简历一键上传功能,很多时候都需要自己去那些公司注册账号,然后找到校园招聘模块…

手机备忘录误删恢复的操作方法

手机备忘录在使用的过程中,会有多种不同的操作,通过不同的操作来实现不同的效果。对于有的内容来说,是可以过期删除的,但是在删除这个操作的过程当中,如果不小心把有用的东西误删了,那么恢复误删内容的操作…

行内块元素因换行带来的间隔问题及解决方法

行内块元素因换行带来的间隔问题 先看一个案例所展示的行内块元素因换行带来的间隔问题,俺直接上截图 再来一张截图可以更加清楚地看见行内块元素之间因换行而带来的间隔 从上方所有图片可以看出,行内块元素之间一行并排放置时编译器中的换行操作会在浏览器渲染时带来行内块元…