【golang转存mysql表】

背景:

随业务增长,表中数据量越来越大。业务方只查询近一周的数据。与研发确认log表只保留100w数据,定期转存到历史表中。这段时间刚好接触golang,顺便用这个小需求练练手。

前期准备:

  • [go get github.com/go-sql-driver/mysql ]
  • golang 1.18

目录结构:

`job_log`
    |  -- dbutil
            |  -- sqlutil.go
    |  -- go.mod
    |  -- go.sum
    |  -- logs
            |  -- alter.log
    |  -- logutil
            |  -- logutil.go
    |  -- testmain.go

//生成go.mod 和 go.sum文件
go mod init joblog


代码:

testmain.go

package main

import (
"joblog/dbutil"
//"joblog/logutil"
//"fmt"
)

//定时将job_log表中数据与入到history表中 然后清理掉log表数据
//记录history表中最大id  取出log表中;最小id 写入history表 
//删除log表中数据

const (
  RESERVEDATA int64 = 1000000 
)
//get max id from table fill to struct
func getMaxvalue(si * dbutil.Sqlinfo)error{
   
  err :=si.GetMaxOrMinId("source","id","max")
  if err != nil{
   
    //logutil.Logger.Println(err.Error())
    return err
  }
  //get max id from history table
  err = si.GetMaxOrMinId("target","id","max")
  if err != nil{
   
    //logutil.Logger.Println(err.Error())
    return err
  }
  return nil 
}

//migrate log table data to history
//left 100w data in log 
func migrateDate(si *dbutil.Sqlinfo){
   
  if distance := si.SourceMaxid - si.TargetMaxid;distance <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值