主頁(yè) > 知識(shí)庫(kù) > mysql 從 frm 文件恢復(fù) table 表結(jié)構(gòu)的3種方法【推薦】

mysql 從 frm 文件恢復(fù) table 表結(jié)構(gòu)的3種方法【推薦】

熱門標(biāo)簽:高德地圖標(biāo)注中心個(gè)人注冊(cè) 外呼系統(tǒng)防封號(hào)違法嗎 如何在高德地圖標(biāo)注新地址 400電話辦理都選易號(hào)網(wǎng) 湘潭電銷機(jī)器人咨詢電話 寶應(yīng)電信400電話辦理費(fèi)用 高德地圖標(biāo)注模式 外呼系統(tǒng)服務(wù) 電銷機(jī)器人針對(duì)的

mysql 正常運(yùn)行的時(shí)候,查看 table 的結(jié)構(gòu)并不是困難的事。

 但是有時(shí) mysql 發(fā)生故障,這種方法便不再可行。

當(dāng)遇到故障,通常使用新的 mysql 實(shí)例來(lái)恢復(fù)當(dāng)前的數(shù)據(jù)。

建表是非常重要的步驟,我們必須有其它的方法來(lái)尋找 table 的結(jié)構(gòu)。

table 結(jié)構(gòu)定義在哪里

通常關(guān)注的用戶數(shù)據(jù),底層都實(shí)際存儲(chǔ)在 mysql 數(shù)據(jù)目錄。
 其它的元數(shù)據(jù)也不例外,比如 table 表結(jié)構(gòu)的定義。

mysql 數(shù)據(jù)目錄文件結(jié)構(gòu)是非常清晰的,

•目錄對(duì)應(yīng)數(shù)據(jù)庫(kù)
•frm 文件存儲(chǔ)了 table 結(jié)構(gòu)的定義
•ibdata 文件存儲(chǔ)了 mysql 的元數(shù)據(jù)及其它

table 定義的結(jié)構(gòu),就存在于 frm 文件中,當(dāng)然管理元數(shù)據(jù)的 ibdata 也會(huì)有記錄。

當(dāng)存在 frm 文件的時(shí)候,恢復(fù)表結(jié)構(gòu)相對(duì)容易;
 但是如果執(zhí)行了 drop table,便刪除了 frm 文件,本文所提供的方法就愛(ài)莫能助了。
 這種情況下,可以嘗試從 ibdata 恢復(fù)表結(jié)構(gòu),這暫時(shí)不在下面的討論范圍內(nèi)。

解析 table 結(jié)構(gòu)

下面介紹 3 種方式,從 frm 文件中,解析得到 create table 命令。

mysqlfrm

mysqlfrm 是 mysql utilities 工具集 中的其中之一,
 用于分析 frm 文件生成 create table 命令。
 目前已經(jīng)不再更新,部分功能并入了新版本的 mysql shell(version 8 及以后)。

mysql utilities 需要 python2 環(huán)境,安裝非常簡(jiǎn)單。

$ tar -xvzf mysql-utilities-1.6.5.tar.gz
$ cd mysql-utilities-1.6.5
$ python setup.py build
$ python setup.py install

mysqlfrm 支持兩類模式來(lái)解讀 frm:

直接分析

這種模式比較直接,逐個(gè)字節(jié)分析 frm 文件,盡可能的提取信息。

這種模式下,需要使用 --diagnostic 參數(shù)。

$ mysqlfrm --diagnostic /data/sakila/actor.frm

借助 mysql 實(shí)例分析

這種模式,借助新的 mysql 實(shí)例,從中完成 frm 的分析工作。
 可以用兩種方式來(lái)指定,如何開(kāi)啟新的 mysql 實(shí)例。

一,從當(dāng)前的 mysql 服務(wù)中 spawn,使用 --server 指定 mysql 服務(wù)

$ mysqlfrm --server=root:pass@localhost:3306 --port=3310 /data/sakila/actor.frm

二,啟動(dòng)新的 mysql 實(shí)例,使用 --basedir 指定 mysql 程序路徑

$ mysqlfrm --basedir=/usr/local/bin/mysql --port=3310 /data/sakila/actor.frm

--port 給新的實(shí)例指定端口,是為了避免與當(dāng)前的 3306 端口出現(xiàn)沖突。

dbsake

這是偶然發(fā)現(xiàn)的一個(gè)工具,文檔中它這樣介紹自己:

dbsake - a (s)wiss-(a)rmy-(k)nif(e) for MySQL

作者一定是一個(gè)對(duì) mysql 很有心得的人,工具從下載,安裝到使用,簡(jiǎn)單,利落。

$ curl -s get.dbsake.net > dbsake
$ chmod u+x dbsake
$ ./dbsake frmdump [frm-file-path]

online service

有一些在線的服務(wù),也關(guān)注這樣的問(wèn)題。
 使用過(guò)的twindb online,體驗(yàn)非常好,相關(guān)的工具集也很棒。

從 Recover Structure -> from .frm file 入口,上傳 frm,就可以得到 create table 命令。

寫在最后

在使用上,可以多個(gè)工具都測(cè)試一下,對(duì)比哪個(gè)工具恢復(fù)的命令更為完善可取,選擇最佳的。

參考:

•mysqlfrm official doc

•dbsake project doc

總結(jié)

以上所述是小編給大家介紹的mysql 從 frm 文件恢復(fù) table 表結(jié)構(gòu)的3種方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • MySQL使用全庫(kù)備份數(shù)據(jù)恢復(fù)單表數(shù)據(jù)的方法
  • MySQL如何恢復(fù)單庫(kù)或單表,以及可能遇到的坑
  • MySQL單表恢復(fù)的步驟
  • 從MySQL全庫(kù)備份中恢復(fù)某個(gè)庫(kù)和某張表的方法
  • InnoDB 類型MySql恢復(fù)表結(jié)構(gòu)與數(shù)據(jù)
  • MySQL 從全庫(kù)備份中恢復(fù)指定的表和庫(kù)示例
  • MySQL單表ibd文件恢復(fù)方法詳解
  • MYSQL使用.frm恢復(fù)數(shù)據(jù)表結(jié)構(gòu)的實(shí)現(xiàn)方法
  • 用mysqldump備份和恢復(fù)指定表的方法
  • MySQL 利用frm文件和ibd文件恢復(fù)表數(shù)據(jù)

標(biāo)簽:黃山 宿遷 賀州 黔南 南充 佛山 馬鞍山 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql 從 frm 文件恢復(fù) table 表結(jié)構(gòu)的3種方法【推薦】》,本文關(guān)鍵詞  mysql,從,frm,文件,恢復(fù),table,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql 從 frm 文件恢復(fù) table 表結(jié)構(gòu)的3種方法【推薦】》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于mysql 從 frm 文件恢復(fù) table 表結(jié)構(gòu)的3種方法【推薦】的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章