该方法并不是适用于所有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 安装 wkhtmltox

    linux安装wkhtmltox wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox- ...

  2. 2018年5月20日--西安icpc邀请赛试题一览

    热身赛 正式赛 A题,样例不代表后台数据,出题人把题意和后台数据代表的意思搞差了! B: C: D-E F f-G G G-H H-I I-J J-k K-2

  3. [ 转载 ]hashCode及HashMap中的hash()函数

    hashCode及HashMap中的hash()函数   一.hashcode是什么 要理解hashcode首先要理解hash表这个概念 1. 哈希表 hash表也称散列表(Hash table),是 ...

  4. 5 webpack-dev-server的常用命令参数--open --port 3000 --contentBase src --hot

    --open 自动打开浏览器 --port 3000 指定端口3000 --contentBase src 内容的根路径 --hot 热重载,热更新.打补丁,实现浏览器的无刷新

  5. Vue.js项目中使用 Ajax 和 FormDate 对象上传文件

    let param = new FormData(); param.append("paths", this.ruleForm.uploadPath); param.append( ...

  6. TreadPool

    ThreadPool概述 提供一个线程池,该线程池可用于执行任务.发送工作项.处理异步 I/O.代表其他线程等待以及处理计时器. 创建线程需要时间.如果有不同的小任务要完成,就可以事先创建许多线程/在 ...

  7. delphi TAdoQuery组件的close方法可能导致”列名无效“错误

    1,故障现象 一次程序运行,出现如下错误: 对应代码如下: 2,故障分析 Query_alert_2的语句在查询分析器中单独执行是正常的.排除语句出错. 如果注解掉Query_alert_1,则错误变 ...

  8. redis安装,以及开机自动启动

    tcl安装 # wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz# tar -xzvf tcl8.6.1-src.tar.gz ...

  9. Java8-Lambda-No.04

    public class Lambda4 { static int outerStaticNum; int outerNum; void testScopes() { int num = 1; Lam ...

  10. redis使用例子

    package test.iafclub.redis; import java.util.ArrayList; import java.util.HashMap; import java.util.I ...