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、开源等技术

  • 相关阅读:
    PDO 数据访问抽象层
    注册审核、批量删除
    分页查询
    会话用法
    封装成类
    多条件查询(复选框条件)
    IP子网划分
    redhat 用yum安装的apache、mysql一般默认安装在哪个目录下?
    nslookup
    linux 设置时间
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/11928888.html
Copyright © 2011-2022 走看看