mysql导入frm文件_MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程
点击上方“业余草”,选择“置顶公众号”
第一时间获取技术干货和业界资讯!
昨天,微信群里一位网友问到:“备份的 frm文件恢复,有的提示表不存在为什么”。关于这个问题,今天我们一起讨论一下!
根据网友的截图得知是他在恢复数据文件 .frm 时,报出的异常。error: 1146: Table ‘xxx’ doesn’t exist
这个的原因其实很简单,我先从头给你说起。
MySQL 数据库是具有持久化能力的。也就是说它的所有数据,其实最终都是存储在文件中的。如果你用的是 MyIsAM,则一张表数据文件有 3 个。
如果是 InnoDB,则一张表有 2 个数据文件。
且这些文件,一般在你安装 MySQL 目录中的 Data 目录中。
如果你忘记了安装的位置,或者忘记了配置的 Data 目录在哪里,则可以根据下面的语句,找出数据文件的存放目录。
上面这个截图,就是我的测试数据库对应的数据文件的存放目录。进入到我的 /usr/local/var/mysql/ 目录后,可以看到我的 xttblog 和 test 数据库目录。
根据列表文件中的后缀名都可以判断出,我使用的是 InnoDB 存储引擎。下面我们就以 InnoDB 为例,来说说数据文件的恢复教程。
首先,我们可以在其他测试环境,创建一个 test 数据库,并在里面创建 test_2019 数据表。里面插入一些测试数据,包含建立的索引等。然后,我们将 test_2019.ibd 和 test_2019.frm 两个文件复制到本地的其他目录。
要恢复 test_2019 这张表,我们先要用 SQL 创建出这种表。
主要是创建出一个同名的表,方便接下来的替换。字段内容无所谓。
表创建出来之后,我们就可以到 /usr/local/var/mysql/test/ 替换 test_2019.ibd 和 test_2019.frm 两个文件了。
接着重启 MySQL 服务即可了。
有些人可能少了,上面创建表这一步。直接复制表数据文件进行替换。结果就会导致上面的这个错误。虽然,你能通过 show tables 看到这张表,但是当你 select 这张表的时候,确报这张表不存在,error: 1146: Table ‘xxx’ doesn’t exist。
这也说明了针对 InnoDB 存储引擎,这样的直接 copy 复制的方式不能恢复数据表。但如果是 MyIsAM 存储引擎的话,直接复制是可以的(当然数据库版本必须要兼容)。这也是为什么一些文章说可以,一些文章说不可以。那是因为针对的存储引擎不对!
但是,我也很纳闷啊,数据文件都存在,为啥就提示表不存咋呢?
其实是可以通过 mysql-utilities 工具来恢复表结构!我是 Mac 电脑,安装命令如下:
恢复表结构的 SQL 就很简单了,看下面的命令:
注意,上面有两个端口。–port=3309 这个指定的端口是你本地未被占用的端口。–user=root 表示以 root 用户运行。tail -n +12 表示跳过文件开头的前 12 行。因为前 12 行都是注释。
最后,我要提示的一点是,注意数据库的版本。如果版本不一致,也有可能导致恢复失败!
mysql导入frm文件_MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程相关推荐
- mysql 导入.sql文件_MySQL导入.sql文件及常用命令
MySQL导入.sql文件及常用命令 在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> so ...
- mysql 导入8msql文件_MySQL导入大容量SQL文件数据问题
mysql在通过导入sql文件可能会出现下面二个问题: 1.如果sql文件过大,会出现"MySQL server has gone away"问题; - 2.如果sql文件数据有中 ...
- mysql导入ibdata文件_MySQL ibdata1文件迁移
目的:主机系统/var目录快满了,经查询最大的文件是mysql的ibdata1文件,有17G大小,故需要迁移这个文件到其他目录下,以释放/var目录空间. 1.先备份下数据库是个好习惯 # mysql ...
- 快速mysql导入sql文件_mysql肿么快速从sql文件导入数据库
我的个人实践是:phpmyadmin 导出 utf-8 的 insert 模式的 abc.sql ftp abc.sql 到服务器 ssh 到服务器 mysql -u abc -p use KKK(数 ...
- mysql导入dat文件_MySql导入和抽取大数量级文件数据
一.情况介绍 需要处理的文件是一个3.41G的csv格式文件,现在需要把它导入数据库,进行后续处理和分析. 二.导入数据 该文件数据量庞大,无法用excel或者editplus++之类普通软件打开,于 ...
- mysql导入本地文件_Mysql透过txt文件导入本地数据_mysql
有些时候可能需要从本地文件中导入数据到数据库中.mysql跟oracle一样也提供了相应的导入方式. 这几天刚好遇到过这样的需求,翻阅了一下文档找到相应的方法,记录一下: 数据库结构: mysql&g ...
- mysql导入csv文件_Mysql——将CSV文件导入表中
本教程展示如何用LOAD DATA INFILE 将 CSV 文件导入MySQL表中. LOAD DATA INFILE 语句可以读取文本文件并导入数据库中. 在导入文件之前,你需要做如下准备:导入文 ...
- mysql 导入tsv文件_MySQL导出TSV格式文件
可以使用mysqldump, 也可以使用mysql -e 使用mysqldump 因为要使用到 -T / --tab 参数, 需要先查看mysql设置的secure_file_priv mysql&g ...
- MySQL导入selectclass文件_MySQL执行Select语句将结果导出到文件的方法 – 疯狂的蚂蚁...
然而也会遇到的场景是,需要执行一个SQL语句,然后将SQL语句的结果输出到文件: 方法一:使用MySQL的select * into outfile '/tmp/rs.txt' from tb_nam ...
最新文章
- Mysql常用函数之Concat函数
- 【BZOJ2797】[Poi2012]Squarks 暴力乱搞
- VTK:单元格内部对象CellsInsideObject用法实战
- QT的QRadioTuner类的使用
- 14、java中的集合(1)
- sqlite3的sql语句用法总结与SQLite生成.db-journal文件问题【原创】
- 【kafka】kafka duplicate brokers in replica assignment
- 嘿,我这里有一个 Survey!
- Avalon and Indigo CTP- March 2005提供公开下载!
- 软件方法上竞赛自测题答案
- IE主页简单篡改修复
- 如何批量压缩图片大小?教你3个批量压缩图片的方法
- 92-Kafka详解
- 中国的美女为什么这样少的原因
- 【Linux】嵌入式Linux系统的移植(上篇:交叉编译器、连接方式)
- 面试前夕,我建议你还是先来看看阿里和京东面试都问些啥?
- 探索AI助手ChatGPT实际应用场景
- 《游戏学习》| 3d网页小游戏 | 公路赛车 源码
- mac备忘录html,mac备忘录怎么备份与恢复|mac备忘录的使用方法
- opcclient源码OPC客户端DA源码(c#开发)