# Druid数据源配置说明 ## 配置概述 项目已配置使用Alibaba Druid数据源,支持主从数据源配置。 ## 依赖配置 在 `pom.xml` 中已添加Druid依赖: ```xml com.alibaba druid-spring-boot-3-starter 1.2.20 ``` ## 配置文件 ### 主配置文件:application.yml 数据源配置位于 `spring.datasource.druid` 节点下: ```yaml 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`:数据库密码 ## 主从数据源 ### 启用从数据源 在配置文件中设置: ```yaml spring: datasource: druid: slave: enabled: true url: jdbc:mysql://... username: ... password: ... ``` ### 使用从数据源 从数据源Bean名称为 `slaveDataSource`,可以通过以下方式注入: ```java @Resource(name = "slaveDataSource") private DataSource slaveDataSource; ``` ## 注意事项 1. **主数据源**:使用 `@Primary` 注解,是Spring的默认数据源 2. **连接池大小**:根据实际并发量调整 `max-active` 参数 3. **监控安全**:生产环境建议修改监控页面的用户名和密码 4. **慢SQL记录**:可通过 `log-slow-sql` 和 `slow-sql-millis` 配置慢SQL记录 5. **防火墙配置**:生产环境建议配置 `allow` 白名单限制访问 ## 常见问题 ### 1. 连接池耗尽 **现象**:`maxWait` 超时异常 **解决**: - 增加 `max-active` 参数 - 检查是否有连接泄漏 - 优化SQL性能 ### 2. 连接验证失败 **现象**:`validation-query` 执行失败 **解决**: - 检查数据库连接是否正常 - 确认 `validation-query` SQL语句正确 - 检查数据库用户权限 ### 3. 监控页面无法访问 **现象**:404错误 **解决**: - 确认 `stat-view-servlet.enabled` 为 `true` - 检查 `url-pattern` 配置 - 确认Spring Boot版本兼容性 ## 性能优化建议 1. **连接池大小**:根据并发量设置,一般 `max-active` 为 50-200 2. **连接验证**:使用 `test-while-idle` 而不是 `test-on-borrow`,减少性能开销 3. **连接回收**:合理设置 `min-evictable-idle-time-millis` 和 `max-evictable-idle-time-millis` 4. **监控统计**:生产环境可以关闭部分监控功能以提升性能