- 详细说明Druid数据源的配置方法和参数含义 - 提供主从数据源的配置示例和使用方式 - 介绍Druid监控功能及访问配置 - 列出常见问题及解决方案 - 给出性能优化建议和注意事项
183 lines
4.6 KiB
Markdown
183 lines
4.6 KiB
Markdown
# Druid数据源配置说明
|
||
|
||
## 配置概述
|
||
|
||
项目已配置使用Alibaba Druid数据源,支持主从数据源配置。
|
||
|
||
## 依赖配置
|
||
|
||
在 `pom.xml` 中已添加Druid依赖:
|
||
|
||
```xml
|
||
<dependency>
|
||
<groupId>com.alibaba</groupId>
|
||
<artifactId>druid-spring-boot-3-starter</artifactId>
|
||
<version>1.2.20</version>
|
||
</dependency>
|
||
```
|
||
|
||
## 配置文件
|
||
|
||
### 主配置文件: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. **监控统计**:生产环境可以关闭部分监控功能以提升性能
|
||
|