MySQL資料庫備份 4

2021-04-17 06:45:20 字數 1672 閱讀 2913

資料庫損壞的發生有很多原因,程度也不同。如果你走運,你可能僅損壞一兩個表(如掉電),如果你倒霉,你可能必須替換整個資料目錄(如磁碟損壞)。在某些情況下也需要恢復,比如使用者錯誤地刪除了資料庫或表。不管這些倒霉事件的原因,你將需要實施某種恢復。

如果表損壞但沒丟失,嘗試用myisamchk或isamchk修復它們,如果這樣的損壞可有修復程式修復,你可能根本不需要使用備份檔案。關於表修復的過程,見《資料庫維護與修復》。

恢復過程涉及兩種資訊源:你的備份檔案和個更新日誌。備份檔案將表恢復到實施備份時的狀態,然而一般表在備份與發生問題之間的時間內已經被修改,更新日誌包含了用於進行這些修改的查詢。你可以使用日誌檔案作為

mysql的輸入來重複查詢。這已正是為什麼要啟用更新日誌的原因。

恢復過程視你必須恢復的資訊多少而不同。實際上,恢復整個資料庫比單個表跟容易,因為對於資料庫運用更新日誌比單個表容易。

4.1 恢復整個資料庫

首先,如果你想恢復的資料庫是包含授權表的

mysql資料庫,你需要用--skip-grant-table選項執行伺服器。否則,它會抱怨不能找到授權表。在你已經恢復表後,執行

mysqladmin flush-privileges告訴伺服器裝載授權標並使用它們。

將資料庫目錄內容拷貝到其它某個地方,如果你在以後需要它們。

用最新的備份檔案重灌資料庫。如果你用

mysqldump產生的檔案,將它作為

mysql的輸入。如果你用直接從資料庫拷貝來的檔案,將它們直接拷回資料庫目錄,然而,此時你需要在拷貝檔案之前關閉資料庫,然後重啟它。

使用更新日誌重複做備份以後的修改資料庫表的查詢。對於任何可適用的更新日誌,將它們作為

mysql的輸入。指定--one-database選項使得

mysql只執行你有興趣恢復的資料庫的查詢。如果你知道你需要運用所有更新日誌檔案,你可以在包含日誌的目錄下使用這條命令:

% ls -t -r -1 update.[0-9]* | xargs cat | mysql --one-database db_name

ls命令生成更新日誌檔案的乙個單列列表,根據伺服器產生它們的次序排序(主意:如果你修改任何乙個檔案,你將改變排序次序,這導致更新日誌一錯誤的次序被運用。)

很可能你會是運用某幾個更新日誌。例如,自從你備份以來產生的更新日誌被命名為update.392、update.393等等,你可以這樣重新執行:

%mysql --one-database db_name < update.392

%mysql --one-database db_name < update.393

.....

如果你正在實施恢復且使用更新日誌恢復由於乙個錯誤建議的drop database、drop table或delete語句造成丟失的資訊,在運用更新日誌之前,要保證從其中刪除這些語句。

4.2 恢復單個表

恢復單個表較為複雜。如果你用乙個由mysqldump生成的備份檔案,並且它不包含你感興趣的表的資料,你需要從相關行中提取它們並將它們用作mysql的輸入。這是容易的部分。難的部分是從只運用於該錶的更新日誌中拉出片斷。你會發覺mysql_find_rows實用程式對此很有幫助,它從更新日誌中提取多行查詢。

另乙個可能性是使用另一台伺服器恢復整個資料庫,然後拷貝你想要的表檔案到原資料庫中。這可能真的很容易!當你將檔案拷回資料庫目錄時,要確保原資料庫的伺服器關閉。

MySQL資料庫備份

晏子 在資料庫表丟失或損壞的情況下,備份你的資料庫是很重要的。如果發生系統崩潰,你肯定想能夠將你的表盡可能丟失最少的資料恢復到崩潰發生時的狀態。有時,正是mysql管理員造成破壞。管理員已經知道表以破壞,用諸如vi或emacs等編輯器試圖直接編輯它們,這對錶絕對不是件好事!備份資料庫兩個主要方法是用...

My SQL資料庫備份

因為mysql表作為檔案儲存,做乙個備份是容易的。為了得到乙個一致的備份,在相關的表上做乙個lock tables。你只需乙個讀鎖定 當你在資料庫目錄中做檔案的乙個拷貝時,這允許其他執行緒繼續查詢該錶。如果你想要做乙個sql級的備份,你可以select into outfile。備份乙個資料庫的另乙...

MySQL資料庫備份

不管你使用哪種備份方法,如果你需要恢復資料庫,有幾個原則應該遵守,以確保最好的結果 用於建立備份的 技術同樣對拷貝資料庫到另一台機器有用。最常見地,乙個資料庫被轉移到了執行在另一台主機上的伺服器,但是你也可以將資料轉移到同一臺主機上的另乙個伺服器。1 使用mysqldump備份和拷貝資料庫 當你使用...