日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql导入frm文件_MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程

發(fā)布時(shí)間:2025/4/16 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql导入frm文件_MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方“業(yè)余草”,選擇“置頂公眾號(hào)”

第一時(shí)間獲取技術(shù)干貨和業(yè)界資訊!

昨天,微信群里一位網(wǎng)友問到:“備份的 frm文件恢復(fù),有的提示表不存在為什么”。關(guān)于這個(gè)問題,今天我們一起討論一下!

根據(jù)網(wǎng)友的截圖得知是他在恢復(fù)數(shù)據(jù)文件 .frm 時(shí),報(bào)出的異常。error: 1146: Table ‘xxx’ doesn’t exist

error: 1146: Table ‘xxx’ doesn’t exist

這個(gè)的原因其實(shí)很簡單,我先從頭給你說起。

MySQL 數(shù)據(jù)庫是具有持久化能力的。也就是說它的所有數(shù)據(jù),其實(shí)最終都是存儲(chǔ)在文件中的。如果你用的是 MyIsAM,則一張表數(shù)據(jù)文件有 3 個(gè)。

如果是 InnoDB,則一張表有 2 個(gè)數(shù)據(jù)文件。

且這些文件,一般在你安裝 MySQL 目錄中的 Data 目錄中。

如果你忘記了安裝的位置,或者忘記了配置的 Data 目錄在哪里,則可以根據(jù)下面的語句,找出數(shù)據(jù)文件的存放目錄。

上面這個(gè)截圖,就是我的測試數(shù)據(jù)庫對(duì)應(yīng)的數(shù)據(jù)文件的存放目錄。進(jìn)入到我的 /usr/local/var/mysql/ 目錄后,可以看到我的 xttblog 和 test 數(shù)據(jù)庫目錄。

根據(jù)列表文件中的后綴名都可以判斷出,我使用的是 InnoDB 存儲(chǔ)引擎。下面我們就以 InnoDB 為例,來說說數(shù)據(jù)文件的恢復(fù)教程。

首先,我們可以在其他測試環(huán)境,創(chuàng)建一個(gè) test 數(shù)據(jù)庫,并在里面創(chuàng)建 test_2019 數(shù)據(jù)表。里面插入一些測試數(shù)據(jù),包含建立的索引等。然后,我們將 test_2019.ibd 和 test_2019.frm 兩個(gè)文件復(fù)制到本地的其他目錄。

要恢復(fù) test_2019 這張表,我們先要用 SQL 創(chuàng)建出這種表。

主要是創(chuàng)建出一個(gè)同名的表,方便接下來的替換。字段內(nèi)容無所謂。

表創(chuàng)建出來之后,我們就可以到 /usr/local/var/mysql/test/ 替換 test_2019.ibd 和 test_2019.frm 兩個(gè)文件了。

接著重啟 MySQL 服務(wù)即可了。

有些人可能少了,上面創(chuàng)建表這一步。直接復(fù)制表數(shù)據(jù)文件進(jìn)行替換。結(jié)果就會(huì)導(dǎo)致上面的這個(gè)錯(cuò)誤。雖然,你能通過 show tables 看到這張表,但是當(dāng)你 select 這張表的時(shí)候,確報(bào)這張表不存在,error: 1146: Table ‘xxx’ doesn’t exist。

這也說明了針對(duì) InnoDB 存儲(chǔ)引擎,這樣的直接 copy 復(fù)制的方式不能恢復(fù)數(shù)據(jù)表。但如果是 MyIsAM 存儲(chǔ)引擎的話,直接復(fù)制是可以的(當(dāng)然數(shù)據(jù)庫版本必須要兼容)。這也是為什么一些文章說可以,一些文章說不可以。那是因?yàn)獒槍?duì)的存儲(chǔ)引擎不對(duì)!

但是,我也很納悶啊,數(shù)據(jù)文件都存在,為啥就提示表不存咋呢?

其實(shí)是可以通過 mysql-utilities 工具來恢復(fù)表結(jié)構(gòu)!我是 Mac 電腦,安裝命令如下:

恢復(fù)表結(jié)構(gòu)的 SQL 就很簡單了,看下面的命令:

注意,上面有兩個(gè)端口。–port=3309 這個(gè)指定的端口是你本地未被占用的端口。–user=root 表示以 root 用戶運(yùn)行。tail -n +12 表示跳過文件開頭的前 12 行。因?yàn)榍?12 行都是注釋。

最后,我要提示的一點(diǎn)是,注意數(shù)據(jù)庫的版本。如果版本不一致,也有可能導(dǎo)致恢復(fù)失敗!

總結(jié)

以上是生活随笔為你收集整理的mysql导入frm文件_MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。