docs(datasource): 添加Druid数据源配置文档

- 详细说明Druid数据源的配置方法和参数含义
- 提供主从数据源的配置示例和使用方式
- 介绍Druid监控功能及访问配置
- 列出常见问题及解决方案
- 给出性能优化建议和注意事项
This commit is contained in:
2025-12-18 17:40:24 +08:00
parent 57062efd2d
commit 723676ddb3

182
mt-pay/DATASOURCE_CONFIG.md Normal file
View File

@@ -0,0 +1,182 @@
# 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. **监控统计**:生产环境可以关闭部分监控功能以提升性能