系统编写练习:MySQL表维护系统

2020-06-07  本文已影响0人  我就是小政政
需求:

可配置定时器、mysql实例、数据库、表、查询sql语句、触发阈值、维护sql语句,通过定时查询某表的容量,并与设置的阈值比较,符合条件触发维护sql执行。

系统:

centos7

语言:

golang

go-spring、gin、gorm、robfig/cron

robfig/cron的使用示例
package main

import (
    l4g "github.com/alecthomas/log4go"
    "github.com/robfig/cron"
)

func text() {
    l4g.Info("text")
}

func main() {
    c := cron.New()
    c.AddFunc("* * * * * *", func() { text() })
    c.Start()
    select {}
}
使用go-spring集成gin、gorm

目录如下:


image.png
package brun // import "table_maintain"

import (
    sb "github.com/go-spring/go-spring/spring-boot"
    _ "github.com/go-spring/go-spring/starter-gin"
    _ "github.com/go-spring/go-spring/starter-mysql-gorm"
)

func main() {
    sb.RunApplication("brun/")
}

配置文件application.yaml

db:
  url: root:root@tcp(192.168.199.107:3308)/table_maintain?charset=utf8&parseTime=true&loc=Local
封装一个自己的log

之前一直用logrus,这里既然都是用了go-spring就直接使用它的日志包吧,发现会输出文件名与行号,简单封装一下用到的。

package common

import (
    "fmt"
    SpringLogger "github.com/go-spring/go-spring-parent/spring-logger"
)

// 流程名
const FlowBoot = "启动器"

func LogInfo(flow, operation, input interface{} ,args ...interface{}) {
    template := fmt.Sprintf("流程:%v,操作:%v,状态:成功,输入:%v", flow, operation, input)
    SpringLogger.Infof(template, args...)
}

func LogPanic(flow, operation, input, err interface{},args ...interface{}) {
    template := fmt.Sprintf("流程:%v,操作:%v,状态:失败,输入:%v,错误:%v", flow, operation, input, err)
    SpringLogger.Panicf(template, args...)
}
启动器中将cron注册bean到ioc容器
package starter

import (
    sb "github.com/go-spring/go-spring/spring-boot"
    "github.com/robfig/cron/v3"
)

func init() {
    sb.RegisterBean(cron.New(cron.WithSeconds()))
}
数据表

通用字段:

id、created_at、modified_at、deleted_at

任务(名称、定时表达式、查询语句、维护语句、阈值、状态[启用、失效])
执行记录(任务id、执行结果、报错信息)

mysql逆向工程
上一篇下一篇

猜你喜欢

热点阅读