茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    通過frm&ibd 恢復(fù) Mysql ibdata 丟失或損壞的數(shù)據(jù)教程
    來源:易賢網(wǎng) 閱讀:6331 次 日期:2015-02-12 11:59:32
    溫馨提示:易賢網(wǎng)小編為您整理了“通過frm&ibd 恢復(fù) Mysql ibdata 丟失或損壞的數(shù)據(jù)教程”,方便廣大網(wǎng)友查閱!

    有時候mysql沒有做好數(shù)據(jù)備份,或者被數(shù)據(jù)管理員誤刪,或者ibdata損壞了我們?nèi)绾位謴?fù)呢?別怕,只要有部分frm、ibd存在,下面就是恢復(fù)教程。

    mysql存儲在磁盤中,各種天災(zāi)人禍都會導(dǎo)致數(shù)據(jù)丟失。大公司的時候我們常常需要做好數(shù)據(jù)冷熱備,對于小公司來說要做好所有數(shù)據(jù)備份需要支出大量的成本,很多公司也是不現(xiàn)實的。萬一還沒有做好備份,數(shù)據(jù)被誤刪除了,或者ibdata損壞了怎么辦呢?別擔(dān)心,只要有部分的frm、ibd存在就可以恢復(fù)部分數(shù)據(jù)。

    注意:

    一、這個是對innodb的數(shù)據(jù)恢復(fù)。myisam不需要這么麻煩,只要數(shù)據(jù)文件存在直接復(fù)制過去就可以。

    二、大家的mysql數(shù)據(jù)庫必須是按表存放數(shù)據(jù)的,默認不是,但是大家生產(chǎn)肯定是按分表設(shè)置的吧,如果不是,不好意思,這個方法不能恢復(fù)你的數(shù)據(jù)。my.ini的設(shè)置為

    innodb_file_per_table = 1。

    1、找回表結(jié)構(gòu),如果表結(jié)構(gòu)沒有丟失直接到下一步

    a、先創(chuàng)建一個數(shù)據(jù)庫,這個數(shù)據(jù)庫必須是沒有表和任何操作的。

    b、創(chuàng)建一個表結(jié)構(gòu),和要恢復(fù)的表名是一樣的。表里的字段無所謂。一定要是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、 啟動mysql,service mysqld start;show create table weibo_qq0 就能li到表結(jié)構(gòu)信息了。

    2、找回數(shù)據(jù)。記得上面把 innodb_force_recovery改掉了,需要注釋掉,不然恢復(fù)模式不好操作。 這里有個關(guān)鍵的問題,就是innodb里的任何數(shù)據(jù)操作都是一個日志的記錄點。也就是如果我們需要數(shù)據(jù)恢復(fù),必須把之前的表的數(shù)據(jù)的日志記錄點添加到一致。

    a、建立一個數(shù)據(jù)庫,根據(jù)上面導(dǎo)出的創(chuàng)建表的sql執(zhí)行創(chuàng)建表。

    b、找到記錄點。先要把當(dāng)前數(shù)據(jù)庫的表空間廢棄掉,使當(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é)果不出意外肯定會報錯。就和我們開展數(shù)據(jù)開始說的那樣,數(shù)據(jù)記錄點不一致。我們看看之前ibd記錄的點在什么位置。開始執(zhí)行 import tablespace,報錯 ERROR 1030 (HY000): Got error -1 from storage engine。找到mysql的錯誤日志,InnoDB: Error: tablespace id in file ‘.testweibo_qq0.ibd’ is 112, but in the InnoDB InnoDB: data dictionary it is 1. 因為 weibo_qq0 之前的記錄點在112,當(dāng)前的表只創(chuàng)建一次,所以記錄點是1.

    d、那怎么從1記錄到112。for ($1=1; $i<=111; $1++) {CREATE TABLE t# (id int) ENGINE=InnoDB;} 也許很奇怪,為什么是循環(huán)111,不是112。因為在a執(zhí)行創(chuàng)建表結(jié)構(gòu)的時候已經(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、使原來數(shù)據(jù)的ibd和當(dāng)前frm建立關(guān)系。 ALTER TABLE product IMPORT TABLESPACE; 這個時候沒有錯誤,說明已經(jīng)建立好了。但是查詢數(shù)據(jù)還是查不出來。

    g、相比這里大家已經(jīng)知道為什么了,這個模式也不是說改了數(shù)據(jù)庫就可以在生產(chǎn)環(huán)境使用。更改 innodb_force_recovery=1 , 如果不成修改為 2,3,4,5,6。直到可以 查詢出數(shù)據(jù)為止,然后dump出來。數(shù)據(jù)就備份出來了。

    h、把所有數(shù)據(jù)導(dǎo)出后,在新的數(shù)據(jù)庫導(dǎo)入。所有數(shù)據(jù)就生成了。

    擴展問題,很多時候我們是分表表結(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ù)庫下,注意復(fù)制過來的文件權(quán)限。

    循環(huán)導(dǎo)入表空間。

    ALTER TABLE inv_crawl_weibo_qq0 IMPORT TABLESPACE;

    沒有報錯就導(dǎo)入成功了

    更多信息請查看IT技術(shù)專欄

    更多信息請查看數(shù)據(jù)庫
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>

    2026國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)