该方法并不是适用于所有MySQL数据库

此次恢复是朋友那边的数据查不了了,请求我支援,出于各种心理原因,我答应试试,于是就有了这篇文章和这次经历,废话不多说....

物理条件:宿机是Ubuntu16.4版本

我的vmware:15.5

我的虚机系统:CentOS7.4.1708

我的虚机上MySQL版本:mysql  Ver 14.14 Distrib 5.5.59, for Linux (x86_64) using readline 5.1

朋友的MySQL版本:mysqld  Ver 5.5.30-MariaDB for Win64 on x86

朋友提供的文件,以这一个来说明恢复过程,如要恢复这4个文件一个都不能少

数据库安装

wget https://dev.mysql.com/get/Downloads/MySQL-5.5/MySQL-client-5.5.59-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/MySQL-server-5.5.59-1.el7.x86_64.rpm
yum -y install MySQL-server-5.5.59-1.el7.x86_64.rpm
yum -y install MySQL-client-5.5.59-1.el7.x86_64.rpm
systemctl start mysql
systemctl enable mysql
mysql -uroot -p #首次登录密码为空

修改MySQL登录密码
set password=password('123456');

授权
grant all privileges on *.* to 'root'@'localhost' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';

============================== 扩展(查看创建表时的SQL语句)=================================================

安装mysqlfrm(查看frm文件的作用)
#下载地址 https://downloads.mysql.com/archives/utilities/
#Product Version:1.6.5
#Operating System:Linux - Generic

wget https://cdn.mysql.com/archives/mysql-utilities/mysql-utilities-1.6.5.tar.gz
tar -zxvf mysql-utilities-1.6.5.tar.gz
cd mysql-utilities-1.6.5
python ./setup.py build
python ./setup.py install

使用mysqlfrm查看要恢复的frm文件
命令格式:mysqlfrm --basedir=数据库安装目录 --port=数据库端口 --user=数据库用户 --diagnostic ./frm文件的具体路径 >转换成.sql,该名字可自定义
        mysqlfrm --basedir=/usr --port=3306 --user=root --diagnostic ./event20191004_0.frm >10.sql

查看10.sql文件
CREATE TABLE `event20191004_0` (
`lid` bigint(20) DEFAULT NULL,
`imergecount` int(11) DEFAULT NULL,
`ceventname` varchar(765) NOT NULL,

......

.....

`ceventmsg` varchar(24576) NOT NULL,
KEY `lidINDEX` (`lid`),
KEY `ltimeINDEX` (`lrecepttime`),
KEY `cdevipINDEX` (`cdevip`)
) ENGINE=MyISAM AVG_ROW_LENGTH = 1000;

修复数据表:

use database_name;
repair table tab_name;

===============================================================================

数据恢复

第一步:将要恢复的frm、MYD、MYI、db.opt放到我的虚机中。

第二步:登录进数据库中随意创建一个库,这里我创建的是opop库。

第三步:将frm、MYD、MYI、db.opt放到opop的目录中,替换opop目录中的所有,如下图所示

第四步:修改这4个文件的属主和数组为mysql,如下图所示(如不修改权限在select数据表时会提示Table '表名' is read only)

第五步:登录数据库,并进入到opop库中查看所有表,因为原本只有一张表,所以下图只显示了一张

因为表很大,在我打开时我的机器整体卡了几分钟,所以我就取消了,如下图

 查看下表结构

 将识别到的event20191004_0表通过mysqldump以.sql文件导出来(此次是以1.sql命名),然后把.sql文件拿到其他服务器上进行source加载下即可

恢复:

任意创建一个数据库,比如创建了一个aa库,use到aa库中然后执行  sourcr  /xx/xx/1.sql   按回车即可

依靠MySQL(frm、MYD、MYI)数据文件恢复的更多相关文章

  1. 数据库是.frm,.myd,myi备份如何导入mysql (转)

    今天找了个案例,琢磨了半天,才分析大概出来,数据库是.frm,.myd,myi备份,不会导入mysql,到网上找了些资料,导入成功. 首先说一下这几种文件是干什么的,*.frm是描述了表的结构,*.M ...

  2. 利用XtraBackup给MYSQL热备(基于数据文件)

    利用XtraBackup给MYSQL热备(基于数据文件) By JRoBot on 2013 年 11 月 26 日 | Leave a response 利用XtraBackup给MYSQL热备(基 ...

  3. mysql之 共享表空间与独立表空间、frm,MYD,MYI.idb,par文件说明

    一.共享表空间与独立表空间MySQL5.5默认是共享表空间 ,5.6中,默认是独立表空间. 共享表空间:ibdata1是InnoDB的共享表空间,默认配置是把全部表空间存放到ibdata1中,因此而造 ...

  4. .frm,.myd,myi转换为.sql导入数据库

    先说说这几种文件是干什么的: *.frm是描述了表的结构, *.myd保存了表的数据记录, *.myi则是表的索引. 其实一个.frm文件就是对应的数据库中的一个表,表示数据表的表结构. .MYD文件 ...

  5. mysql通过数据文件恢复数据方法

    情况描述:服务器硬盘损坏,服务器换了个新硬盘 ,然后老硬盘插在上面.挂载在这台机器.可以从老硬盘里面拿到数据.只拿到了里面的mysql数据文件夹,把数据文件夹覆盖新的服务器mysql数据文件夹 启动报 ...

  6. MySQL数据库---配置文件及数据文件

    1.主配置文件 #/usr/local/mysql/bin/mysqld --verbose --help |grep -A 1 'Default options' #cat /etc/my.cnf ...

  7. mysql用户授权及数据备份恢复

    用户授权与权限撤销 修改数据库管理员从本机登陆的密码测试: mysqladmin -hlocalhost -uroot -p password "新密码" Enter passwo ...

  8. 模拟误删除InnoDB ibdata数据文件恢复

    注意:假如误删除 ibdata文件 ,此时千万别把mysqld进程杀死,否则没法挽救. 1.模拟删除ibdata数据文件和重做日志文件: [root@hcdb0 data]# lltotal 4219 ...

  9. linux下误删数据文件恢复

    linux下文件被删除能够用非常多工具进行恢复.比如undelete(适合ext2,ext3).giis(不能恢复安装giis之前的文件).ext3grep(仅限ext3).R-linux(支持ext ...

随机推荐

  1. Linux学习笔记(十)shell基础:历史命令、命令补全、输出重定向、输出重定向

    一.历史命令 history [选项] [历史命令保存文件] -c 清空历史命令 -w 吧缓存中的历史命令写入历史命令保存文件~/.bash_history中 系统会默认将上次注销登录(正确退出)之前 ...

  2. 关闭安装包更新使用YUM在Linux中(RHEL / CentOS / Fedora)

    YUM (Yellowdog Updater Modified)  是一个开源的命令行工具,以及基于图形的软件包管理工具, 用于基于 RPM (RedHat Package Manager) 的 Li ...

  3. HDU 6741 树上删叶子节点博弈

    假设现在有一颗树A 我们在他非叶子节点上加一个点变成树B 则此时树B必为先手必胜 假设A为先手必胜 则先手直接把加入的点一同删去 假设A为先手必败 则先手可以只删加入的点 与后手位置互换 把必败态留给 ...

  4. MySQL进阶8 分页查询(limit) - 【SQL查询语法执行顺序及大致结构】- 子查询的3个经典案例

    #进阶8 分页查询 /* 应用场景: 当要显示的数据,一页显示不全,需要分页提交sql请求 语法: select 查询列表 #7 from 表1 #执行顺序:#1 [join type join 表2 ...

  5. script标签中的async、defer属性

    Script标签是我们常用的引用js脚本的一种方式. 撸代码的时候,我们常常只写src属性,直接忽略其他属性. 最近发现了2个可以利用的属性:async.defer. 顾名思义async就是异步,在不 ...

  6. WCF之WebService

    一.Web Services简介 Web Services是支持客户端与服务器通过网络互操作的一种软件系统,是一组可以通过网络调用的应用程序API.在Web Services中主要到SOAP/UDDI ...

  7. 关于EZDML数据库表结构制作设计工具使用踩的坑

    我使用的是一款EZDML的数据库表结构制作设计工具 最开始在数据库创建数据库名为personalmall,基字符集为默认,数据库排序规则也是默认,创建完成之后 去EZDML生成SQL 点击执行sql ...

  8. mysql数据库NOW()和DATE_FORMAT()日期字段和当前日期作比较

    select * from xxxx where date_format(APPOINTMENT,'%Y-%m-%d-%H-%i-%S') < date_format(now(),'%Y-%m- ...

  9. webdriver对各种浏览器的支持

    1.Firefox WebDriver实现了FireFoxDriver,无需用户下载FireFoxDriver. 优点:FireFoxDriver对页面的自动化测试支持得比较好,很直观地模拟页面的操作 ...

  10. [Javascript] Nested generators

    To see how to call another generator inside a generator: function* numbers () { ; ; yield* moreNumbe ...