數據庫歸檔

類似於日誌之類的數據表,只會用到最新一段時間的數據,隨着時間累積,會影響到該表的性能與容量瓶頸,但是又不捨得刪除這裏歷史數據,這時候,可以以備份的形式將這些歷史數據歸檔起來。也即是備份到另一張表或是導出存到磁盤等。
歸檔方式:

  1. 採用sql語句
    首先創建一張新表與舊錶一模一樣,如:
    create table log_bak like log;
    
    接着需要歸檔的數據導入新表並刪除舊錶中的數據,如:
    insert into log_bak select * from log where created_at < NOW() - INTERVAL 90 DAY;
    delete from log  where created_at < NOW() - INTERVAL 90 DAY;
    
    具體怎麼執行上述命令,可以通過存儲過程的方式,也可以寫個crontab任務,也可以在項目中寫定時任務,等等,不一而足。
    需要注意的是,在插入數據到備份表的時候,可能會因爲數據量過大而導致執行失敗,這時候就需要控制單次執行的數據量,如果是報“The total number of locks exceeds the lock table size.”,則需要將innodb_buffer_pool_size值進行調優,等等。
  2. 使用第三方工具,如:pt-archiver
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章