数据库归档

类似于日志之类的数据表,只会用到最新一段时间的数据,随着时间累积,会影响到该表的性能与容量瓶颈,但是又不舍得删除这里历史数据,这时候,可以以备份的形式将这些历史数据归档起来。也即是备份到另一张表或是导出存到磁盘等。
归档方式:

  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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章