寶塔面板用frm和ibd文件恢復(fù)Mysql數(shù)據(jù)
wordpress 2024-04-28編輯:重慶網(wǎng)站建設(shè)
WordPress
寶塔
面板
寫(xiě)這篇文章我是非常不情愿的,我現(xiàn)在是在寫(xiě)這篇文章,但是同時(shí)我也在恢復(fù)我服務(wù)器數(shù)據(jù)庫(kù)的數(shù)據(jù),出這篇文章也是在我的意料之外,由于我正在這件事類,我就出一版這樣的mysql.frm.ibd文件數(shù)據(jù)恢復(fù)教程,希望這次教程可以幫助到更多需要恢復(fù)的人,我現(xiàn)在是情緒暴漲
我先說(shuō)一下我的服務(wù)器崩潰經(jīng)過(guò),wordpress博客網(wǎng)站,寶塔輸入了rm指令導(dǎo)致全服務(wù)器文件被刪完,因?yàn)槲沂前⒗镌频姆?wù)器,所以我可以去找那邊的工程師來(lái)達(dá)到緊急修復(fù)(這里也建議在商業(yè)化云服務(wù)那里購(gòu)買(mǎi)主機(jī)的人一旦出現(xiàn)問(wèn)題就找服務(wù)商工程師),他們解決的很快,原本我以為服務(wù)器文件都刪除了的,一切都不剩,但是經(jīng)過(guò)了和工程師共同的努力,那邊提供了我一個(gè)暫時(shí)盤(pán),用于存儲(chǔ)丟失的數(shù)據(jù),最后就是我的所有數(shù)據(jù)都找回來(lái)了,但是,wordpress的數(shù)據(jù)庫(kù)文件如果不備份的話,那你直面的就不是sql文件,而是.frm與.ibd文件,
如果你不懂?dāng)?shù)據(jù)表創(chuàng)建的話,那你先看文章,如果看不懂或者一懂半懂就請(qǐng)自己去學(xué)習(xí)數(shù)據(jù)庫(kù)的相關(guān)知識(shí)!
這里順便介紹一下.frm文件與.ibd文件與.ibdata文件
.frm:與表相關(guān)的元數(shù)據(jù)信息都存放在.frm文件中,主要是表結(jié)構(gòu)的定義信息,不論什么存儲(chǔ)引擎,每一個(gè)表都會(huì)有一個(gè)以表名命名的.frm文件。
.ibd和.ibdata:兩者都是專屬于InnoDB存儲(chǔ)引擎的數(shù)據(jù)庫(kù)文件。
當(dāng)采用共享表空間時(shí)所有InnoDB表的數(shù)據(jù)均存放在.ibdata中,所以當(dāng)表越來(lái)越多時(shí),這個(gè)文件會(huì)變得很大;
相對(duì)應(yīng)的.ibd就是采用獨(dú)享表空間時(shí)InnoDB表的數(shù)據(jù)文件。
修改為獨(dú)享表空間的方法是在my.ini配置文件中添加/修改此條:
Innodb_file_per_table=1

mysql存儲(chǔ)的所有數(shù)據(jù)文件都在data,而我們只有.frm與.ibd

這些在數(shù)據(jù)庫(kù)里面可以看見(jiàn),但是打不開(kāi),打開(kāi)直接報(bào)錯(cuò),
那么廢話不多說(shuō)了,我們直接開(kāi)始教程!
Mysql 5.6或者5.7,我這里用的是5.7,因?yàn)楣P者專業(yè)是移動(dòng)應(yīng)用開(kāi)發(fā),所以學(xué)點(diǎn)Mysql不過(guò)分吧
我這邊用的是自己電腦windows下 做的 因?yàn)樗僮骺隙ㄒ确?wù)器方便 當(dāng)恢復(fù)回來(lái)后在導(dǎo)回服務(wù)器
我們先創(chuàng)建數(shù)據(jù)庫(kù)建議數(shù)據(jù)庫(kù)名跟生前的數(shù)據(jù)庫(kù)名是一樣的,比如我的小林博客生前數(shù)據(jù)庫(kù)名為pzo.cc,那莫這個(gè)時(shí)候新建也是pzo.cc
1.先隨意創(chuàng)建一張同名表
輸入指令:
CREATETABLE wp_commentmeta(comment_IDbigint)ENGINE=InnoDB;
2.關(guān)閉mysql服務(wù)
net stop mysql
或者點(diǎn)擊計(jì)算機(jī)--管理--服務(wù)--找到Mysql

然后關(guān)閉
3 復(fù)制備份的.frm覆蓋新建的表.frm
4 開(kāi)啟mysql服務(wù)
net start mysql
5.在mysql安裝目錄data文件夾下用文本編輯器打開(kāi).err文件
找到錯(cuò)誤日志

然后刪除當(dāng)前表
新建4個(gè)字段的同名表,這里建議大家用可視設(shè)計(jì)mysql的軟件來(lái)設(shè)置,比如Navicat,這樣的話就可以更方便,不會(huì)因?yàn)橛弥噶顒?chuàng)建數(shù)據(jù)表而出錯(cuò)
CREATE TABLEwp_commentmeta(
`meta_id` bigint(20) NOT NULL ,
`comment_id` bigint(20) NOT NULL ,
`meta_key` varchar(255) NULL,
`meta_value` longtext NULL,
)
ENGINE=InnoDB;
新建擁有4個(gè)字段的表
最主要的是這種樣式要跟生前一樣`meta_id` bigint,里面的長(zhǎng)度小數(shù)點(diǎn)主鍵外鍵都可以不管
然后再關(guān)閉mysql服務(wù)
net stop mysql
然后再?gòu)?fù)制備份的.frm覆蓋新建的表.frm
修改配置文件my.ini在[mysqld]下添加/修改innodb_force_recovery=6,一般這一段是沒(méi)有的,所以你用搜索功能搜索[mysqld],然后在下面添加innodb_force_recovery=6

啟動(dòng)mysql服務(wù),查看表結(jié)構(gòu),這個(gè)時(shí)候你可以看見(jiàn)表結(jié)構(gòu)已經(jīng)恢復(fù)
mysql> desc wp_commentmeta;

導(dǎo)出表結(jié)構(gòu)cmd
mysqldump -uroot -proot data_rec weibo_twets > e:tweets.sql
>后面是保存路徑和保存名稱以及后綴
在.sql文件中找到建表語(yǔ)句。
/*/或者也可以用數(shù)據(jù)庫(kù)管理軟件如navicat中找到這張表,在數(shù)據(jù)表右鍵對(duì)象信息中復(fù)制下DDL選項(xiàng)卡里的內(nèi)容。
停止mysql服務(wù),然后刪除這張表,用獲得的建表語(yǔ)句(/*/)新建這張數(shù)據(jù)表,也就是你剛剛復(fù)制的建表語(yǔ)句,加上ROW_FORMAT=COMPACT;將表結(jié)構(gòu)改為靜態(tài)表;
比如我復(fù)制的建表語(yǔ)句是
CREATE TABLE `wp_commentmeta` (
`meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
PRIMARY KEY (`meta_id`),
KEY `comment_id` (`comment_id`),
KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
那么添加ROW_FORMAT=COMPACT;后是這樣的:
CREATE TABLE `wp_commentmeta` (
`meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
PRIMARY KEY (`meta_id`),
KEY `comment_id` (`comment_id`),
KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci ROW_FORMAT=COMPACT;
然后在mysql使用命令提示符走這段建表語(yǔ)句就行了
注:一定要要有ROW_FORMAT=COMPACT;不然后面添加了.ibd文件依然打不開(kāi)
好,我們有了表結(jié)構(gòu)后,我們現(xiàn)在需要恢復(fù)表數(shù)據(jù)
分離表空間
使當(dāng)前.ibd的數(shù)據(jù)文件和.frm分離。
ALTER TABLE wp_commentmeta DISCARD TABLESPACE;
然后復(fù)制備份的.ibd文件覆蓋新的表數(shù)據(jù)
重啟mysql
導(dǎo)入這個(gè)表空間
ALTER TABLE wp_commentmeta IMPORT TABLESPACE;
然后這里數(shù)據(jù)就恢復(fù)了!
注:本次教程是本地恢復(fù),并不是線上恢復(fù),線上恢復(fù)是一樣的道理,也是一樣的指令,可以試試
服務(wù)范圍:WordPress搭建、WordPress主題開(kāi)發(fā)、WordPress二次開(kāi)發(fā)、WordPress插件開(kāi)發(fā)
其它服務(wù):網(wǎng)站建設(shè)、企業(yè)郵箱、數(shù)字證書(shū)ssl、400電話、
技術(shù)標(biāo)簽:企業(yè)網(wǎng)站、外貿(mào)網(wǎng)站、外貿(mào)商城、其它問(wèn)題
聯(lián)系方式:電話:18696588163 微信同號(hào)