MySQL 删除ibdata1时怎么恢复

标题:MySQL InnoDB数据恢复,丢失ibdata1时怎么安全恢复

废话在前:

恭喜你,当你看到这篇文章的时候,说明有可能 你心里已经有一万匹🐎在奔腾了。千万不要乱删除ibdata1,有些博客无脑抓取、复制其他人的博客乱发文章,比如:

在磁盘满了的情况下,不能删除ibdata1文件,或者在删除的时候该备份(但是磁盘都满了,一般都备份不到了,本人血泪教训)。

原因:由于innoDB将表数据字典存储在ibdata1中,当ibdata1改变时,ID就无法对应上,所以就会找不到表。

再来说怎么解决

如果你的mysql在删除ibdata1后还没有启动的时候,这个时候还可以靠进程试着恢复:

# 误删数据文件和重做日志文件
[root@dba ~]# cd /mysqldata/data/
[root@dba data]# ll ib*
-rw-r----- 1 mysql mysql      809 Nov 19 03:22 ib_buffer_pool
-rw-r----- 1 mysql mysql 79691776 Feb 23 07:17 ibdata1
-rw-r----- 1 mysql mysql 50331648 Feb 23 07:18 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Feb 23 07:18 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Feb 23 07:06 ibtmp1
[root@dba data]# rm -f ib*
[root@dba data]# ll ib*
ls: cannot access ib*: No such file or directory

# 查找MySQL进程pid
[root@dba data]# netstat -ntlp | grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      7424/mysqld         
# 确认进程具柄还没释放
[root@dba data]# ll /proc/7424/fd | egrep 'ib_|ibdata'
lrwx------ 1 root root 64 Feb 23 07:33 10 -> /mysqldata/data/ibdata1 (deleted)
lrwx------ 1 root root 64 Feb 23 07:33 4 -> /mysqldata/data/ib_logfile0 (deleted)
lrwx------ 1 root root 64 Feb 23 07:33 9 -> /mysqldata/data/ib_logfile1 (deleted)

# 前端关闭业务或甚至只读模式
flush tables with read lock;
# 将脏页尽快刷入磁盘
set global innodb_max_dirty_pages_pct = 0;
# 查看binlog日志写入情况,确保File和Position值没变化
show master status;
# 查看InnoDB状态信息确保脏页已刷入磁盘
show engine innodb status\G;

# 将未释放的具柄号复制回原目录文件
[root@dba data]# cp /proc/7424/fd/10 /mysqldata/data/ibdata1
[root@dba data]# cp /proc/7424/fd/4 /mysqldata/data/ib_logfile0
[root@dba data]# cp /proc/7424/fd/9 /mysqldata/data/ib_logfile1
# 修改用户属性
[root@dba data]# chown mysql.mysql ib*
[root@dba data]# ll /mysqldata/data/ib*
-rw-r----- 1 mysql mysql 79691776 Feb 23 07:41 /mysqldata/data/ibdata1
-rw-r----- 1 mysql mysql 50331648 Feb 23 07:41 /mysqldata/data/ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Feb 23 07:41 /mysqldata/data/ib_logfile1

# 解锁,看是否需要重启MySQL服务
mysql> unlock tables;

如果你已经启动了mysql,那么再次恭喜你 又加大了难度,ibdata1在mysql启动和关闭的时候写入数据,如果在删除了ibdata1文件下,启动了mysql,那么ibdata1文件会自动创建。那么就需要想别的办法来恢复数据:

此时你所有的数据都还是存在的,只是缺少了一个ibdata1文件,而innoDB将表数据字典存储在ibdata1中,所以你需要重新建立表字段、结构等(注意:所有格式、编码都需要和以前一致)

CREATE TABLE table_name ...; # 这里的表格式 必须和之前的严格一致,否则会造成数据乱码
ALTER TABLE table_name DISCARD TABLESPACE; # 去除表空间( 会删除 table_name.idb ) 
# 复制原数据 table_name.idb 到数据目录下 ( 这一步建议先停止MySQL服务器,复制完成再开启 ) 
ALTER TABLE table_name IMPORT TABLESPACE; # 导入表空间 # DISCARD TABLESPACE 相当于清空新表数据 
# IMPORT TABLESPACE 相当于从文件导入数据

最后还是希望你能完整快速的恢复数据。

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

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

相关文章

方案解决:5G基站节能及数字化管理

截至2023年10月,我国5G基站总数达321.5万个,占全国通信基站总数的28.1%。然而,随着5G基站数量的快速增长,基站的能耗问题也逐渐日益凸显,基站的用电给运营商带来了巨大的电费开支压力,降低5G基站的能耗成为…

腾讯云把向量数据库“卷”到哪一步了?

“不是我不明白,这世界变化快”,崔健在20世纪写下的这句歌词,放在刚刚过去的2023年,也同样适用。技术风向的变化之快,让不少人感到惊讶,向量数据库这一年的潮起潮落,就是一个典型的例子。 2023年…

OpenGL ES之深入解析如何实现图像锐化

一、什么是图像锐化? 图像锐化是一种图像处理技术,其目的是增强图像中的细节和边缘,使图像看起来更加清晰。这一过程通常涉及到突出图像中的高频信息,特别是强调像素之间的灰度变化。通过增强图像的高频细节,图像锐化可以改善图像在人类视觉系统和计算机视觉系统中的感知效…

电商API接口主要应用场景有哪些?

随着互联网技术的不断进步和电商行业的迅猛发展,电商API接口在商品交易、物流配送、客户服务等方面发挥着越来越重要的作用。本文将深入探讨电商API接口的技术原理、应用场景、开发方法以及优缺点。 一、技术原理 电商API接口是基于HTTP、TCP、IP等网络协议实现的…

[Kubernetes]10. k8s部署Goweb+mysql项目实战演练

一.安装docker构建镜像 如果要本地构建镜像的话,对应节点还需要安装docker,安装教程见:[Docker]一.Docker 简介与安装 linux环境,centos8下 docker及docker compose安装教程 k8s部署Goweb+mysql项目有两种方法:第一种是传统部署方法,第二种是通过ConfigMap实现应用配置分离部署…

Soul App:来一场始于“兴趣”,轻松自在的“零糖”社交吧

岁末年终,回顾2023年,这一年你都做了什么呢? 记不清楚没关系,互联网都帮你记录好了。2023年,B站的年轻人当“所见所闻”刷新自身认知时,往往会发送弹幕“啊?”来抒发惊叹。这一年,支付宝“小荷包”的用户中00后占了4成,近一半更开启了“自动攒”计划“无痛攒钱”!携程上,每7…

Bubble – 非实时协作软件如何促成好点子诞生

作为一名用户体验设计师,参加各种各样的会议构成一周工作大部分时间,一个项目的推进离不开大家的共同协作。 身在外企,我们要与不同国家(时区)不同部门的同事协作,Teams是每天必使用的软件,但是…

【JAVA基础--计算机网络】--TCP三次握手+四次挥手

三次握手四次挥手 写在前面1. 三次握手1.1 作用: 为了在不可靠的信道上建立起可靠的连接;1.2 建立过程1.3 面试提问 2. 四次挥手2.1 作用:为了在不可靠的网络信道中进行可靠的连接断开确认2.2 断开过程2.3 面试提问 写在前面 三次握手建立连…

【MATLAB】tvf_emd_LSTM神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 TVF-EMD-LSTM神经网络时序预测算法是一种结合了变分模态分解(Variational Mode Decomposition,VMD)、经验模态分解(Empirical Mode Decompo…

【Python】Pyside2 可视化实现:每秒复制源文件一行到目标文件并打印日志

背景: 博主在某个项目中,需要模拟每秒钟生成一行数据,所以有了该博客的想法,其中有线程的内容,为了防止主界面卡住 效果: 代码: import sys import threading import timeimport openpyxl im…

安泰高压功率放大器在半导体测试中的应用

高压功率放大器在半导体测试中扮演着重要的角色。半导体测试是指对半导体器件进行各种电性能参数测试和质量检测的过程。以下是关于高压功率放大器在半导体测试中的应用的详细介绍。 一、高压信号发生器: 在半导体测试中,需要模拟高压环境下的工作条件以…

如何统一给文件夹名加后缀?这个方法教你一键搞定

随着计算机的普及,我们每天都会处理大量的文件和文件夹。有时候,为了更好地管理和分类文件,我们会给文件夹统一加上后缀。给文件加上后缀后最直接的好处就是方便文件管理。当我们给文件夹加上后缀时,我们可以很容易地根据后缀来判…

new mars3d.graphic.PolygonEntity({计算平面几何中心点及贴地效果展示

1.Mars3d提供了几何图形相关点位的计算方法polyutil: PolyUtil - V3.7.0 - Mars3D API文档 2.通过api可以算出相关经纬度坐标,实现相关中心点的展示 : 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 3.相关实现代码: fu…

AI Agent:大模型的下一个高地

科技云报道原创。 当所有人都沉浸在与ChatGPT对话的乐趣中,一场静水流深的变革已然启动。 2023年11月,比尔盖茨发表了一篇文章,他表示,AI Agent将是大模型之后的下一个平台,不仅改变每个人与计算机互动的方式&#x…

九、Qt C++ 毕业设计 数据库相关

《一、QT的前世今生》 《二、QT下载、安装及问题解决(windows系统)》《三、Qt Creator使用》 ​​​ 《四、Qt 的第一个demo-CSDN博客》 《五、带登录窗体的demo》 《六、新建窗体时,几种窗体的区别》 《七、Qt 信号和槽》 《八、Qt C 毕业设计-CSDN博客》 …

如何使用Lychee结合内网穿透搭建私人图床网站并发布至公网远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…

一键批量翻译日语文件名至中文,轻松管理你的文件库!

你是否曾经因为日语文件名的困扰而感到头疼?随着中日交流的日益频繁,我们经常需要在中文环境下处理日语文件。为了更好地管理和使用这些文件,将日语文件名翻译成中文变得尤为重要。现在,有了我们的批量文件名翻译工具,…

PLM项目管理系统是什么? PLM项目管理系统的优势

PLM项目管理系统是什么 PLM,全称Product Lifecycle Management,即产品生命周期管理。它就像一个大管家,帮助企业打理产品研发的各种数据和流程,它是一个工具,一个强大的工具,让企业可以统一管理产品研发数…

Transformer原理与代码实现

Transformer原理与代码实现 概览 一、嵌入层 Embedding 二、位置编码 Positional Encoding 三、(整合)Transformer嵌入层 Transformer Embedding 四、带缩放的点积注意力机制 Scaled Dot-Product Attention 五、多头注意力 Multi-Head Attention 六…

ThingsPanel部署和使用

前置条件: 首先默认大家有一台服务器或者云服务器并且已经搭建好环境。小编是基于Linux宝塔环境以Docker安装ThingsPanel平台。 一.Docker和Docker-compose 1.概述 Docker是一个开源的容器化平台,它可以帮助开发者将应用程序与其依赖项打包到一个轻量…