Files
MTKJPAY/mt-pay/DATASOURCE_CONFIG.md
qiube 723676ddb3 docs(datasource): 添加Druid数据源配置文档
- 详细说明Druid数据源的配置方法和参数含义
- 提供主从数据源的配置示例和使用方式
- 介绍Druid监控功能及访问配置
- 列出常见问题及解决方案
- 给出性能优化建议和注意事项
2025-12-18 17:40:24 +08:00

4.6 KiB
Raw Blame History

Druid数据源配置说明

配置概述

项目已配置使用Alibaba Druid数据源支持主从数据源配置。

依赖配置

pom.xml 中已添加Druid依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>1.2.20</version>
</dependency>

配置文件

主配置文件application.yml

数据源配置位于 spring.datasource.druid 节点下:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      # 主库数据源
      master:
        url: jdbc:mysql://...
        username: ...
        password: ...
        initial-size: 5
        min-idle: 10
        max-active: 200
        # ... 其他连接池配置
      # 从库数据源
      slave:
        enabled: false
        url:
        username:
        password:
      # Druid监控配置
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: ruoyi
        login-password: 123456

配置类

DruidDataSourceConfig

位置:com.mtkj.mtpay.config.DruidDataSourceConfig

功能:

  • 配置主数据源(@Primary
  • 支持从数据源(可选,通过 slave.enabled 控制)
  • 使用 @ConfigurationProperties 自动绑定配置属性

连接池参数说明

参数 说明 默认值
initial-size 初始连接数 5
min-idle 最小空闲连接数 10
max-active 最大活跃连接数 200
max-wait 获取连接最大等待时间(毫秒) 60000
connect-timeout 连接超时时间(毫秒) 30000
socket-timeout 网络超时时间(毫秒) 60000
time-between-eviction-runs-millis 空闲连接检测间隔(毫秒) 60000
min-evictable-idle-time-millis 连接最小生存时间(毫秒) 300000
max-evictable-idle-time-millis 连接最大生存时间(毫秒) 900000
validation-query 连接验证SQL SELECT 1 FROM DUAL
test-while-idle 空闲时验证连接 true
test-on-borrow 获取连接时验证 false
test-on-return 归还连接时验证 false

Druid监控

访问地址

  • 监控页面:http://localhost:8080/druid/index.html
  • 登录用户名:ruoyi
  • 登录密码:123456

监控功能

  • SQL监控查看SQL执行情况
  • 连接池监控:查看连接池状态
  • Web应用监控查看Web请求统计
  • URI监控查看URI访问统计
  • Session监控查看Session统计

环境配置

开发环境application-dev.yml

使用本地数据库配置,可覆盖主配置中的数据库连接信息。

生产环境application-prod.yml

使用环境变量配置数据库连接:

  • DB_HOST:数据库主机
  • DB_NAME:数据库名称
  • DB_USERNAME:数据库用户名
  • DB_PASSWORD:数据库密码

主从数据源

启用从数据源

在配置文件中设置:

spring:
  datasource:
    druid:
      slave:
        enabled: true
        url: jdbc:mysql://...
        username: ...
        password: ...

使用从数据源

从数据源Bean名称为 slaveDataSource,可以通过以下方式注入:

@Resource(name = "slaveDataSource")
private DataSource slaveDataSource;

注意事项

  1. 主数据源:使用 @Primary 注解是Spring的默认数据源
  2. 连接池大小:根据实际并发量调整 max-active 参数
  3. 监控安全:生产环境建议修改监控页面的用户名和密码
  4. 慢SQL记录:可通过 log-slow-sqlslow-sql-millis 配置慢SQL记录
  5. 防火墙配置:生产环境建议配置 allow 白名单限制访问

常见问题

1. 连接池耗尽

现象maxWait 超时异常

解决

  • 增加 max-active 参数
  • 检查是否有连接泄漏
  • 优化SQL性能

2. 连接验证失败

现象validation-query 执行失败

解决

  • 检查数据库连接是否正常
  • 确认 validation-query SQL语句正确
  • 检查数据库用户权限

3. 监控页面无法访问

现象404错误

解决

  • 确认 stat-view-servlet.enabledtrue
  • 检查 url-pattern 配置
  • 确认Spring Boot版本兼容性

性能优化建议

  1. 连接池大小:根据并发量设置,一般 max-active 为 50-200
  2. 连接验证:使用 test-while-idle 而不是 test-on-borrow,减少性能开销
  3. 连接回收:合理设置 min-evictable-idle-time-millismax-evictable-idle-time-millis
  4. 监控统计:生产环境可以关闭部分监控功能以提升性能