2017-01-29 45 views
0

是否可以僅備份.MYD文件? (和重建.MYI如果/當出現災難性故障)僅備份myIsam .MYD


我想備份,而大表異地同時最大限度地減少帶寬使用。數據很關鍵,索引文件(5G +)不是。這個想法是運行.frm和.myd文件的定期備份,並且在發生災難性故障(即本地備份被火災或被盜毀)時重建索引。

使用.frm和.myd修復只會給我一條錯誤消息。有一個簡單的解決方法嗎?

+1

如果修復了優化統計分析)
4)沖洗臺表(需要如果你的表損壞了,你需要做的最後一件事是聰明的,而不是備份**所有**,那麼使用MyISAM你將會受到傷害。 MySQL並不保證磁盤上的文件處於一致狀態,'mysqldump'確實是確保其一致性的唯一方法。 – tadman

+0

如果你說___數據是關鍵_不要混淆標準備份技術。如果你這樣做,你將需要測試測試它 – RiggsFolly

+1

如果有人在這裏說「_Yes thats cool go ahead_」你會相信他們沒有測試它嗎?我希望不會,所以測試一下,看看 – RiggsFolly

回答

0

要完全恢復沒有.MYI的MyIsam表(即僅完全由.frm和.frm創建)。MYD文件),運行:

REPAIR tableName USE_FRM;


使結構+數據的快速和緊湊的備份,運行:

FLUSH TABLES tableName WITH READ LOCK; 

[使.FRM的副本和。 myd文件。無需複製.MYI]

UNLOCK TABLES 

複製.MYD文件提供了比使用mysqldump,對於大表大大提高備份速度。我進行了一次快速測試,一張6G桌面花了6分鐘用mysqldump和5秒直接複製進行備份。 mysqldump文件是myd + myi文件的組合大小。 .myd文件可以/應該被壓縮(我使用7z)。

直接拷貝是在MySQL的官方documentation

0

不可以。您還必須轉儲.frm以便捕獲模式。是的,可以重新創建.MYI。是的,「用.frm和.MYD修復」應該可以工作;我從未測試過它。您可以通過停止MySQL來測試它,將這兩個文件複製到不同的數據庫,然後嘗試修復。

MyISAM不僅被棄用,它從下一個版本(8.0)中消失。將來使用MyISAM基本沒有正當理由。還有很多不使用它的原因。

如果.MYI文件大於.MYD文件,您可能會做錯了。有一小部分表的確有比數據更多的索引,但它有點難得。當有人說「我索引每一列」時,那麼我知道他是一個新手,並不明白:

  • 標誌(和其他低基數列)的索引可能永遠不會使用。
  • 「複合」索引通常很有用。
  • MySQL很少在同一個SELECT中使用兩個索引。
0

如果你希望儘量減少帶寬使用,我可以建議其他一些可能的策略:

  • 使用mysqldump,因爲輸出只包含數據,沒有索引的內容。索引將在還原轉儲時重新創建。

  • 壓縮備份,然後傳輸壓縮文件。它可能是未壓縮備份大小的十分之一。

  • 使用複製,因此只有對數據庫的增量更改纔會傳輸到其他站點。然後在副本上運行備份。

通過將文件複製到數據目錄之外來完成「備份」是不安全的。你應該使用像mysqldump這樣的備份工具。

0

另一種方法討論的幾種備份方法之一是創建一個空表像要保護的一個。

對於備份:

1)創建一個空表像原來
2)備份原始的.frm & .MYD
3)包括在備份中的空.MYI設置
4)丟棄空表


回收步驟:

1)還原表(原.FRM & .MYD和空的.MYI恢復到與.frm相同的數據庫.MYD)
2)鎖定表以防止其使用
3)運行myisamchk(我傾向於從OS運行 - 索引重新生成可以並行,如果從OS)
5)解鎖表
6)分析表(如優化器統計需要收集)