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

MySQL数据库备份与恢复 如果你在使用MySQL数据库,那么你一定知道,一场数据损失可能会让你损失惨重。而在这场数字战争中,备份就是你的护身符。在这篇文章中,我们将深入探讨MySQL数据库备份与恢复的相关知识,确保你在面临数据风险时毫不慌乱,游刃有余。 阅读详情
  • 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、源表执行flush table for export语法,生成.cfg文件,并锁表
  • 4、使用cp命令复制源表cfg文件和ibd文件为目标表
  • 5、unlock tables 释放源表的cfg文件和锁
  • 6、alter table import命令导入目标表的ibd数据文件。

flush table for export语法介绍:

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

注意:

因为flush 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

mysql数据库备份与恢复 在 MySQL 数据库中,备份和恢复操作是保障数据安全和应对各种意外情况的重要手段。以下为你详细介绍几种常见的备份与恢复方法。 阅读详情

相关推荐

MySQL数据库-备份及恢复快速上手

今天给伙伴们分享一下MySQL数据库-备份及恢复,希望看了有所收获。

mohuanfenghuang的博客 1089

Mysql之mysqldump整库备份单表恢复还原

日常运维中,我们往往都是整库备份,整库还原。实际工作中会存在需要还原部分表或者单表的情况。例如在开发或者测试环境中,开发人员因为误操作或者测试需要删除或者清空了某个表,我们需要还原这个被删除或者清空的表。为了恢复这个误删表,我们如果使用整库还原会存在2点问题:一、直接还原到在用库,可能导致其他表已更新数据被覆盖;二、使用临时库整库还原后copy单表会耗时费力。实际上我们只需要截取出单表数据,恢复单表即可。

月生的静心苑 5974

MySQL单表数据恢复方法详解

然后,将备份的.ibd文件复制到MySQL数据目录,并更改文件的权限。在这一步中,我们需要将备份的.ibd文件复制到MySQL数据目录中,以便MySQL可以找到它并进行恢复。在MySQL数据库中,当单个表的.ibd文件损坏或丢失时,我们需要采取一些措施来恢复数据。接下来,我们需要创建一个新的空白数据库,用于恢复损坏或丢失数据的.ibd文件。现在,我们可以启动MySQL数据库服务,使得我们可以使用新创建的数据库进行数据恢复。在这一步中,我们需要告诉MySQL将.ibd文件加入到我们新创建的数据库中。

QvisCs的博客 976

mysql drop 后 恢复单个表数据

数据库相关视频讲解:用python编程Excel有没有用处?恢复MySQL数据库中单个表数据的方法 在数据库管理中,有时候我们会不小心删除了某个表的数据,这时候如何恢复这些数据呢?下面我们来介绍一种方法:使用MySQL的备份和恢复功能来实现单个表数据的恢复。 备份数据 首先,我们需要在数据删除之前对数据库进行备份,以便在...

weixin_32386693的博客 342

详解使用Percona XtraBackup进行单库、单表备份并快速恢复到其他环境下

这里直接开门见山,代码糊上 由于安全问题 使用的账户以及库均为虚拟,步骤如下: 备份单表: 1 制作备份 [root@localhost ~]# innobackupex --user=backup --password=123456 --databases="cumcm.cumcm_sys_country" /home/pack xtrabackup: recognized server arg...

专注于编程、AI、人工智能等多个领域内容研究和分析 6205

MySQL如何快速恢复单表

MySQL如何快速恢复单表

奋斗的阿杰的博客 482

MySQL表和表数据被删除后,紧急复原

在开发和在生产中总会出现各种各样的失误和意味,当MySQL的数据或表被删除后不要慌,执行以下命令,查看mysql是否开启binlog,binlog会记录下数据库表结构的变更,因此。在找到binlog文件就需要确定我们要恢复的范围,因为每个mysql-bin可能内容很多,我们需要根据时间区间,截取出需要数据恢复的那一部分。是一个比较好用的mysql闪回工具,建议去上面的github查看,有例子,基本不踩坑,步骤也很简单,使用。根据这两个参数进行数据恢复,使用以下指令,在服务器中执行。在部署MySQL的时候。.

NiKaBoy的博客 1万+

【MySQL8入门到精通】备份恢复-物理&逻辑备份

备份的理由千千万,预防故障,安全需求,回滚,审计,删了又改的需求等等,备份的重要性不言而喻

IT邦德 5300

mysql误删除某个表,恢复记录

解决办法:查找 mysqlbinlog 然后使用绝对路径使用。2.我直接删除的表,所以也搞不回来了.参考下面的第二点.bash: mysqlbinlog: 未找到命令...所以,只有删除数据,和清空表,才记录数据,如果是删除本条数据,会出现数据记录。1.找不到mysqlbinlog。截断表 不会出现记录。清空表 也会出现,删除表 不会出现记录。

m0_67918035的博客 1433

MySQL使用全库备份数据恢复单表数据的方法

主要给大家介绍了关于MySQL使用全库备份数据恢复单表数据的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起看看吧

CoaXPress FMC子卡:高速图像采集与FPGA原型开发实战指南

在机器视觉和工业检测领域,高速、可靠的数据传输是核心需求。CoaXPress(CXP)协议作为一种基于同轴电缆的高速接口标准,通过其高带宽、长距离传输和低延迟的特性,有效解决了传统接口在确定性实时传输方面的短板。其技术价值在于为海量图像数据提供了稳定、高效的物理层和数据链路层解决方案,广泛应用于半导体检测、医疗成像等对吞吐量有极致要求的场景。要实现CXP系统的快速原型验证,集成了高速SerDes接口和时钟管理的FMC子卡与FPGA开发板的组合成为关键。这种平台将复杂的硬件设计封装,让开发者能聚焦于图像处理算

weixin_31815843的博客 278

mysqldump-vs-xtrabackup

简单理解: 一、核心区别 对比点 mysqldump xtrabackup 备份类型 逻辑备份 物理备份 备份内容 SQL 语句,如 CREATE TABLE、INSERT MySQL 数据文件、表空间、redo log、元数据 备份粒度 库、表、部分数据都方便 更适合整个实例或大范围备份 恢复方式 执行 SQL 重新导入 拷贝物理文件回 MySQL 数据目录 备份速度 小库可以,大库较慢 大库更快 恢复速度 慢,尤其是大表和索引多的库 快,接近文件级恢复 可读性 S

2401_88076102的博客 330

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

MySQL物理备份实现快速单表恢复

文章目录1.1 创建测试表1.2 备份1.3 删除表1.4 解析frm表定义文件1.5 根据解析结果创建表结构1.6 替换表空间1.7 根据binlog做指定表、时间点全恢复 1.1 创建测试表 [root@zijie data]# mysql --login-path=master57 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.29-

雪辉博客 712

ubuntu虚拟机搭建OP-TEE

在网上找了一些搭建OP-TEE的过程,模仿着进行搭建,结果有好多报错,为了方便自己以后重新搭建,所以将整个过程记录下来。

weixin_44213847的博客 1001

南京邮电大学电工电子基础B实验六(组合逻辑电路)

南京邮电大学电工电子基础B实验五(组合逻辑电路);电工电子;南京邮电大学;计算机学院;实验报告;电路图;

亦是远方的小地方 1万+

[MySQL] 根据物理备份恢复单表

文章目录模拟单表数据丢失删除数据库中某张表恢复单表数据建表恢复数据 数据误删是一个线上常见的灾难问题。想起当年公司小伙伴在上线前一天删除了用户表的数据,打电话给经理的手都是颤抖的。经理绞尽脑汁,凌晨从别的表找到人员数据拼凑恢复到用户表,但最后还是丢了部分用户数据。 模拟单表数据丢失 如果是执行了delete,可以通过解析binlog日志为“undo语句”,反向将数据恢复回来;但是如果执行的语句是drop,那么…尽快买一张机票,离开这个是非之地。 上篇讲到使用xtrabackup可以进行物理备份,优点是

从前有座无庙山 606

超详细YOLOv8姿态检测全程概述:环境、训练、验证与预测详解

本篇博客详细介绍了使用YOLOv8-pose进行姿态估计的全过程,包括不同版本模型的性能比较、训练与验证步骤,以及预测代码的实现。它对模型参数、训练过程和输出结果进行了解释,同时提供了详细的配置文件示例和标签数据格式说明。此外,还演示了如何使用预训练模型进行图像预测,并如何处理和理解预测结果。最后,它还讨论了如何评估和比较不同模型的性能。如果有哪里写的不够清晰,小伙伴本可以给评论或者留言,我这边会尽快的优化博文内容,另外如有需要,我这边可支持技术答疑与支持。

CDBmax的博客 3万+

Mysql之备份恢复全流程实战与逻辑物理方案对比

本文深入探讨了MySQL数据库的备份与恢复策略,对比了物理备份和逻辑备份的核心差异及适用场景。物理备份通过直接复制数据文件实现快速恢复,适用于大数据量和高频备份场景;逻辑备份则通过SQL语句或文本数据实现,适合跨版本迁移和单表恢复。文章详细介绍了使用LVM快照进行物理备份恢复和mysqldump进行逻辑备份恢复的实战流程,并提出了混合备份策略以平衡效率与可靠性。此外,文章还提供了恢复性能对比和选型指南,帮助开发者根据实际需求选择最合适的备份方案。最后,强调了构建弹性备份恢复体系的重要性,建议定期进行恢复演练

wj_rdk的博客 1348

stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置

当我们读懂 FOC 矢量控制的基本原理之后,便迫不及待的想动手尝试,去实现一个矢量控制系统,让电机先转起来,有一个直观的感受。因此,我们需要设计实现一个矢量控制的最小系统,具备矢量控制的基本功能,满足电机矢量运行的基本条件。首先,看一下矢量控制的基本架构:矢量控制架构如上图所描述,矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度的反馈和计算以及电流环和速...

weixin_39524048的博客 1784

Zabbix 7.0 从入门到精通部署手册

zabbix 入门到精通

weixin_43806846的博客 1031

【MySql】Mysql之备份与恢复

mysql的日志默认保存位置为:/usr/local/mysql/data 下面二进制日志由三种不同的记录格式①STTATEMENT(基于sql语句)每一条涉及到被修改的sql语句都会记录在binlog中缺点日志量过大,如sleep()函数,last_insert_id()>(聚合函数),以及user-definedfuctions(udf)、垂从复制等架构记录日志时会出现问题。

五彩斑斓的黑@的博客 9095

循迹小车控制实验:代码集成与硬件验证

在main.c文件中还需定义上层代码调用的GPIO输入和PWM输出相关函数,其中调用STM32CubeMX生成的HAL库函数。}else{}else{}else{}else{在main.h文件中的USER CODE BEGIN EFP注释代码段中外部声明Get函数和Set函数,使该函数可以被上层代码调用。循迹小车控制实验到本章全部完成。相比于前几章节的实验,本实验复杂程度是最高的。

u013288925的博客 127

MySQL8.0物理备份恢复核心流程

MySQL 8.0物理备份恢复是一种将数据库的实际物理文件从一个系统迁移到另一个系统的方法,通常比逻辑备份恢复更快,因为它避免了解析和执行SQL语句的过程。在MySQL中,常用的物理备份工具是Percona XtraBackup(以下简称XtraBackup),它可以对InnoDB和MyISAM存储引擎的表进行在线热备份。

专注于数据库技术分享,包含但不限于Oracle,MySQL,PostgreSQL,ElasticSearch及国产数据库等 1706

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MySQL数据库备份与恢复详解

备份和恢复是确保 MySQL 数据库数据安全和高可用性的关键环节。本文详细介绍了 MySQL 的各种备份和恢复方法,包括逻辑备份、物理备份、增量备份、定时备份等方式。通过掌握这些备份与恢复技术,您可以在数据库出现问题时快速恢复数据,并保证数据库的高可用性。

码上飞扬的博客 1199

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MySQL——备份与恢复

在企业中,数据的价值至关重要,数据保障了企业业务的正常运行。因此,数据的安全性及数据的可靠性是运维的重中之重,任何数据的吊事都可能对企业产生严重的后果。

A6985HG的博客 2058

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: MySQL客户端的进阶操作
下一篇: 搭建基于lvs+nginx的负载均衡服务集群
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值