Druid 连接池版本迁移:从 1.0.x 到 1.2.x 的完整升级实战 Druid 连接池版本迁移从 1.0.x 到 1.2.x 的完整升级实战【免费下载链接】druid阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品为监控而生的数据库连接池项目地址: https://gitcode.com/gh_mirrors/druid/druid把 Druid 从 1.0.x 升到 1.2.x构建是过了日志里却开始刷 deprecated 警告监控面板数据也说不清是坏在配置还是版本上——升级做了一半心里没底。这篇指南带你走完 Druid 连接池版本迁移的完整流程从动手前的检查清单到依赖、配置、API 的逐项实操再到踩坑排障和升级后的验证调优照着做就能直接落地不用自己翻源码拼凑信息。一、版本差异速览1.0.x 与 1.2.x 改了什么对比维度1.0.x1.2.x池容量配置maxIdle/maxActive混用maxIdle标记废弃Deprecated调用即打错误日志统一由minIdlemaxActive决定容量连接回收/保活仅timeBetweenEvictionRunsMillis等回收参数新增keepAlive/keepAliveBetweenTimeMillis空闲连接保活机制监控统计 API直接读JdbcSqlStat等对象JdbcSqlStat增加isRemoved()状态标记配合 Stat View 面板与JdbcStatManager使用高可用能力单数据源为主内置 HighAvailableDataSource节点路由、随机/粘性随机选择、节点健康检查多框架适配Spring Boot 1/2 时代的 starter独立的 Spring Boot 3 / Spring Boot 4 starter属性统一在spring.datasource.druid前缀下影响最大的是前两项容量配置从maxIdle迁移到minIdlemaxActive以及监控数据获取方式的变化。这两处不改升级后要么一直刷错误日志要么监控页直接没数后面所有调优都无从谈起。二、动手前的检查清单备份现网配置把当前application.properties/ Spring XML / 数据源工厂的 properties 完整存档作为回滚基线确认 starter 版本匹配Spring Boot 3 用druid-spring-boot-3-starterBoot 2 用druid-spring-boot-starterBoot 4 用druid-spring-boot-4-starter版本错位会导致自动配置整体失效扫描废弃 API 调用全局搜索mergWallStat、maxIdle等旧写法记录在案的先别急着删迁移时统一处理预留回滚窗口升级与回滚放同一发布窗口确认监控面板和 SQL 防火墙功能可快速验证核对连接检测配置确认testWhileIdle、validationQuery或 JDBC4 校验已就绪升级后空闲连接行为会变没有校验手段很容易埋雷三、核心迁移实操3.1 更新依赖先换对 starter 再换核心包版本号以仓库 core/src/main/java/com/alibaba/druid/VERSION.java 和官方发布说明为准此处以 1.2.29 为例dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.2.29/version /dependency !-- Spring Boot 3 项目配套使用Boot 2 换成 druid-spring-boot-starter -- dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-3-starter/artifactId version1.2.29/version /dependency注意starter 与主包版本必须一致且与你的 Spring Boot 主版本对应。starter 选错时症状是数据源静默退化成普通DataSource监控与过滤器全部失效比直接报错难查得多。3.2 配置清理maxIdle 的退场与容量参数定型新版setMaxIdle()已被Deprecated每次调用都会向日志输出maxIdle is deprecated错误。旧配置里它和maxActive混着用迁移后容量语义由minIdlemaxActive完全接管# 变更前1.0.x 常见写法 druid.initialSize5 druid.minIdle5 druid.maxActive20 druid.maxIdle30 druid.maxWait60000 # 变更后1.2.x druid.initialSize5 druid.minIdle5 druid.maxActive20 druid.maxWait60000maxIdle直接删除即可它不再参与容量计算。maxActive默认只有 8从 1.0 升上来如果当初没显式配置过这里一定要显式补齐。Spring Boot 项目里同样的参数放在spring.datasource.druid前缀下spring.datasource.druid.urljdbc:mysql://localhost:3306/db spring.datasource.druid.usernameroot spring.datasource.druid.passwordpassword spring.datasource.druid.initial-size5 spring.datasource.druid.min-idle5 spring.datasource.druid.max-active20 spring.datasource.druid.max-wait60000 spring.datasource.druid.filtersstat,wall3.3 API 迁移监控统计接口的替换自定义监控代码里如果还在用旧版工具方法需要按废弃标记替换// 变更前旧版拼写错误的方法已标记 Deprecated Map stat DruidStatManagerFacade.mergWallStat(mapA, mapB); // 变更后使用修正后的方法 Map stat DruidStatManagerFacade.mergeWallStat(mapA, mapB);另外注意JdbcSqlStat新增了isRemoved()状态标记统计列表里会被标记为 removed 的 SQL 项遍历时需要自行过滤否则自定义报表里会出现已下线的脏数据。四、高频踩坑与排障问题一启动后日志持续刷 maxIdle is deprecated现象日志里反复出现maxIdle is deprecated的 ERROR 级信息业务无感知。原因配置文件或代码里仍残留maxIdle配置项setMaxIdle()在新版被Deprecated每次赋值都会打日志。解法1) 全局搜索配置文件与代码删除maxIdle相关设置2) 用minIdlemaxActive按预期容量重设组合3) 重启确认日志干净、连接数行为符合预期。问题二升级后 Stat View 监控页 404 或数据全空现象/druid/index.html打不开或页面打开但数据源、SQL 统计全部为空。原因新版 starter 中 stat-view-servlet 由开关控制且统计依赖filtersstat挂载的过滤器两者缺一不可。解法1) 确认开启spring.datasource.druid.stat-view-servlet.enabledtrue spring.datasource.druid.filtersstat,wall检查应用实际加载的 starter 与 Spring Boot 版本是否匹配3) 重启后重新访问面板确认数据源列表有数据。问题三空闲连接被数据库/防火墙侧掐断现象业务低峰期取连接偶发Communications link failure。原因旧版没有保活手段空闲连接超过中间设备超时后被单方面关闭Druid 不知情。解法1) 开启keepAlivetrue并设置keepAliveBetweenTimeMillis2) 确认testWhileIdletrue与timeBetweenEvictionRunsMillis配置合理详见 doc/connection-pool-guide.md。五、升级后的验证与调优启动日志干净无 deprecated 警告、无异常堆栈Stat View 面板可访问数据源、SQL 监控、Web URI、SQL 防火墙各页签数据完整压测连接获取耗时与旧版本基线持平或更优SQL 防火墙wall filter拦截行为符合安全基线监控页确认removed的 SQL 统计项已被过滤不污染报表建议把上面的指标记录下来作为性能基线每次升级或调整容量参数后都对照一次。日常把 Stat View 接入团队例行巡检配合日志中timeBetweenLogStatsMillis输出的周期统计异常能在第一时间暴露。升级完成只是起点不是终点。连接池参数和业务流量是动态博弈的保持观察才能把 1.2.x 的能力吃透。一周内建立连接获取耗时、活跃连接数、SQL 耗时的基线数据把监控面板纳入发布检查流程每次变更必过一遍有读写分离或分库分表场景的评估引入 HighAvailableDataSource 做数据源层负载均衡下一步打开你的监控面板看看迁移后的第一组数据吧 【免费下载链接】druid阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品为监控而生的数据库连接池项目地址: https://gitcode.com/gh_mirrors/druid/druid创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考