星期三, 2019-12-11 | Author:
LeeAuthor: 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