回覆列表
  • 1 # ftgnf2095

    恢復整個資料庫首先,如果要恢復的資料庫是含有授權表的mysql資料庫,將需要使用--skip-grant-tables選項執行伺服器。否則,伺服器將抱怨無法找到授權表。在恢復表之後,執行mysqladminflush-privileges來告訴伺服器載入授權表,並用它們啟動。將原資料庫目錄的內容複製到其他的地方。例如,您可能會在稍後用它們進行崩潰表的事後分析檢查(post-mortemexamination)。用最新的備份檔案重新載入資料庫。如果您打算使用由mysqldump載入的檔案,則需要將它們作為mysql的輸入。如果打算使用從資料庫中直接複製的檔案(如,用tar或cp),則將它們直接複製回到該資料庫目錄中。但是,在這種情況下,應該在複製這些檔案之前關閉伺服器,然後再重新啟動它。用更新日誌重做在進行備份後又修改了資料庫表的查詢。對於所有可用的更新日誌,可使用它作為mysql的輸入。指定--one-database選項,使mysql只對想要恢復的資料庫執行查詢。如果您知道需要使用所有的更新日誌檔案,可在包含日誌的目錄中使用下列命令:%ls-t-r-lupdate.(0-9)*|xargscat|mysql--one-databasedb_namels命令產生更新日誌檔案的單列列表,更新日誌檔案根據伺服器生成的順序進行排序(要知道,如果您修改了其中的任何檔案,排序的順序都將改變,這將導致更新日誌按錯誤的順序使用)。您很可能必須使用某些更新日誌。例如,如果自備份以來所產生的日誌命名為update.392、pdate.393等等,可以重新執行它們中的命令:%mysql--one-databasedb_name<updata.392%mysql--one-databasedb_name<updata.393…如果正在執行恢復並打算使用更新日誌恢復由於失策的DROPDATABASE、DROPTABLE或DELETE語句而丟失的資訊,應確保先從更新日誌中刪除這些語句。恢復單個的表恢復單個表是很困難的。如果有透過mysqldump生成的備份檔案並且它恰好不包含您想要的表資料,則需要抽取相關的行並用它們作為mysql的輸入,這部分較容易。困難的是抽取應用於該表的更新日誌的片段。您會發現:mysql_find_rows實用程式對這方面有幫助,它可以從更新日誌中抽取多行查詢。另一種可能性是用另一個伺服器恢復整個資料庫,然後將所要的該表的檔案複製到原始資料庫中。這實際很容易!在將檔案複製回資料庫目錄時,應確保原始資料庫的伺服器關閉。

  • 中秋節和大豐收的關聯?
  • 歷史上有哪些話,是十分的感人的?