1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/qieangel2013-goMontioringDdl

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
main.go 1.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
qieangel2013 Отправлено 31.10.2019 05:56 7999355
package main
import (
"flag"
"github.com/juju/errors"
"github.com/siddontang/go-log/log"
"julive.com/river"
"os"
"os/signal"
"runtime"
"syscall"
)
var configFile = flag.String("config", "./etc/river.toml", "ddl config file")
var my_addr = flag.String("my_addr", "", "MySQL addr")
var my_user = flag.String("my_user", "", "MySQL user")
var my_pass = flag.String("my_pass", "", "MySQL password")
var server_id = flag.Int("server_id", 0, "MySQL server id, as a pseudo slave")
var ding_webhook_url = flag.String("ding_webhook_url", "", "dingding webhook config")
var env = flag.String("env", "", "env config")
var flavor = flag.String("flavor", "", "flavor: mysql or mariadb")
var execution = flag.String("exec", "", "mysqldump execution path")
var logLevel = flag.String("log_level", "info", "log level")
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
flag.Parse()
log.SetLevelByName(*logLevel)
sc := make(chan os.Signal, 1)
signal.Notify(sc,
os.Kill,
os.Interrupt,
syscall.SIGHUP,
syscall.SIGINT,
syscall.SIGTERM,
syscall.SIGQUIT)
cfg, err := river.NewConfigWithFile(*configFile)
if err != nil {
println(errors.ErrorStack(err))
return
}
if len(*my_addr) > 0 {
cfg.MyAddr = *my_addr
}
if len(*my_user) > 0 {
cfg.MyUser = *my_user
}
if len(*my_pass) > 0 {
cfg.MyPassword = *my_pass
}
if *server_id > 0 {
cfg.ServerID = uint32(*server_id)
}
if len(*flavor) > 0 {
cfg.Flavor = *flavor
}
if len(*execution) > 0 {
cfg.DumpExec = *execution
}
if len(*ding_webhook_url) > 0 {
cfg.DingWebhookUrl = *ding_webhook_url
}
if len(*env) > 0 {
cfg.Env = *env
}
r, err := river.NewRiver(cfg)
if err != nil {
println(errors.ErrorStack(err))
return
}
done := make(chan struct{}, 1)
go func() {
r.Run()
done <- struct{}{}
}()
select {
case n := <-sc:
log.Infof("receive signal %v, closing", n)
case <-r.Ctx().Done():
log.Infof("context is done with %v, closing", r.Ctx().Err())
}
r.Close()
<-done
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/qieangel2013-goMontioringDdl.git
git@api.gitlife.ru:oschina-mirror/qieangel2013-goMontioringDdl.git
oschina-mirror
qieangel2013-goMontioringDdl
qieangel2013-goMontioringDdl
master