2013-01-15 26 views
1

我有一個主數據庫,每天可存儲多達5000個新行。Cron作業在MySQL表格之間移動多行

我想要第二個數據庫在任何時候只包含最近30天的數據。

因此,我打算設置一個cron作業,定期轉儲30天以上的行並複製新的作業。

什麼是複製零件的最佳設計?

  • 複製與MySQL的單獨
  • 一個MySQL的導出到一個txt文件中的飛行,那麼MySQL的導入,然後刪除臨時文件
  • 一個PHP腳本,通過行並複製它們一個迭代一個

我想魯棒性和CPU /內存使用率最低金額

回答

2

最快和最可靠的方法是直接在MySQL中執行的轉移。下面是步驟涉及:

首先,創建第二個表:

CREATE TABLE IF NOT EXISTS second.last30days LIKE main_table; 

接下來,插入記錄30天,或更新:

INSERT INTO 
second.last30days 
SELECT 
* 
FROM 
main_table 
WHERE 
created >= CURDATE() - INTERVAL 30 DAYS 
ORDER BY created; 

最後,刪除記錄比老30天:

DELETE FROM 
second.last30days 
WHERE 
created < CURDATE() - INTERVAL 30 DAYS 
ORDER BY created; 

這將是最好不要運行INSERTDELETE陳述在同一時間。