模拟误删除InnoDB ibdata数据文件恢复
注意:假如误删除 ibdata文件 ,此时千万别把mysqld进程杀死,否则没法挽救。
1.模拟删除ibdata数据文件和重做日志文件:
[root@hcdb0 data]# ll
total 421944
-rw-r-----. 1 mysql mysql 56 Sep 12 20:57 auto.cnf
-rw-r-----. 1 mysql mysql 11937 Sep 12 23:37 error.log
-rw-r-----. 1 mysql mysql 413 Sep 12 20:57 ib_buffer_pool
-rw-r-----. 1 mysql mysql 104857600 Sep 12 23:32 ibdata1
-rw-r-----. 1 mysql mysql 104857600 Sep 12 23:32 ib_logfile0
-rw-r-----. 1 mysql mysql 104857600 Sep 12 20:57 ib_logfile1
-rw-r-----. 1 mysql mysql 104857600 Sep 12 20:57 ib_logfile2
-rw-r-----. 1 mysql mysql 12582912 Sep 12 23:31 ibtmp1
-rw-r-----. 1 mysql mysql 3838 Sep 13 00:30 innodb_status.10225
drwxr-x---. 2 mysql mysql 4096 Sep 12 23:32 liangdb
drwxr-x---. 2 mysql mysql 4096 Sep 12 20:57 mysql
-rw-r-----. 1 mysql mysql 6 Sep 12 20:57 mysql.pid
drwxr-x---. 2 mysql mysql 4096 Sep 12 20:57 performance_schema
-rw-r-----. 1 mysql mysql 377 Sep 12 20:57 slow.log
drwxr-x---. 2 mysql mysql 12288 Sep 12 20:57 sys
[root@hcdb0 data]# rm -rf ib*
[root@hcdb0 data]# ll
total 52
-rw-r-----. 1 mysql mysql 56 Sep 12 20:57 auto.cnf
-rw-r-----. 1 mysql mysql 11937 Sep 12 23:37 error.log
-rw-r-----. 1 mysql mysql 3838 Sep 13 00:30 innodb_status.10225
drwxr-x---. 2 mysql mysql 4096 Sep 12 23:32 liangdb
drwxr-x---. 2 mysql mysql 4096 Sep 12 20:57 mysql
-rw-r-----. 1 mysql mysql 6 Sep 12 20:57 mysql.pid
drwxr-x---. 2 mysql mysql 4096 Sep 12 20:57 performance_schema
-rw-r-----. 1 mysql mysql 377 Sep 12 20:57 slow.log
drwxr-x---. 2 mysql mysql 12288 Sep 12 20:57 sys
2.找到mysqld的进程id:
ps -ef|grep mysql
或者 netstat -tnlp|grep mysqld
tcp 0 0 :::3306 :::* LISTEN 10225/mysqld
这里是 10225
3.找到要恢复的句柄文件
ll /proc/10225/fd grep 'ib_|ibdata'
[root@hcdb0 data]# ll /proc/10225/fd | egrep 'ib_|ibdata'
lrwx------. 1 root root 64 Sep 13 00:28 10 -> /data/mysql/3306/data/ib_logfile1 (deleted)
lrwx------. 1 root root 64 Sep 13 00:28 11 -> /data/mysql/3306/data/ib_logfile2 (deleted)
lrwx------. 1 root root 64 Sep 13 00:28 5 -> /data/mysql/3306/data/ibdata1 (deleted)
lrwx------. 1 root root 64 Sep 13 00:28 9 -> /data/mysql/3306/data/ib_logfile0 (deleted)
4.此时把前端业务关闭,或者执行
mysql> flush tables with read lock;
上面语句,让数据库没有写入操作,以便能够进行恢复操作。
5.验证数据库没有写入操作
(1)让脏页尽快刷入到磁盘:
mysql> set global innodb_max_dirty_pages_pct=0;
(2)观察binlog日志写入情况,确保File 和 Position 的值没有变化。
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 3075 | | | |
+------------------+----------+--------------+------------------+-------------------+
(3)最后查看InnoDB状态信息,确保脏页已经刷入磁盘
mysql> show engine innodb status\G;
------------
TRANSACTIONS
------------
Trx id counter 1319
Purge done for trx's n:o < 1315 undo n:o < 0 state: running but idle
### 确保后台Purge进程把undo log全部清除掉,事务ID要一致。
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
### insert buffer合并插入缓存等于1
---
LOG
---
Log sequence number 2553422
Log flushed up to 2553422
Pages flushed up to 2553422
Last checkpoint at 2553413
### 确保这3个值不在变化
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 107380736
Dictionary memory allocated 352938
Buffer pool size 6400
Free buffers 6075
Database pages 325
Old database pages 0
Modified db pages 0
### 确保脏页数量(Modified db pages)为0
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
0 read views open inside InnoDB
Process ID=10225, Main thread ID=140654206252800, state: sleeping
Number of rows inserted 11, updated 0, deleted 0, read 17
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
### 确保插入、更新、删除为0
6.上面确认后,就可以进行恢复了,
[root@hcdb0 data]# ll /proc/10225/fd | egrep 'ib_|ibdata'
lrwx------. 1 root root 64 Sep 13 00:28 10 -> /data/mysql/3306/data/ib_logfile1 (deleted)
lrwx------. 1 root root 64 Sep 13 00:28 11 -> /data/mysql/3306/data/ib_logfile2 (deleted)
lrwx------. 1 root root 64 Sep 13 00:28 5 -> /data/mysql/3306/data/ibdata1 (deleted)
lrwx------. 1 root root 64 Sep 13 00:28 9 -> /data/mysql/3306/data/ib_logfile0 (deleted)
把这些文件复制到原来目录下
cp /proc/10225/fd/10 /data/mysql/3306/data/ib_logfile1
cp /proc/10225/fd/11 /data/mysql/3306/data/ib_logfile2
cp /proc/10225/fd/5 /data/mysql/3306/data/ibdata1
cp /proc/10225/fd/9 /data/mysql/3306/data/ib_logfile0
然后修改用户属性
chown mysql:mysql /data/mysql/3306/data/ib*
最后重启MySQL即可
模拟误删除InnoDB ibdata数据文件恢复的更多相关文章
- 误删除innodb ibdata数据文件 文件句柄 文件描述符 proc fd
误删除innodb ibdata数据文件 文件句柄 文件描述符 proc fd http://www.cnblogs.com/gomysql/p/3702216.html 提示:如果不小心通过 ...
- 误删除innodb ibdata数据文件-之恢复
今天在群里看到有人说不熟悉innodb把ibdata(数据文件)和ib_logfile(事务日志)文件误删除了.不知道怎么解决.当时我也不知道怎么办.后来查阅相关资料.终找到解决方法.其实恢复也挺简单 ...
- 误删除innodb ibdata数据文件
今天在群里看到有人说不熟悉innodb把ibdata(数据文件)和ib_logfile(事务日志)文件误删除了.不知道怎么解决.当时我也不知道怎么办.后来查阅相关资料.终找到解决方法.其实恢复也挺简单 ...
- 0929误删除innodb ibdata数据文件
今天在群里看到有人说不熟悉innodb把ibdata(数据文件)和ib_logfile(事务日志)文件误删除了.不知道怎么解决.当时我也不知道怎么办.后来查阅相关资料.终找到解决方法.其实恢复也挺简单 ...
- mysql innodb 从 ibd 文件恢复表数据
最近内部的 mysql 数据库发生了一件奇怪的事,其中有一个表 users625 突然出现问题, 所有对它的操作都报错误 数据表不存在. mysql> select count(*) from ...
- mysql通过数据文件恢复数据方法
情况描述:服务器硬盘损坏,服务器换了个新硬盘 ,然后老硬盘插在上面.挂载在这台机器.可以从老硬盘里面拿到数据.只拿到了里面的mysql数据文件夹,把数据文件夹覆盖新的服务器mysql数据文件夹 启动报 ...
- linux下误删数据文件恢复
linux下文件被删除能够用非常多工具进行恢复.比如undelete(适合ext2,ext3).giis(不能恢复安装giis之前的文件).ext3grep(仅限ext3).R-linux(支持ext ...
- MySQL-5.7设置InnoDB表数据文件存储位置
1.表空间 Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间. 共享表空间以及独立表空间都是针对数据的存储方式而言的. 共享表空间: ...
- 依靠MySQL(frm、MYD、MYI)数据文件恢复
该方法并不是适用于所有MySQL数据库 此次恢复是朋友那边的数据查不了了,请求我支援,出于各种心理原因,我答应试试,于是就有了这篇文章和这次经历,废话不多说.... 物理条件:宿机是Ubuntu16. ...
随机推荐
- C++ GUI Qt4编程(08)-3.2spreadsheet-resource
1. C++ GUI Qt4编程第三章,图片使用资源机制法. 2. 步骤: 2-1. 在resource文件夹下,新建images文件,存放图片. 2-2. 新建spreadsheet.qrc文件,并 ...
- Microsoft office 2016 for Mac 破解版下载安装
原文地址:https://www.cnblogs.com/liyan-blogs/p/5498293.html 1. 下载 office 到我网盘下载Microsoft office 2016 for ...
- C++ 17的新标准
几个自己比较关注的C++新标准,说是17的标准,不过估计要拖到20才能真正支持 Module python的import之类的东西 解决问题: include头文件导致速度变慢的问题 目前 ...
- Android中改变Activity的不同icon:activity-alias
Android设置title中的Icon有几种方法,介绍如下: 一种是直接在AndroidManifest.xml文件中设置android:icon属性,这种方法简单有效,应该算是我们最常用的设置Ic ...
- ife task0003学习笔记(五):JavaScript面向对象
JavaScript 支持函数式编程.闭包.基于原型的继承等高级功能.在 Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象.而在 JavaScript 中,this ...
- 深入理解JavaScript系列(15):函数(Functions)
介绍 本章节我们要着重介绍的是一个非常常见的ECMAScript对象——函数(function),我们将详细讲解一下各种类型的函数是如何影响上下文的变量对象以及每个函数的作用域链都包含什么,以及回答诸 ...
- GridView .net访问
HTML code <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns=&qu ...
- MVC 下拉框获取值和赋值(多选)
1.视图 <div class="form-group"> @Html.LabelFor(m => m.Positions, new { @class = &qu ...
- LaTeX 修订
LaTeX多人协同编辑的时候,修订起来与word相比较而言麻烦一些.不过随着技术的发展和需求的增多,会有越来越多的工具支持LaTeX的修订. (1)在线LaTeX ShareLaTeX是一个很优秀的在 ...
- 弹性布局学习-详解 align-items(四)
目录 弹性布局学习-介绍(一) 弹性布局学习-详解 flex-direction[决定主轴的方向](二) 弹性布局学习-详解 justify-content(三) 弹性布局学习-详解 align-i ...