diff --git a/mt-pay/DATASOURCE_CONFIG.md b/mt-pay/DATASOURCE_CONFIG.md new file mode 100644 index 0000000..7d1e88a --- /dev/null +++ b/mt-pay/DATASOURCE_CONFIG.md @@ -0,0 +1,182 @@ +# Druid数据源配置说明 + +## 配置概述 + +项目已配置使用Alibaba Druid数据源,支持主从数据源配置。 + +## 依赖配置 + +在 `pom.xml` 中已添加Druid依赖: + +```xml + + com.alibaba + druid-spring-boot-3-starter + 1.2.20 + +``` + +## 配置文件 + +### 主配置文件: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. **监控统计**:生产环境可以关闭部分监控功能以提升性能 +