| name | druid-xugudb-adapter |
| description | Druid 连接池适配虚谷数据库(XuguDB)的完整指南。当用户需要将基于 Druid 的数据库连接池配置或适配到虚谷数据库时使用此技能,包括依赖配置、连接池配置、监控配置、WallFilter 配置、多数据源配置等。适用于从 MySQL/Oracle 迁移或新建虚谷数据库项目。 |
Druid 连接池虚谷数据库适配指南
概述
本技能提供 Druid 连接池适配虚谷数据库(XuguDB)的完整流程。Druid 是阿里巴巴开源的高性能数据库连接池和 SQL 解析器,通过适配虚谷数据库,可以实现连接池管理、SQL 监控、安全防护等功能。
适配流程
在开始适配前,按以下顺序检查和修改:
1. 依赖配置 → 2. 连接池配置 → 3. 监控配置 → 4. WallFilter 配置 → 5. 功能验证 → 6. 性能优化
第一步:配置依赖
使用虚谷适配版 Druid
重要: 必须使用虚谷官方提供的适配版 Druid,而非阿里云原版。
从源码编译安装
- 从虚谷数据库开放源代码仓库下载指定版本(如
xugu-druid-1.1.24)的源码
- 在项目根目录执行 Maven 命令:
mvn install:install-file -Dfile=./lib/druid-1.1.24.jar -DgroupId=com.alibaba -DartifactId=druid -Dversion=1.1.24 -Dpackaging=jar -DgeneratePom=true
Maven 依赖配置
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.24</version>
</dependency>
<dependency>
<groupId>com.xugudb</groupId>
<artifactId>xugu-jdbc</artifactId>
<version>12.3.4</version>
</dependency>
第二步:配置连接池
单一数据源配置
spring:
datasource:
url: jdbc:xugu://127.0.0.1:5135/system?char_set=UTF8
username: SYSDBA
password: SYSDBA
driver-class-name: com.xugu.cloudjdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
initialSize: 5
minIdle: 10
maxActive: 20
maxWait: 6000
time-between-eviction-runs-millis: 2000
min-evictable-idle-time-millis: 600000
max-evictable-idle-time-millis: 1800000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
keep-alive: true
poolPreparedStatements: false
maxPoolPreparedStatementPerConnectionSize: 0
关键配置说明:
char_set=UTF8:字符集配置
validationQuery: SELECT 1:虚谷数据库使用 SELECT 1 而不是 SELECT 1 FROM DUAL
testOnBorrow: false:建议关闭借出时检测,提高性能
第三步:配置监控
过滤器配置
spring:
datasource:
druid:
filters: wall,stat,log4j2
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000
Web 监控页面配置
spring:
datasource:
druid:
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: /druid/*,*.js,*.css,*.gif,*.jpg,*.bmp,*.png,*.ico
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: false
监控页面访问: 启动应用后,访问 http://localhost:8080/druid/ 即可查看监控页面。
第四步:配置 WallFilter
WallFilter 基础配置
spring:
datasource:
druid:
filter:
wall:
enabled: true
config:
backup-allow: true
restore-allow: true
WallFilter 配置说明:
backup-allow: true:允许虚谷数据库的 BACKUP 语句
restore-allow: true:允许虚谷数据库的 RESTORE 语句
strictSyntaxCheck: false:遇到解析错误时临时关闭严格语法检查
第五步:功能验证
验证基本功能
- 连接测试:确保应用能成功连接到虚谷数据库
- 连接池监控:访问监控页面查看连接池状态
- SQL 监控:查看 SQL 执行统计和慢 SQL
- WallFilter:测试 SQL 防火墙功能
- 多数据源:测试多数据源切换功能
验证高级功能
- 连接泄漏检测:测试连接泄漏检测功能
- 慢 SQL 统计:测试慢 SQL 统计功能
- SQL 注入防护:测试 WallFilter 防护功能
- 监控告警:测试监控告警功能
- 性能分析:测试性能分析功能
第六步:性能优化
连接池参数优化
spring:
datasource:
druid:
initialSize: 10
minIdle: 20
maxActive: 50
maxWait: 10000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
max-evictable-idle-time-millis: 900000
监控优化
spring:
datasource:
druid:
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
SQL 优化
- 使用索引:为常用查询字段创建索引
- 避免全表扫描:确保查询条件包含索引字段
- 批量操作:使用批量插入和更新
- 连接复用:合理配置连接池参数
常见问题排查
1. 驱动类找不到
现象: 启动时报错 Driver class not found
原因: JDBC 驱动未正确引入
解决: 确保 xugu-jdbc 依赖已正确配置
2. 连接 URL 错误
现象: 连接时报错 Invalid connection URL
原因: URL 参数错误
解决: 确保使用正确的 URL 格式,并包含 char_set=UTF8
3. dbType not support : xugu 错误
现象: 启动时报错 dbType not support : xugu
原因: 使用了未适配的原版 Druid 且开启了 WallFilter
解决:
- 使用虚谷适配版 Druid
- 或关闭 WallFilter(从
filters 中移除 wall)
4. SQL 解析错误 ParserException
现象: 执行 SQL 时报错 ParserException
原因: WallFilter 无法解析虚谷特有 SQL
解决:
- 确认 SQL 无风险后,临时关闭严格语法检查:
strictSyntaxCheck: false
- 或关闭 WallFilter
5. SQL 注入违规 sql injection violation
现象: 执行 SQL 时报错 sql injection violation
原因: SQL 被识别为有风险
解决:
- 检查 WallFilter 的
config 项,为所需的虚谷语句设置允许(xxx-allow: true)
- 如无需此功能,则关闭 WallFilter
6. 连接超时问题
现象: 连接超时
原因: Druid v1.2.12+ 默认设置了 10 秒超时,可能覆盖 URL 参数
解决:
- 显式配置
connect-timeout 和 socket-timeout
- 或升级到已修复的 Druid 版本
7. 监控页面无法访问
现象: 访问 /druid/ 路径返回 404
原因: 监控页面配置不正确
解决:
- 确保
stat-view-servlet.enabled 设置为 true
- 检查
url-pattern 配置是否正确
最佳实践
1. 版本管理
- 始终使用虚谷适配版 Druid,而非阿里云原版
- 定期检查虚谷官方发布的适配更新
2. 配置管理
- 使用外部化配置(如 application.yml)
- 为不同环境使用不同配置
- 敏感信息使用环境变量或加密存储
3. 性能优化
- 合理配置连接池参数
- 启用 SQL 合并和慢 SQL 统计
- 使用监控页面分析性能瓶颈
4. 安全性
- 使用 WallFilter 防止 SQL 注入
- 配置监控页面登录认证
- 定期更换数据库密码
5. 监控与日志
- 启用监控页面(生产环境建议关闭或限制访问)
- 配置慢 SQL 阈值
- 定期检查连接池状态
参考文档
详细的配置指南和故障排除请参考: