使用MYSQL備份資料恢複

來源:互聯網
上載者:User
mysql|備份|恢複|資料    資料庫毀壞發生的原因有許多,且程度各不相同。如果幸運的話,可能是一兩個表的小毀壞(例如,如果您的機器由於斷電而暫時停機)。如果不是這樣,可能需要置換整個的資料目錄(例如,如果某個磁碟癱瘓而且資料目錄在它上)。在其他情況下也需要恢複操作,例如,當使用者錯誤地刪除資料庫或表時,或者錯誤地刪除表的內容時。不論這些不幸的事件發生是由於什麼原因,都需要恢複它們。
    如果表被毀壞但沒有丟失,可試著用myisamchk 或isamchk 來修複它們。如果修複公用程式能修複它們,就根本揮斜匾褂帽阜菸募1淼男薷垂探詰?3 章討論。如果表被丟失或不能修複,則需要恢複它們。
    恢複過程包括兩個資訊源:備份檔案和更新日誌。備份檔案將表恢複到進行該備份時的狀態。但是,在備份和故障發生這段時間中,表通常已經被修改。更新日誌包含了用來完成這些修改的查詢。可以通過將更新日誌作為對mysql的輸入來重複這些查詢(這就是為什麼
應該允許更新日誌的原因。如果您還沒有使更新日誌有效,現在趕快做,並在進一步讀取之前產生一個新的備份)。
    恢複過程根據必須恢複的資訊的多少而變化。事實上,恢複整個資料庫比恢複單個的表要容易,因為對資料庫應用程式更新日誌比對錶要容易。

恢複整個資料庫

    首先,如果要恢複的資料庫是含有授權表的mysql資料庫,將需要使用- - s k i p - g r a n t - tables選項運行伺服器。否則,伺服器將抱怨無法找到授權表。在恢複表之後,執行mysqla d m i n flush-privileges 來告訴伺服器載入授權表,並用它們啟動。
    將原資料庫目錄的內容拷貝到其他的地方。例如,您可能會在稍後用它們進行崩潰表的事後分析檢查(post-mortem examination)。
    用最新的備份檔案重新載入資料庫。如果您打算使用由mysqldump 載入的檔案,則需要將它們作為mysql的輸入。如果打算使用從資料庫中直接拷貝的檔案(如,用tar 或c p),則將它們直接拷貝回到該資料庫目錄中。但是,在這種情況下,應該在拷貝這些檔案之前關閉伺服器,然後再重新啟動它。
    用更新日誌重做在進行備份後又修改了資料庫表的查詢。對於所有可用的更新日誌,可使用它作為mysql的輸入。指定--one-database 選項,使mysql只對想要恢複的資料庫執行查詢。如果您知道需要使用所有的更新記錄檔,可在包含日誌的目錄中使用
下列命令:
    % ls -t -r -l update.(0-9)* | xargs cat | mysql--one-database db_name
    ls 命令產生更新記錄檔的單列列表,更新記錄檔根據伺服器產生的順序進行排序(要知道,如果您修改了其中的任何檔案,排序的順序都將改變,這將導致更新日誌按錯誤的順序使用)。
    您很可能必須使用某些更新日誌。例如,如果自備份以來所產生的日誌命名為up date . 3 9 2、update.393 等等,可以重新運行它們中的命令:
    % mysql--one-database db_name < updata.392
    % mysql--one-database db_name < updata.393
    。。。
    如果正在運行恢複並打算使用更新日誌恢複由於失策的DROP DATA B A S E、D R O P TABLE 或DELETE 語句而丟失的資訊,應確保先從更新日誌中刪除這些語句。

恢複單個的表

    恢複單個表是很困難的。如果有通過mysqldump 產生的備份檔案並且它恰好不包含您想要的表資料,則需要抽取相關的行並用它們作為mysql的輸入,這部分較容易。困難的是抽取應用於該表的更新日誌的片段。您會發現: mysql_find_rows 公用程式對這方面有協助,它可以從更新日誌中抽取多行查詢。
    另一種可能性是用另一個伺服器恢複整個資料庫,然後將所要的該表的檔案拷貝到未經處理資料庫中。這實際很容易!在將檔案拷貝回資料庫目錄時,應確保未經處理資料庫的伺服器關閉。

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。