12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package global
- import (
- "database/sql"
- "fmt"
- "log"
- "time"
- "xugu_license/internal/module/capture"
- _ "xugu_license/pkg/xugu"
- )
- var XuguDB *sql.DB
- var OaDB *sql.DB
- //var LicCache *license_cache.Cache
- func InitDb() {
- cfg := LoadConfig("./config.toml")
- fmt.Println("cfg", cfg)
- licDbstr := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8",
- cfg.Database.LicDBIP,
- cfg.Database.LicDBDb,
- cfg.Database.LicDBUser,
- cfg.Database.LicDBPass,
- cfg.Database.LicDBPort)
- oaDbstr := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8",
- cfg.Database.OADBIP,
- cfg.Database.OADBDb,
- cfg.Database.OADBUser,
- cfg.Database.OADBPass,
- cfg.Database.OADBPort)
- var err error
- XuguDB, err = sql.Open("xugusql", licDbstr)
- if err != nil {
- log.Fatal("XuguDB err ", err)
- }
- XuguDB.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期
- // 启动定时任务保活
- //go keepDBAlive(XuguDB)
- //IP=10.28.20.111;DB=ECOLOGY2;User=XUGU;PWD=oatest@2024;Port=5148;AUTO_COMMIT=on;CHAR_SET=UTF8
- //IP=10.28.20.150;DB=oadb;User=SYSDBA;PWD=SYSDBA;Port=5199;AUTO_COMMIT=on;CHAR_SET=UTF8
- OaDB, err = sql.Open("xugusql", oaDbstr)
- if err != nil {
- log.Fatal("OaDB err ", err)
- }
- if err := OaDB.Ping(); err != nil {
- log.Fatal("OaDB ping err ", err)
- }
- OaDB.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期
- // 启动定时数据同步服务
- go capture.StartCapture(OaDB, XuguDB)
- //license缓存
- // layout := "2006-01-02 15:04:05"
- // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
- // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
- // LicCache = license_cache.NewCache()
- // err = LicCache.LoadDataFromDB(XuguDB, startTime, endTime, 0, 20)
- // if err != nil {
- // fmt.Println("license缓存初始化失败", err)
- // }
- // fmt.Println("license缓存初始化完成", LicCache.GetData())
- }
- func keepDBAlive(db *sql.DB) {
- ticker := time.NewTicker(5 * time.Minute)
- defer ticker.Stop()
- for range ticker.C {
- err := db.Ping()
- if err != nil {
- log.Println("数据库连接丢失,重试中...")
- // 处理重连逻辑
- } else {
- log.Println("数据库连接正常")
- }
- }
- }
|