2016-09-14 49 views
0

我需要對案例有新意見。任何想法都表示讚賞。從大的percona mysql db中刪除很多行

輸入:我們有一個巨大的percona mysql(5.5)數據庫,需要幾個Tb(兆兆字節)。 innodb引擎表。 應儘可能快地刪除該尺寸的一半以上(2/3)。 另外我們有主從配置。

達到,我考慮了以下解決方案的最快方法: 執行從屬服務器上的每個表(以避免停工停產):

  1. 停止複製
  2. 選擇不排刪除到與原表具有相同結構的空的新表中
  3. 將原始表重命名爲「table_old」,新表 - 更正名稱
  4. 刪除原表「table_old」
  5. 開始複製

問題是我們有很多FK約束。我也害怕在這個過程中打破複製。

問題: 1)在這個解決方案中,FK約束會帶來什麼樣的潛在問題? 2)如何不破壞複製? 3)意見?替代方案?

預先感謝您。

回答

0

,如果你可以把一會兒數據庫脫機(又名無人訪問該數據庫除了你),你可以跟你的解決方案,但你需要刪除FK之前參與和之後他們重建。您還應該檢查AUTO_INCREMENT列,這些列將通過複製操作更改編號。

的FK,如果你想在網上分貝需要,我曾與一些巨大的日誌表類似的問題,任何嘗試一次可能會鎖定數據庫或損壞表中刪除所有記錄。

,所以我去了一個緩慢的辦法,我提出,將刪除使用聚集主鍵的錶行的批次過程,然後我安排其運行每n秒。