真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么恢復(fù)表 怎么恢復(fù)mysql數(shù)據(jù)庫(kù)

怎樣修復(fù)mysql表

也許很多人遇到過類似Can’t open file: ‘[Table]mytable.MYI’ 這樣的錯(cuò)誤信息,卻不知道怎么解決他,下面我們做個(gè)介紹,

創(chuàng)新互聯(lián)公司是一家專業(yè)提供孟連企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為孟連眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

多數(shù)情況下,數(shù)據(jù)庫(kù)被破壞只是指索引文件受到了破壞,真正的數(shù)據(jù)被破壞掉的情況非常少。大多數(shù)形式的數(shù)據(jù)庫(kù)破壞的的修復(fù)相當(dāng)簡(jiǎn)單。

和前面的校驗(yàn)一樣,修復(fù)的方式也有三種。

下面講的方法只對(duì)MyISAM格式的表有效。其他類型的損壞需要從備份中恢復(fù)。

1,REPAIR TABLE SQL statement(mysql服務(wù)必須處于運(yùn)行狀態(tài))。

2,命令mysqlcheck(mysql服務(wù)可以處于運(yùn)行狀態(tài))。

3,命令myisamchk(必須停掉mysql服務(wù),或者所操作的表處于不活動(dòng)狀態(tài))。

在修復(fù)表的時(shí)候,最好先作一下備份。所以你需要兩倍于原始表大小的硬盤空間。請(qǐng)確保在進(jìn)行修復(fù)前你的硬盤空間還沒有用完。

1用”repair table”方式修復(fù)

語(yǔ)法:repair table 表名 [選項(xiàng)]

選項(xiàng)如下:

QUICK 用在數(shù)據(jù)表還沒被修改的情況下,速度最快

EXTENDED 試圖去恢復(fù)每個(gè)數(shù)據(jù)行,會(huì)產(chǎn)生一些垃圾數(shù)據(jù)行,萬(wàn)般無(wú)奈的情況下用

USE_FRM 用在.MYI文件丟失或者頭部受到破壞的情況下。利用.frm的定義來重建索引

多數(shù)情況下,簡(jiǎn)單得用”repair table tablename”不加選項(xiàng)就可以搞定問題。但是當(dāng).MYI文件丟失或者頭部受到破壞時(shí),這樣的方式不管用,例如:

mysql REPAIR TABLE mytable;

+————————-+——–+———-+———————————————+

| Table | Op | Msg_type | Msg_text |

+————————-+——–+———-+———————————————+

| sports_results.mytable | repair | error | Can’t find file: ‘mytable.MYI’ (errno: 2) |

+————————-+——–+———-+———————————————+

修復(fù)失敗的原因時(shí)索引文件丟失或者其頭部遭到了破壞,為了利用相關(guān)定義文件來修復(fù),需要用USE_FRM選項(xiàng)。例如:

mysql REPAIR TABLE mytable USE_FRM;

+————————-+——–+———-+————————————+

| Table | Op | Msg_type | Msg_text |

+————————-+——–+———-+————————————+

| sports_results.mytable | repair | warning | Number of rows changed from 0 to 2 |

| sports_results.mytable | repair | status | OK |

+————————-+——–+———-+————————————+

我們可以看到Msg_test表項(xiàng)的輸出信息”ok”,表名已經(jīng)成功修復(fù)受損表。

2用mysql內(nèi)建命令mysqlcheck來修復(fù)

當(dāng)mysql服務(wù)在運(yùn)行時(shí),也可以用mysql內(nèi)建命令mysqlcheck來修復(fù)。

語(yǔ)法:mysqlcheck -r 數(shù)據(jù)庫(kù)名 表名 -uuser -ppass

%mysqlcheck -r sports_results mytable -uuser -ppass

sports_results.mytable OK

利用mysqlcheck可以一次性修復(fù)多個(gè)表。只要在數(shù)據(jù)庫(kù)名后列出相應(yīng)表名即可(用空格隔開)?;蛘邤?shù)據(jù)庫(kù)名后不加表名,將會(huì)修復(fù)數(shù)據(jù)庫(kù)中的所有表,例如:

%mysqlcheck -r sports_results mytable events -uuser -ppass

sports_results.mytable OK

sports_results.events OK

%mysqlcheck -r sports_results -uuser -ppass

sports_results.mytable OK

sports_results.events OK

3用myisamchk修復(fù)

用這種方式時(shí),mysql服務(wù)必須停掉,或者所操作的表處于不活動(dòng)狀態(tài)(選項(xiàng)skip-external-locking沒被使用)。記著一定要在相關(guān).MYI文件的路徑下或者自己定義其路徑。

語(yǔ)法:myisamchk [選項(xiàng)] [表名]

下面是其選項(xiàng)和描述

–backup, -B 在進(jìn)行修復(fù)前作相關(guān)表得備份

–correct-checksum 糾正校驗(yàn)和

–data-file-length=#, -D # 重建表時(shí),指定數(shù)據(jù)文件得最大長(zhǎng)度

–extend-check, -e 試圖去恢復(fù)每個(gè)數(shù)據(jù)行,會(huì)產(chǎn)生一些垃圾數(shù)據(jù)行,萬(wàn)般無(wú)奈的情況下用

–force, -f 當(dāng)遇到文件名相同的.TMD文件時(shí),將其覆蓋掉。

keys-used=#, -k # 指定所用的keys可加快處理速度,每個(gè)二進(jìn)制位代表一個(gè)key.第一個(gè)key為0

–recover, -r 最常用的選項(xiàng),大多數(shù)破壞都可以通過它來修復(fù)。如果你的內(nèi)存足夠大,可以增大參數(shù)sort_buffer_size的值來加快恢復(fù)的速度。但是遇到唯一鍵由于破壞而不唯一 的表時(shí),這種方式不管用。

–safe-recover -o 最徹底的修復(fù)方式,但是比-r方式慢,一般在-r修復(fù)失敗后才使用。這種方式讀出 所有的行,并以行為基礎(chǔ)來重建索引。它的硬盤空間需求比-r方式稍微小一點(diǎn),因 為它沒創(chuàng)建分類緩存。你可以增加key_buffer_size的值來加快修復(fù)的速度。

–sort-recover, -n mysql用它類分類索引,盡管結(jié)果是臨時(shí)文件會(huì)非常大

–character-sets-dir=… 包含字符集設(shè)置的目錄

–set-character-set=name 為索引定義一個(gè)新的字符集

–tmpdir=path, -t 如果你不想用環(huán)境變量TMPDIR的值的話,可以自定義臨時(shí)文件的存放位置

–quick, -q 最快的修復(fù)方式,當(dāng)數(shù)據(jù)文件沒有被修改時(shí)用,當(dāng)存在多鍵時(shí),第二個(gè)-q將會(huì)修改 數(shù)據(jù)文件

–unpack, -u 解開被myisampack打包的文件

myisamchk應(yīng)用的一個(gè)例子

% myisamchk -r mytable

- recovering (with keycache) MyISAM-table ‘mytable.MYI’

MySQL刪除表怎么恢復(fù)?

情況1、如果你有該庫(kù)的整體備份或?qū)@個(gè)表的單獨(dú)備份,那么也許可以恢復(fù)。可以將最新的備份恢復(fù)到一個(gè)備用的服務(wù)器上,導(dǎo)出那表的內(nèi)容,完成恢復(fù)

情況2、如果沒有任何備份,那就基本沒戲了。一般刪除表的操作是drop table,日志中不會(huì)記錄刪除具體行數(shù)的記錄。表所對(duì)應(yīng)目錄下的文件已經(jīng)被刪除(innodb獨(dú)立表空間,單表歸為一文件)。同樣的情況適用于myisam數(shù)據(jù)庫(kù)引擎,對(duì)應(yīng)的myd/myi/frm文件均被刪除。這不像windows還有垃圾箱,是不可逆的操作

mysql誤刪除一個(gè)表,可以恢復(fù)嗎

1、首先構(gòu)建測(cè)試環(huán)境數(shù)據(jù)create table t1(a varchar(10),b varchar(10));insert into t1 values('1','1');insert into t1 values('2','2');commit;。

2、模擬誤修改,將t1表中的b字段更新為錯(cuò)誤數(shù)據(jù) "123456"update t1 set b='123456' where a='1';commit;select * from t1;。

3、將恢復(fù)工具上傳到服務(wù)器并進(jìn)行解壓。unzip binlog2sql-master.zip。

4、得到誤修改時(shí)的binlog文件(show binary logs;),實(shí)驗(yàn)環(huán)境是mysql-bin.000011。

5、通過?binlog2sql.py 腳本的到所有 對(duì)表 t1 的修改操作。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011'。

6、得到了誤刪除的sql的準(zhǔn)確位置在1382-1615之間,使用 _**-B**_ 選項(xiàng)生成回滾sql。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011' --start-position=1382 --stop-position=1615 -B。

7、執(zhí)行得到的回滾語(yǔ)句進(jìn)行誤操作恢復(fù)。就完成了。

如何恢復(fù)mysql數(shù)據(jù)庫(kù)中被刪除的表

1 找個(gè)別的機(jī)器安裝個(gè)同版本的mysql或從已安裝同版本的其他機(jī)器上(非同版本的也可以試下):

拷貝 mysql/data/mysql 目錄到你的mysql/data/ 下吧

2 試著啟動(dòng)mysql服務(wù),如果能啟動(dòng)了,理論上應(yīng)該丟失的只有用戶、授權(quán)等一些系統(tǒng)信息,不影響你的使用的數(shù)據(jù);

如果不能啟動(dòng),看錯(cuò)誤日志,爭(zhēng)取啟動(dòng)了。

3 趕緊把數(shù)據(jù)備份一份出來,重新把所有庫(kù)(只是你后來創(chuàng)建的業(yè)務(wù)相關(guān)的庫(kù),不包括mysql庫(kù))都刪了,重新導(dǎo)入一遍。理論上不這樣也可以,但只是非生產(chǎn)重要的環(huán)境下。

4 重新做用戶授權(quán)。

如何恢復(fù)mysql表中清除的數(shù)據(jù)

1、第一步,查詢語(yǔ)句:select*fromtable_name;或select*fromtable_namewhere[條件]

2、第二步,增加語(yǔ)句或插入數(shù)據(jù)insertintotable_name(clus...)values(values...)實(shí)例如圖:

3、修改數(shù)據(jù):updatetablenamesetxx=xx,xxx=xxwherexxx=xxxandxxx=xxx;

4、第四步,刪除語(yǔ)句deletetable_namewhere條件實(shí)例如圖:

mysql數(shù)據(jù)表沒有了怎么恢復(fù)

1 innodb引擎表開啟了事務(wù),執(zhí)行dml語(yǔ)句,比如delete、update、insert之類,并且沒有提交即commit操作的話,可以執(zhí)行rollback進(jìn)行回滾恢復(fù)。如果是ddl操作,如drop、create、alter之類的操作時(shí)無(wú)效的

2 在進(jìn)行刪除操作之前有備份,比如mysqldump,物理備份數(shù)據(jù)文件之類的操作,那么可以恢復(fù)到刪除前的數(shù)據(jù)

3 如果你的刪除操作是直接對(duì)data下的文件進(jìn)行刪除,注意,不是粉碎文件操作,那么你可以嘗試用磁盤恢復(fù)軟件來找回被誤刪的數(shù)據(jù)文件;


新聞標(biāo)題:mysql怎么恢復(fù)表 怎么恢復(fù)mysql數(shù)據(jù)庫(kù)
文章地址:http://weahome.cn/article/docphei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部