Skip to content

[NEW FEATURE] Druid数据库连接池参数运行时无损轮转功能 #6492

Open

Description

@shiyiyue1102

一.功能特性:

druid1.2.27版本支持连接池参数运行时无损轮转

  1. 账号密码运行时无损替换
  2. 连接池大小的动态调整
  3. 连接请求超时时间queryTimeout
  4. 错误连接地址及账号密码异常保护
  5. 其他druid连接池参数运行时修改

二.与开源组件Spring Cloud Alibaba&Nacos生态整合实现0代码改造接入

spring-cloud-alibaba版本:2023.0.3.3
druid :1.2.27

接入步骤:

  1. 升级druid及spring cloud alibaba nacos config版本

     <dependency>
     	<groupId>com.alibaba</groupId>
     	<artifactId>druid-spring-boot-3-starter</artifactId>
     	<version>1.2.27</version>
     </dependency>
    
     <dependency>
     	<groupId>com.alibaba</groupId>
     	<artifactId>druid</artifactId>
     	<version>1.2.27</version>
     </dependency>
    
     <dependency>
     	<groupId>com.alibaba.cloud</groupId>
     	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     	<version>2023.0.3.3</version>
     </dependency>
    

2.在Nacos创建数据源配置, dataId=druid-datasource.properties,group=nacos-datasource
内容如下:

      spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
      spring.datasource.url=jdbc:mysql://{dbhost}:{dbport}/{dbname}
      spring.datasource.username={username}
      spring.datasource.password={password}
      spring.datasource.druid.maxWait=5000
      spring.datasource.druid.maxActive=20
      spring.datasource.druid.minIdle=15
      spring.datasource.druid.initialSize=7
      spring.datasource.druid.queryTimeout=6

*dataId可自定义,group需固定为nacos-datasource,配置内容的参数请按实际情况进行替换

3.应用侧application.properties引入配置

#将数据源配置导入Spring,初始化数据源
spring.config.import[0]=optional:nacos:druid-datasource.properties?group=nacos-datasource

#指定Nacos地址,请按需修改
spring.cloud.nacos.config.server-addr={nacos server addr}
#Nacos 命名空间ID
spring.cloud.nacos.config.namespace={nacos namespace id}

#打开 druid 运行时轮转开关
spring.nacos.config.proxy.druid.enabled=true
#指定轮转关联的nacos 配置dataId
spring.nacos.config.proxy.druid.data-id=druid-datasource.properties

*nacos地址请按实际情况进行修改

4.重启应用

修改nacos中的数据源 用户密码,连接池参数,超时时间参数,观察应用运行时指标,结合数据库会话监控确认在线连接正常替换。

三. 结合MSE Nacos企业版+密钥管理服务KMS实现企业级数据源配置安全保护

  1. 符合《国家安全二级等保2.0标准》
  2. KMS实现RDS/Polardb数据库账号密码的自动托管&定时轮转
  3. 支持多种数据库DS/Polardb引擎,包括Mysql,Sql Server,PostgreSQL,MariaDB,Oracle等
  4. MSE Nacos企业版对数据源参数的加密存储及运行时推送

接入指引:Spring应用RDS数据源账密运行时轮转

Activity

  1. pinned this issue on Jul 22, 2025
  2. walnut-tom commented on Sep 6, 2025

    @walnut-tom

    正在找动态修改用户名密码的用法,看到这个issue,感觉目前应该是不支持的;可以参考 HikariPoolMXBean.softEvictConnections() 的实现。修改完用户名密码调用 softEvictConnections() 。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions