通過(guò)frm&ibd 恢復(fù) Mysql ibdata 丟失或損壞的數(shù)據(jù)教程_MySQL教程
推薦:mysql數(shù)據(jù)庫(kù)ROOT賬號(hào)權(quán)限丟失問(wèn)題解決方法ROOT賬號(hào)權(quán)限丟失了我們就幾乎不能做很多的事情了,今天本文章來(lái)為各位介紹mysql數(shù)據(jù)庫(kù)ROOT賬號(hào)權(quán)限丟失問(wèn)題解決方法吧,希望文章可以幫助到各位. 數(shù)據(jù)庫(kù)的操作軟件有很多,在線的話phpmyadmin是非常不錯(cuò)的軟件, 比較坑爹的是我的一個(gè)機(jī)器用的是amh的面板,遇到了一件
有時(shí)候mysql沒(méi)有做好數(shù)據(jù)備份,或者被數(shù)據(jù)管理員誤刪,或者ibdata損壞了我們?nèi)绾位謴?fù)呢?別怕,只要有部分frm、ibd存在,下面就是恢復(fù)教程。
mysql存儲(chǔ)在磁盤中,各種天災(zāi)人禍都會(huì)導(dǎo)致數(shù)據(jù)丟失。大公司的時(shí)候我們常常需要做好數(shù)據(jù)冷熱備,對(duì)于小公司來(lái)說(shuō)要做好所有數(shù)據(jù)備份需要支出大量的成本,很多公司也是不現(xiàn)實(shí)的。萬(wàn)一還沒(méi)有做好備份,數(shù)據(jù)被誤刪除了,或者ibdata損壞了怎么辦呢?別擔(dān)心,只要有部分的frm、ibd存在就可以恢復(fù)部分?jǐn)?shù)據(jù)。
注意:
一、這個(gè)是對(duì)innodb的數(shù)據(jù)恢復(fù)。myisam不需要這么麻煩,只要數(shù)據(jù)文件存在直接復(fù)制過(guò)去就可以。
二、大家的mysql數(shù)據(jù)庫(kù)必須是按表存放數(shù)據(jù)的,默認(rèn)不是,但是大家生產(chǎn)肯定是按分表設(shè)置的吧,如果不是,不好意思,這個(gè)方法不能恢復(fù)你的數(shù)據(jù)。my.ini的設(shè)置為
innodb_file_per_table = 1。
1、找回表結(jié)構(gòu),如果表結(jié)構(gòu)沒(méi)有丟失直接到下一步
a、先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)必須是沒(méi)有表和任何操作的。
b、創(chuàng)建一個(gè)表結(jié)構(gòu),和要恢復(fù)的表名是一樣的。表里的字段無(wú)所謂。一定要是innodb引擎的。CREATE TABLE `weibo_qq0`( `weiboid` bigint(20)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
c、關(guān)閉mysql, service mysqld stop;
d、用需要恢復(fù)的frm文件覆蓋剛新建的frm文件;
e、修改my.ini 里 innodb_force_recovery=1 , 如果不成修改為 2,3,4,5,6。
f、 啟動(dòng)mysql,service mysqld start;show create table weibo_qq0 就能li到表結(jié)構(gòu)信息了。
2、找回?cái)?shù)據(jù)。記得上面把 innodb_force_recovery改掉了,需要注釋掉,不然恢復(fù)模式不好操作。 這里有個(gè)關(guān)鍵的問(wèn)題,就是innodb里的任何數(shù)據(jù)操作都是一個(gè)日志的記錄點(diǎn)。也就是如果我們需要數(shù)據(jù)恢復(fù),必須把之前的表的數(shù)據(jù)的日志記錄點(diǎn)添加到一致。
a、建立一個(gè)數(shù)據(jù)庫(kù),根據(jù)上面導(dǎo)出的創(chuàng)建表的sql執(zhí)行創(chuàng)建表。
b、找到記錄點(diǎn)。先要把當(dāng)前數(shù)據(jù)庫(kù)的表空間廢棄掉,使當(dāng)前ibd的數(shù)據(jù)文件和frm分離。 ALTER TABLE weibo_qq0 DISCARD TABLESPACE;
c、把之前要恢復(fù)的 .ibd文件復(fù)制到新的表結(jié)構(gòu)文件夾下。 使當(dāng)前的ibd 和frm發(fā)生關(guān)系。ALTER TABLE weibo_qq0 IMPORT TABLESPACE; 結(jié)果不出意外肯定會(huì)報(bào)錯(cuò)。就和我們開展數(shù)據(jù)開始說(shuō)的那樣,數(shù)據(jù)記錄點(diǎn)不一致。我們看看之前ibd記錄的點(diǎn)在什么位置。開始執(zhí)行 import tablespace,報(bào)錯(cuò) ERROR 1030 (HY000): Got error -1 from storage engine。找到mysql的錯(cuò)誤日志,InnoDB: Error: tablespace id in file ‘.testweibo_qq0.ibd’ is 112, but in the InnoDB InnoDB: data dictionary it is 1. 因?yàn)?weibo_qq0 之前的記錄點(diǎn)在112,當(dāng)前的表只創(chuàng)建一次,所以記錄點(diǎn)是1.
d、那怎么從1記錄到112。for ($1=1; $i<=111; $1++) {CREATE TABLE t# (id int) ENGINE=InnoDB;} 也許很奇怪,為什么是循環(huán)111,不是112。因?yàn)樵赼執(zhí)行創(chuàng)建表結(jié)構(gòu)的時(shí)候已經(jīng)記錄增加了一次。
e、修改表結(jié)構(gòu) alter table weibo_qq0 discard tablespace;使當(dāng)前的表結(jié)構(gòu)和ibd脫離關(guān)系。復(fù)制.ibd到當(dāng)前的目錄結(jié)構(gòu)。
f、使原來(lái)數(shù)據(jù)的ibd和當(dāng)前frm建立關(guān)系。 ALTER TABLE product IMPORT TABLESPACE; 這個(gè)時(shí)候沒(méi)有錯(cuò)誤,說(shuō)明已經(jīng)建立好了。但是查詢數(shù)據(jù)還是查不出來(lái)。
g、相比這里大家已經(jīng)知道為什么了,這個(gè)模式也不是說(shuō)改了數(shù)據(jù)庫(kù)就可以在生產(chǎn)環(huán)境使用。更改 innodb_force_recovery=1 , 如果不成修改為 2,3,4,5,6。直到可以 查詢出數(shù)據(jù)為止,然后dump出來(lái)。數(shù)據(jù)就備份出來(lái)了。
h、把所有數(shù)據(jù)導(dǎo)出后,在新的數(shù)據(jù)庫(kù)導(dǎo)入。所有數(shù)據(jù)就生成了。
擴(kuò)展問(wèn)題,很多時(shí)候我們是分表表結(jié)構(gòu)怎么批量操作,提高速度呢。用循環(huán)!循環(huán)把表的空間廢棄掉。
for i in `seq 0 111`; do mysql -uroot -P33061 -h127.0.0.1 -Dtestdd -e “CREATE TABLE inv_crawl_weibo_qq$i (id bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id)) ENGINE=innodb “; done
ALTER TABLE inv_crawl_weibo_qq0 DISCARD TABLESPACE;
從備份數(shù)據(jù)把ibd復(fù)制cp到dd數(shù)據(jù)庫(kù)下,注意復(fù)制過(guò)來(lái)的文件權(quán)限。
循環(huán)導(dǎo)入表空間。
ALTER TABLE inv_crawl_weibo_qq0 IMPORT TABLESPACE;
沒(méi)有報(bào)錯(cuò)就導(dǎo)入成功了
分享:hash和solr在海量數(shù)據(jù)分布式搜索引擎中的應(yīng)用教程Solr是一個(gè)獨(dú)立的企業(yè)級(jí)搜索應(yīng)用服務(wù)器,它對(duì)外提供類似于Web-service的API接口。用戶可以通過(guò)http請(qǐng)求,向搜索引擎服務(wù)器提交一定格式的XML文件,生成索引. 互聯(lián)網(wǎng)創(chuàng)業(yè)中大部分人都是草根創(chuàng)業(yè),這個(gè)時(shí)候沒(méi)有強(qiáng)勁的服務(wù)器,也沒(méi)有錢去買很昂貴的海量數(shù)據(jù)庫(kù)。在這樣嚴(yán)峻
- mysql數(shù)據(jù)庫(kù)ROOT賬號(hào)權(quán)限丟失問(wèn)題解決方法
- hash和solr在海量數(shù)據(jù)分布式搜索引擎中的應(yīng)用教程
- 23道安全門加鑄MySQL數(shù)據(jù)庫(kù)
- MySQL 5.0 數(shù)據(jù)庫(kù)新特性的存儲(chǔ)過(guò)程
- MySql管理的一點(diǎn)心得
- mysql導(dǎo)入數(shù)據(jù)庫(kù)文件最大限制的修改方法
- Mysql存儲(chǔ)引擎InnoDB和Myisam的六大區(qū)別
- Mysql運(yùn)行環(huán)境優(yōu)化(Linux系統(tǒng))
- MySQL查詢的性能優(yōu)化基礎(chǔ)教程
- MySQL 在windows上的安裝詳細(xì)介紹
- sql server 2005時(shí)發(fā)生18452錯(cuò)誤解決方法
- MySQL字段的取值范圍
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
猜你也喜歡看這些
- 教你SQL Server日志清除的兩種方法
- 微軟數(shù)據(jù)平臺(tái)開發(fā)與SQL Server 2008
- 教你2種刪除SQL SERVER數(shù)據(jù)庫(kù)日志方法
- 揭秘優(yōu)化SQL Server數(shù)據(jù)庫(kù)查詢的方法
- 揭秘SQL Server2000安全設(shè)置全攻略
- 解析SQL Server數(shù)據(jù)庫(kù)恢復(fù)操作實(shí)例
- 談Oracle數(shù)據(jù)庫(kù)SQL語(yǔ)句性能調(diào)整的基本原則
- 詳解轉(zhuǎn)換 SQL數(shù)據(jù)庫(kù)時(shí)的疑難問(wèn)題
- 淺析優(yōu)化SQL語(yǔ)句性能調(diào)整原則
- sql 語(yǔ)句練習(xí)與答案
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索通過(guò)frm&ibd 恢復(fù) Mysql ibdata 丟失或損壞的數(shù)據(jù)教程
- 教程說(shuō)明:
MySQL教程-通過(guò)frm&ibd 恢復(fù) Mysql ibdata 丟失或損壞的數(shù)據(jù)教程
。