mysql從frm文件恢復table表結(jié)構(gòu)的方法有哪些

這篇文章主要為大家展示了“MySQL從frm文件恢復table表結(jié)構(gòu)的方法有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“mysql從frm文件恢復table表結(jié)構(gòu)的方法有哪些”這篇文章吧。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供海興企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務。10年已為海興眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。

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

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

當遇到故障,通常使用新的 mysql 實例來恢復當前的數(shù)據(jù)。

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

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

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

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

?目錄對應數(shù)據(jù)庫
?frm 文件存儲了 table 結(jié)構(gòu)的定義
?ibdata 文件存儲了 mysql 的元數(shù)據(jù)及其它

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

當存在 frm 文件的時候,恢復表結(jié)構(gòu)相對容易;
 但是如果執(zhí)行了 drop table,便刪除了 frm 文件,本文所提供的方法就愛莫能助了。
 這種情況下,可以嘗試從 ibdata 恢復表結(jié)構(gòu),這暫時不在下面的討論范圍內(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)境,安裝非常簡單。

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

mysqlfrm 支持兩類模式來解讀 frm:

直接分析

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

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

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

借助 mysql 實例分析

這種模式,借助新的 mysql 實例,從中完成 frm 的分析工作。
 可以用兩種方式來指定,如何開啟新的 mysql 實例。

一,從當前的 mysql 服務中 spawn,使用 --server 指定 mysql 服務

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

二,啟動新的 mysql 實例,使用 --basedir 指定 mysql 程序路徑

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

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

dbsake

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

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

作者一定是一個對 mysql 很有心得的人,工具從下載,安裝到使用,簡單,利落。

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

online service

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

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

以上是“mysql從frm文件恢復table表結(jié)構(gòu)的方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當前文章:mysql從frm文件恢復table表結(jié)構(gòu)的方法有哪些
網(wǎng)頁網(wǎng)址:http://muchs.cn/article18/jpepgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、全網(wǎng)營銷推廣網(wǎng)站制作、網(wǎng)站排名、手機網(wǎng)站建設(shè)、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司