定時備份數據庫表

 


/**
 * @author 作者 :dengxiangyu
 * @version 創建時間:2019年4月8日 下午4:35:06
 * 
 */
@Component
public class SdnBackup {

  private static final Logger logger = LoggerFactory.getLogger(SdnBackup.class);
  @Autowired
  private SdnBackupMapper sdnBackupMapper;

  @Value("${hz.kakashi.sdn.table}")
  String tables;

  //每晚六點備份
  @Scheduled(cron = "0 0 18 * * ? ")
  public void timing() {
    logger.info("sdn開始備份");
    backup();
    logger.info("sdn備份完成");
    clean();
    logger.info("sdn30天前備份表刪除完成");
  }

  /**
   * 備份
   */
  public void backup() {
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    String date = df.format(new Date());
    List<String> list = Arrays.asList(tables.split(","));
    for (String table : list) {
      sdnBackupMapper.backup(table, table + "_" + date);
    }
  }

  /**
   * 刪除一個月前備份
   */
  public void clean() {
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    Calendar c = Calendar.getInstance();
    c.setTime(new Date());
    c.add(Calendar.DATE, -30);
    Date d = c.getTime();
    String day = df.format(d);
    List<String> list = Arrays.asList(tables.split(","));
    for (String table : list) {
      try {
        sdnBackupMapper.delete(table + "_" + day);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
}
 

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