zoukankan      html  css  js  c++  java
  • 依靠MySQL(frm、MYD、MYI)数据文件恢复

                     

                          该方法并不是适用于所有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   按回车即可

    欢迎加入QQ群一起讨论Linux、开源等技术

  • 相关阅读:
    WPF Caliburn 学习笔记(五)HelloCaliburn
    MSDN 教程短片 WPF 20(绑定3ObjectDataProvider)
    MSDN 教程短片 WPF 23(3D动画)
    比赛总结一
    HDU3686 Traffic Real Time Query System
    HDU3954 Level up
    EOJ382 Match Maker
    UESTC1565 Smart Typist
    HDU3578 Greedy Tino
    ZOJ1975 The Sierpinski Fractal
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/11928888.html
Copyright © 2011-2022 走看看