参考文档 http://www.cnblogs.com/logo-fox/p/6210533.html

数据库只剩  数据库目录中的 .frm 和 .ibd文件 时候的修复

.frm  表结构

.ibd  表的元数据

下面从已经拥有表结构开始恢复

1 新建一个表(test库),将表结构导入表中,此时,表只有表结构,没有数据

2 分离表,ALTER TABLE  tbname DISCARD TABLESPACE;

此时表tbname 的ibd文件会被删除(数据库的数据存储目录 ,默认为/var/lib/mysql)

3 将保存有数据的ibd文件复制到数据库目录的下相应的库中(/var/lib/mysql/test/)

修改新复制的ibd文件权限,chown mysql:mysql *

4  恢复表  ALTER TABLE tbname IMPORT TABLESPACE;

正常情况下不会报错,但是如果报这个

Schema mismatch (Table has ROW_TYPE_COMPACT row format, .ibd file has ROW_TYPE_DYNAMIC row format

表类型错误,在传建表时候 加上这个  ROW_FORMAT=DYNAMIC;

或者 alter table tb_name row_format=DYNAMIC;

然后再执行  ALTER TABLE tbname IMPORT TABLESPACE;

5 如果还不成功可能是数据库版本的问题。我在5.6上执行时报这样的错

换在5.7上执行 import 时 报 lost connection to mysql server during query

此时数据已经恢复。

一下示例一个批量恢复数据库的简单脚本

#!/usr/bin/bash

#数据库的批量恢复

#在MySQL5.6及以下版本中恢复失败的话请在5.7版本中尝试。

#此恢复方式仅适用于innodb引擎。

#将此脚本与

#(1)含有表结构的sql文件

#(2)需要恢复的城市区县的IBD文件放在一起

# 需要恢复的区县名称

city=(

hengyangxian

qidong

)

#数据库的存储目录,在数据库的配置文件my.cnf中[mysqld]下的datadir配置

dbpath=/usr/local/mysql/data/#数据库用户

dbuser=root

#数据库密码

dbpd=123456#存储恢复数据的数据库名称

#最好新建一个库用来专门存储恢复的数据

# create database yy default character set utf8;

dbname=yy

#判断命令是否执行成功

reback(){if [ $? = 0 ]; then

echo -e "\033[32;1m 【 执行成功 】 \033[0m"

else

echo -e "\033[31;1m 【 执行失败 】 \033[0m"exit1

fi}

#判断恢复数据库所需文件是否缺失for c in${city[@]};do

if [ ! -f v9_${c}.sql ];then

echo -e "\033[31;1m 【 v9_${c}.sql 文件不存在 】 \033[0m"exit1

fi

if [ ! -f v9_${c}_data.sql ];then

echo -e "\033[31;1m 【 v9_${c}_data.sql 文件不存在 】 \033[0m"exit1

fi

if [ ! -f v9_${c}.ibd ];then

echo -e "\033[31;1m 【 v9_${c}.ibd 文件不存在 】 \033[0m"exit1

fi

if [ ! -f v9_${c}_data.ibd ];then

echo -e "\033[31;1m 【 v9_${c}_data.ibd 文件不存在 】 \033[0m"exit1

fi

done# 导入表结构,并且分离表for c in${city[@]};domysql-u$dbuser -p$dbpd $dbname

mysql-u$dbuser -p$dbpd $dbname

mysql-u$dbuser -p$dbpd -e "use $dbname ; ALTER TABLE v9_${c} DISCARD TABLESPACE;"

echo -e "\033[36;1m 【 分离表 v9_${c} 】 \033[0m"reback

mysql-u$dbuser -p$dbpd -e "use $dbname ; ALTER TABLE v9_${c}_data DISCARD TABLESPACE;"

echo -e "\033[36;1m 【 分离表 v9_${c} 】 \033[0m"rebackdone# 将ibd文件复制到数据库目录下cp -arf *.ibd ${dbpath}${dbname}chmod -R 777$dbpath

#表结构和元数据结合for c in${city[@]};domysql-u$dbuser -p$dbpd -e "use $dbname ; ALTER TABLE v9_${c} IMPORT TABLESPACE;"

echo -e "\033[36;1m 【 合成表 v9_${c} 】 \033[0m"reback

mysql-u$dbuser -p$dbpd -e "use $dbname ; ALTER TABLE v9_${c}_data IMPORT TABLESPACE;"

echo -e "\033[36;1m 【 合成表 v9_${c}_data} 】 \033[0m"rebackdone

===============END====================

mysql ibd恢复数据_mysql通过ibd恢复数据相关推荐

  1. mysql .ibd恢复数据_mysql 根据ibd文件恢复数据

    恢复 recover_user.ibd 文件 1.创建数据库recover_ibd 2.创建相同结构表(若有其他库中相同结构表,可根据show create table recover_user;获取 ...

  2. mysql没开启binlog恢复数据_MySQL:binlog恢复数据

    如果删库了,先别急着跑路. binlog是MySQL的二进制日志,会记录我们的操作.删除的数据可以通过binlog恢复,不过要先开启binlog功能,编辑my.cnf文件完成下面配置后重启. log- ...

  3. mysql数据库恢复策略_MySQL 备份和恢复策略(一)

    在数据库表丢失或损坏的情况下,备份你的数据库是很重要的.如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态.本文主要对MyISAM表做备份恢复. 备份策略一:直接拷贝数据 ...

  4. mysql空洞数据_Mysql 表空间和 数据页空洞 艾薇Ivy

    一.表空间 1.表空间: innodb 引擎存储的最高层: 存放所有的数据 2.独立表空间:Mysql 版本5.6 后默认开启的单表单空间 (1)Innodb 默认存储引擎页的大小为 16K :默认表 ...

  5. mysql scrapy 重复数据_mysql数据库如何处理重复数据?

    前言 前段时间,很多人问我能不能写一些数据库的文章,正好自己在测试mysql数据库性能的时候,出现了一个问题,也就是出现了很多重复的数据,想起来自己long long ago写过一篇类似的,仅此就拿来 ...

  6. mysql 插入记录慢_mysql:insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决...

    问题: 最近在做性能测试,造数据,发现insert好慢,只有几十条每秒,很奇怪,最后再网上找到了原因. 网文如下: MY SQL insert 速度过慢 最近在用MySQL做存储,测试中发现插入数据太 ...

  7. mysql字符集修改保存_mysql更改已有数据表的字符集,保留原有数据内容

    环境:在应用开始阶段没有正确的设置字符集,在运行一段时间以后才发现存在不能满足需求需要调整,又不想丢弃这段时间的数据,那么就需要进 行字符集的修改.字符集的修改不能直接通过"alter da ...

  8. mysql 复制数据_MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库.使用以下方法,可以非常简单地实现. 假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb.步骤如 ...

  9. mysql怎么保证热点数据_MySQL里有2000w数据,redis中只存20w数据,如何保证redis中数据都是热点数据...

    计算20w的热点数据占据内存的大小.然后在Redis中,配置最大内存容量,在redis.conf文件maxmemory 标签中配置. 当redis内存数据大小上升到一定大小的时候,就会施行数据淘汰策略 ...

  10. mysql 取差值_mysql计算两条数据差值,求大神解答

    1.创建3张表: CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `warter` int(11) DEFAULT NULL, `r ...

最新文章

  1. MySQL写十行_python 十行代码系列(四):操作mysql插入测试数据
  2. Linux 模拟 鼠标 键盘 事件
  3. 开发kendo-ui弹窗组件
  4. 【java的socket编程】结合多线程Thread实现通信(使用线程池和非线程池对比)、java开发UDP/IP网络程序
  5. mp4格式文件转码后处理(qt-faststart工具介绍)
  6. 网络登录_发布猫系统登录免费网络推广-绥芬河推广资讯
  7. python字典和集合双向索引_Python字典和集合
  8. 正则表达式:获取一串字符串中,某个字符串到某个字符串之间的字符串,不包含左右,只取中间
  9. 新一代数据库技术在双11中的黑科技
  10. UIView 的旋转和缩放
  11. 死磕Mosek!新mosek学习笔记1:VS项目配置。
  12. debian 屌丝日记
  13. 职场干货 | 如何让你的自我介绍,快速打动面试官
  14. Unity UGUI 检测按钮的按下与抬起
  15. 小木工 ____农民工纪事之一
  16. 强化学习的概念及学习过程
  17. vs2010无法打开项目文件,此安装不支持该项目类型解决方法
  18. Opencv -- 18图像像素类型转换与归一化
  19. 蓝牙协议分析(2)_协议架构
  20. 图像的二值化之python+opencv

热门文章

  1. -1073740791 (0xC0000409)错误,附加内容:qt布局、页面跳转
  2. 网络重置后,WiFi模块没了,网络适配器感叹号
  3. 这48条人际关系准则,会真正提升你的社交情商
  4. vue项目接口地址暴露_vue组件暴露和.js文件暴露接口的操作方法
  5. 博科查看光功率_博科系交换机光模块信号强度查看
  6. 三合一DNC(发那科Fanuc 三菱Mitsubishi 兄弟brother),(上传,下发,删除)NC程序
  7. 计算机科学导论任务书,计算机科学导论论文提纲格式范文 计算机科学导论论文提纲如何写...
  8. 数学建模论文的技巧与操作
  9. 2021保研夏令营—中科院计算所,自动化所,上海交大计算机
  10. 比较JPG、PNG、GIF、BMP图片格式