docs(datasource): 添加Druid数据源配置文档
- 详细说明Druid数据源的配置方法和参数含义 - 提供主从数据源的配置示例和使用方式 - 介绍Druid监控功能及访问配置 - 列出常见问题及解决方案 - 给出性能优化建议和注意事项
This commit is contained in:
182
mt-pay/DATASOURCE_CONFIG.md
Normal file
182
mt-pay/DATASOURCE_CONFIG.md
Normal 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. **监控统计**:生产环境可以关闭部分监控功能以提升性能
|
||||
|
||||
Reference in New Issue
Block a user