64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"log"
|
||
|
"net"
|
||
|
"proxymysql/app/conf"
|
||
|
"proxymysql/app/mysqlserver"
|
||
|
"proxymysql/app/zlog"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
flag.StringVar(&conf.App.RemoteDb, "remote_db", "", "")
|
||
|
flag.StringVar(&conf.App.ServerAddr, "server_addr", ":5306", "")
|
||
|
flag.StringVar(&conf.App.WebAddr, "web_addr", "", "")
|
||
|
flag.StringVar(&conf.App.ServerVersion, "server_version", "8.0.30-my-mysql-proxy", "")
|
||
|
flag.BoolVar(&conf.App.SaveLog, "save_log", false, "")
|
||
|
flag.StringVar(&conf.App.LogLevel, "log_level", zlog.InfoLevel, "日志级别 debug info error")
|
||
|
flag.Parse()
|
||
|
|
||
|
cfg := zlog.DefaultConfig
|
||
|
cfg.Level = conf.App.LogLevel
|
||
|
zlog.Init("app", cfg)
|
||
|
|
||
|
if conf.App.RemoteDb == "" {
|
||
|
zlog.Fatal("remote db addr not set")
|
||
|
}
|
||
|
|
||
|
zlog.Infof("save query log: %v", conf.App.SaveLog)
|
||
|
zlog.Infof("server version: %s", conf.App.ServerVersion)
|
||
|
zlog.Infof("remote db: %s", conf.App.RemoteDb)
|
||
|
|
||
|
// todb
|
||
|
//if conf.App.WebAddr != "" {
|
||
|
// db.InitAdminDb()
|
||
|
// go webserver.Start()
|
||
|
//}
|
||
|
|
||
|
listen, err := net.Listen("tcp", conf.App.ServerAddr)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
|
||
|
zlog.Infof("db server listen on: %s", conf.App.ServerAddr)
|
||
|
|
||
|
for {
|
||
|
conn, err := listen.Accept()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
|
||
|
go func(conn2 net.Conn) {
|
||
|
defer conn2.Close()
|
||
|
|
||
|
err := mysqlserver.NewProxyConn(conn2).Handle()
|
||
|
if err != nil {
|
||
|
zlog.Errorf("proxy conn handle err: %s", err)
|
||
|
}
|
||
|
|
||
|
}(conn)
|
||
|
}
|
||
|
|
||
|
}
|