golang编译exe用 mysqldump备份,备份异常写日志 log包

package main

import (
   "fmt"
   "io/ioutil"
   "log"
   "os"
   "os/exec"
   "time"
)

var logger *log.Logger

func main() {
   // mysql 备份
   var db_back_file string
   timeUnix := time.Now().Unix() //单位s,打印结果:1491888244
   formatTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02")
   // fmt.Println(formatTimeStr)
   // mysql执行环境路径
   mysqldump := "D:\\mysql-8.0.32-winx64\\bin\\mysqldump.exe"
   // 备份环境路径
   db_back_file = "D:\\mysql-8.0.32-winx64\\data_back\\" + formatTimeStr + ".sql"
   // 执行命令
   cmd := exec.Command(mysqldump, "-u", "root", "-p密码", "--databases", "-h服务器ip", "-P端口", "数据库名", "-r", db_back_file)
   // logger.Println(cmd)

   stdout, err := cmd.StdoutPipe()

   if err != nil {
      logger.Println(err)
      fmt.Println("Failed to create pipe: ", err)
      return
   }

   cmd.Start()
   bytes, _ := ioutil.ReadAll(stdout)
   //logger.Println(string(bytes))
   fmt.Println(string(bytes))
   //cmd.Wait()
}

func init() {
   //指定路径的文件,无则创建
   var logfiles string           // 定义日志文件目录
   timeUnix := time.Now().Unix() //单位s,打印结果:1491888244
   formatTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02")
   logfiles = formatTimeStr + "_log.log"

   logFile, err := os.OpenFile(logfiles, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
   if err != nil {
      panic(err)
   }
   logger = log.New(logFile, "[info]", log.Ldate|log.Ltime)

   // OpenFile = 功能:打开文件
   // 函数原型:func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
   // 返回值:
   // 成功,返回的文件对象
   // 失败,err错误底层类型是*PathError
   // 参数解释:
   // name:文件路径及文件名
   // flag:文件操作类型码
   // perm:文件模式

   // 二参码值    释义
   // O_RDONLY    只读模式打开文件
   // O_RDONLY    只读模式打开文件
   // O_WRONLY    只写模式打开文件
   // O_RDWR  读写模式打开文件
   // O_APPEND    写操作时将数据附加到文件尾部
   // O_CREATE    如果不存在将创建一个新文件
   // O_EXCL  和O_CREATE配合使用,文件必须不存在
   // O_SYNC  打开文件用于同步I/O
   // O_TRUNC 如果可能,打开时清空文件
   // flag 码值 释义
   // 0666    任何人都可读写,不可执行
   // 0777    覆盖所有Unix权限位(用于通过&获取类型位)
   //————————————————

   // log.New
   // 功能:创建一个Logger对象
   // 函数原型:func New(out io.Writer, prefix string, flag int) *Logger
   // 返回值:
   // 成功,返回的文件对象
   // 失败,err错误底层类型是*PathError
   // 参数解释:
   // out:写入文件的对象
   // prefix:添加到每一条日志前面的字符串
   // flag:日志的属性
   // flag码值  释义
   // Ldate   日期:2009/01/23
   // Ltime   时间:01:23:23
   // Lmicroseconds   微秒分辨率:01:23:23.123123(用于增强Ltime位)
   // Llongfile   文件全路径名+行号: /a/b/c/d.go:23
   // Lshortfile  文件无路径名+行号:d.go:23(会覆盖掉Llongfile)
   // LstdFlags   标准logger的初始值
   // ————————————————

}

编译exe文件:

go mod init mysql_back

go mod tidy

go mod vendor

// 以上三步没有用到第三方包引入可以不用,如果自己在以上代码上进行调整引入到第三方包可以用,但是必须开启mode

go build -o  go-mysql-back.exe mysql_back.go

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值