49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package database
|
||
|
||
import (
|
||
"log"
|
||
"psi/config"
|
||
"time"
|
||
|
||
"gorm.io/driver/mysql"
|
||
"gorm.io/gorm"
|
||
"gorm.io/gorm/logger"
|
||
)
|
||
|
||
// TaskDB 任务数据库长连接(腾讯云 MySQL,用于导入后写 t_shop_goods_published)
|
||
var TaskDB *gorm.DB
|
||
|
||
func InitTaskDB() {
|
||
cfg := config.AppConfig
|
||
|
||
slowLogger := logger.New(
|
||
log.New(log.Writer(), "\r\n", log.LstdFlags),
|
||
logger.Config{
|
||
SlowThreshold: 200 * time.Millisecond,
|
||
LogLevel: logger.Warn,
|
||
IgnoreRecordNotFoundError: true,
|
||
Colorful: false,
|
||
},
|
||
)
|
||
|
||
var err error
|
||
TaskDB, err = gorm.Open(mysql.Open(cfg.GetTaskDSN()), &gorm.Config{
|
||
Logger: slowLogger,
|
||
})
|
||
if err != nil {
|
||
log.Fatal("任务数据库连接失败:", err)
|
||
}
|
||
|
||
// 配置连接池
|
||
sqlDB, err := TaskDB.DB()
|
||
if err != nil {
|
||
log.Fatal("获取任务数据库连接池失败:", err)
|
||
}
|
||
sqlDB.SetMaxIdleConns(10) // 最大空闲连接
|
||
sqlDB.SetMaxOpenConns(50) // 最大打开连接
|
||
sqlDB.SetConnMaxLifetime(10 * time.Minute) // 连接最大存活10分钟
|
||
sqlDB.SetConnMaxIdleTime(2 * time.Minute) // 空闲连接2分钟后关闭
|
||
|
||
log.Println("任务数据库连接成功:", cfg.TaskDatabase.Host, cfg.TaskDatabase.Name)
|
||
}
|