- 详细说明Druid数据源的配置方法和参数含义 - 提供主从数据源的配置示例和使用方式 - 介绍Druid监控功能及访问配置 - 列出常见问题及解决方案 - 给出性能优化建议和注意事项
4.6 KiB
4.6 KiB
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;
注意事项
- 主数据源:使用
@Primary注解,是Spring的默认数据源 - 连接池大小:根据实际并发量调整
max-active参数 - 监控安全:生产环境建议修改监控页面的用户名和密码
- 慢SQL记录:可通过
log-slow-sql和slow-sql-millis配置慢SQL记录 - 防火墙配置:生产环境建议配置
allow白名单限制访问
常见问题
1. 连接池耗尽
现象:maxWait 超时异常
解决:
- 增加
max-active参数 - 检查是否有连接泄漏
- 优化SQL性能
2. 连接验证失败
现象:validation-query 执行失败
解决:
- 检查数据库连接是否正常
- 确认
validation-querySQL语句正确 - 检查数据库用户权限
3. 监控页面无法访问
现象:404错误
解决:
- 确认
stat-view-servlet.enabled为true - 检查
url-pattern配置 - 确认Spring Boot版本兼容性
性能优化建议
- 连接池大小:根据并发量设置,一般
max-active为 50-200 - 连接验证:使用
test-while-idle而不是test-on-borrow,减少性能开销 - 连接回收:合理设置
min-evictable-idle-time-millis和max-evictable-idle-time-millis - 监控统计:生产环境可以关闭部分监控功能以提升性能