依靠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、開源等技術


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM