for test
This commit is contained in:
parent
5f27051688
commit
fc789d2322
52
logdb.go
52
logdb.go
|
@ -18,9 +18,8 @@ type LogDB struct {
|
||||||
Port string `yaml:"port"`
|
Port string `yaml:"port"`
|
||||||
User string `yaml:"user"`
|
User string `yaml:"user"`
|
||||||
|
|
||||||
hostid int
|
hostid int
|
||||||
driver *sql.DB
|
driver *sql.DB
|
||||||
errorcount int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewLogDB 创建一个logdb的配置
|
// NewLogDB 创建一个logdb的配置
|
||||||
|
@ -41,37 +40,52 @@ func NewLogDB(filename string) *LogDB {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ping 是否Ping通数据库
|
// Ping 是否Ping通数据库
|
||||||
func (logdb *LogDB) Ping() error {
|
func (logdb *LogDB) Ping() (result bool) {
|
||||||
return logdb.driver.Ping()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Connect 重连
|
|
||||||
func (logdb *LogDB) Connect() {
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := recover(); err != nil {
|
if err := recover(); err != nil {
|
||||||
|
result = false
|
||||||
|
|
||||||
|
log.Println(err, logdb.Hosts[logdb.hostid], " is unconnect ")
|
||||||
hostlen := len(logdb.Hosts)
|
hostlen := len(logdb.Hosts)
|
||||||
for i := 0; i < hostlen; i++ {
|
for i := 0; i < hostlen; i++ {
|
||||||
|
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?timeout=1s&charset=%s", logdb.User, logdb.Password, logdb.Hosts[i], logdb.Port, logdb.DB, logdb.Charset))
|
||||||
logdb.errorcount++
|
|
||||||
if logdb.errorcount >= hostlen*2 {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", logdb.User, logdb.Password, logdb.Hosts[logdb.hostid], logdb.Port, logdb.DB))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err, logdb.Hosts[logdb.hostid], " is connect fail")
|
log.Println(err, logdb.Hosts[i], " is connect fail")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := db.Ping(); err != nil {
|
||||||
|
log.Println(err, logdb.Hosts[i], " is connect fail")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
logdb.driver = db
|
logdb.driver = db
|
||||||
logdb.hostid = i
|
logdb.hostid = i
|
||||||
break
|
result = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", logdb.User, logdb.Password, logdb.Hosts[logdb.hostid], logdb.Port, logdb.DB))
|
if err := logdb.driver.Ping(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Connect 重连
|
||||||
|
func (logdb *LogDB) Connect() {
|
||||||
|
logdb.hostid++
|
||||||
|
if logdb.hostid >= len(logdb.Hosts) {
|
||||||
|
logdb.hostid = 0
|
||||||
|
}
|
||||||
|
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?timeout=1s&charset=%s", logdb.User, logdb.Password, logdb.Hosts[logdb.hostid], logdb.Port, logdb.DB, logdb.Charset))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
db.Ping()
|
if logdb.driver != nil {
|
||||||
|
logdb.driver.Close()
|
||||||
|
}
|
||||||
logdb.driver = db
|
logdb.driver = db
|
||||||
|
log.Println("connect is", logdb.Ping(), logdb)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user