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

183 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. **监控统计**:生产环境可以关闭部分监控功能以提升性能