2012-04-13 64 views
2

我有什麼選擇使用InnoDB引擎(表已存在)導入MySQL表,而不會丟失對現有表的讀取訪問權限?一般來說,我指的是ALTER TABLE真的很慢的情況,我反而希望轉儲表,修改轉儲,然後導入它。在不鎖定表的情況下導入MySQL InnoDB轉儲

如果我使用mysqldump來創建轉儲,那麼當我重新插入它時會在插入之前刪除表,因此讀取訪問當然會丟失,直到導入完成。

我可以簡單地更改轉儲中的表名,導入該表,然後在完成時刪除舊錶並重命名新表?有沒有更好的辦法?提前致謝。

回答

1

如果您的表具有相同的結構,我不會看到任何問題。你只需要跳過「DROP TABLE」操作。幾乎所有的翻斗車都可以選擇不在轉儲中包含DROP TABLE/CREATE TABLE。我個人建議Sypex Dumper

如果你想改變表結構無鎖表,我認爲最好的方法是使用 pt-online-schema-change - ALTER tables without locking them

+0

謝謝,我會運行與Sypex翻斗車的基準。 10美元不會出錯! – melkamo 2012-04-13 12:59:37

+1

@melkamo它有免費版本。對於大多數需求已足夠;) – 2012-04-13 20:51:16