星期三, 2019-12-11 | Author: LeeheadportraitAuthor: Lee Name: lee
Email: service@i5a6.com
Site: https://www.pomelolee.com/
About: webgame网页,手机游戏服务端架构和开发者 | golang | 1,598 views

0.起因用golang写了个自动备份mysql数据库的工具

把原来用shell脚步写的工具,封装成可执行文件,配置对应的密码参数即可自动执行,方便数据的自动备份

现在都用云数据库了,这种脚本也越来越不需要用了,直接保留镜像就好了,从小网站节省成本还是需要做的,只做全量备份即可.

闲话:还准备自动同步备份文件到多台机器,感觉golang写工具还是爽哉,想要工具可以赞赏我哈^-^

1.工具要用到定时执行启用cron

使用 https://github.com/robfig/cron 这个包,它实现了 cron 规范解析器和任务运行器

具体使用可以参加起使用说明,新版已经不直接支持秒的功能需要启用秒需要 c :=cron.New(cron.WithSeconds())即可

2.使用示例

	package main
 
	import (
		"log"
		"time"
 
		"github.com/robfig/cron"
	)
 
	func main() {
		log.Println("Cron Starting...")
		c :=cron.New(cron.WithSeconds())
		//每5秒执行print5
		c.AddFunc("*/5 * * * * *", print5)
		c.Start()
 
		// 检查cron任务条目的下一个和上一个运行时间
		//inspect(c.Entries())
 
		//停止定时任务(不停止已经运行的任务)
		defer c.Stop()
		//select{}
 
		//对比cron 此根据当前时间延续10秒,cron为整5执行,稍微不同
		t1 := time.NewTimer(time.Second * 10)
	    for {
	        select {
	        case <-t1.C:
	            t1.Reset(time.Second * 10)
	            print10()
	        }
		}
	}
 
	func print10() {
		log.Println("Run 10s gap")
	}
 
	func print5(){
		log.Println("Run 5s gap")
	}

3.附上原shell脚步的cron信息

	vi /etc/crontab
 
	#每个星期日凌晨3:00执行完全备份脚本
 
	0 3 * * 0 /home/mysql/databak.sh >/dev/null 2>&1
 
	#周一到周六凌晨3:00做增量备份
 
	0 3 * * 1-6 /home/mysql/binlogbak.sh >/dev/null 2>&1
~谢谢打赏~

Tags: cron, golang