SpringBoot【集成 01】Druid+Dynamic+Greenplum(实际上用的是PostgreSQL的驱动)及 dbType not support 问题处理(附hikari相关配置)

简介: SpringBoot【集成 01】Druid+Dynamic+Greenplum(实际上用的是PostgreSQL的驱动)及 dbType not support 问题处理(附hikari相关配置)

1.起因

项目使用了 Greenplum 数据库和 MySQL 数据库,连接池使用的是 Druid,但是 Druid 是不支持 Greenplum 数据库的 😢 以下尝试未在生成环境测试请谨慎使用

2.依赖

只贴出核心依赖:

<!--连接池 Druid-->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid-spring-boot-starter</artifactId>
  <version>1.1.10</version>
</dependency>
<!--多数据源管理 Dynamic-->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>2.4.2</version>
</dependency>
<!--数据源 MySQL+PostgreSQL(用于连接Greenplum)-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <scope>runtime</scope>
</dependency>

特别注意 如果直接使用greenplum的依赖和配置将会报错:

java.lang.IllegalStateException: 
dbType not support : 
null, url jdbc:pivotal:greenplum://xxx.xx.xxx.xxx:5432:5432/postgres
<dependency>
  <groupId>com.jdbc</groupId>
  <artifactId>greenplum</artifactId>
  <version>5.1.4</version>
</dependency>
spring:
  datasource:
    dynamic:
      datasource:
        gp:
          url: jdbc:pivotal:greenplum://xxx.xx.xxx.xxx:5432;DatabaseName=postgres
          username: gpadmin
          password: gpadmin
          driver-class-name: com.pivotal.jdbc.GreenplumDriver

3.配置

只贴出核心配置:

spring:
  # 多数据源不自动配置DruidDataSourceAutoConfigure
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  # 
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: admin
        allow:
      web-stat-filter:
        enabled: true
    dynamic:
      # 全局 druid 参数配置(单独数据源配置为空时取全局配置)这里不再详细说明
      druid:
        initial-size: 1
        min-idle: 3
        maxActive: 8
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        # 不可使用 SELECT 1 FROM DUAL GP数据库没有DUAL
        validationQuery: SELECT NOW()
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        filters: stat,wall,slf4j
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      primary: mysql
      p6spy: true
      datasource:
        mysql:
          url: jdbc:mysql://localhost:3306/test
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        gp:
          url: jdbc:postgresql://xxx.xx.xxx.xxx:5432/postgres
          username: gpadmin
          password: gpadmin
          driver-class-name: org.postgresql.Driver

4.测试

启动项目,数据源初始化成功。

2022-05-26 14:16:14.836  INFO 12324 
--- [  restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1,mysql} inited
2022-05-26 14:16:15.114  INFO 12324 
--- [  restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2,gp} inited

查询 Greenplum 数据库也没有问题,SQL 监控也能够监控 Greenplum 数据库的执行情况,未在生成环境测试请谨慎使用

5. hikari

仅贴出核心配置:

spring:
  datasource:
    hikari:
      pool-name: HikariConPool
      #最小空闲连接数
      minimum-idle: 3
      #空闲链接最大存活时间,默认600000(10分钟)
      idle-timeout: 1800000
      #最大连接数
      maximum-pool-size: 20
      #从连接池返回的链接自动提交
      auto-commit: true
      #链接最大存活时间,0表示永久存活,默认1800000(30分钟)
      max-lifetime: 1800000
      #连接超时时间,默认(30秒)
      connection-timeout: 30000

如果想验证hikari的使用情况可添加日志配置:

logging:
  level:
    com.zaxxer.hikari.HikariConfig: debug
    com.zaxxer.hikari: debug

启动信息:

2022-05-26 17:08:04.217  INFO 10108 
--- [  restartedMain] com.zaxxer.hikari.HikariDataSource       
: mysql - Starting...
2022-05-26 17:08:04.301  INFO 10108 
--- [  restartedMain] com.zaxxer.hikari.HikariDataSource       
: mysql - Start completed.
2022-05-26 17:08:04.301  INFO 10108 
--- [  restartedMain] com.zaxxer.hikari.HikariDataSource       
: gp - Starting...
2022-05-26 17:08:04.592  INFO 10108 
--- [  restartedMain] com.zaxxer.hikari.pool.PoolBase          
: gp - Driver does not support get/set network timeout for connections. ([Pivotal][Greenplum JDBC Driver]This driver does not support the 'getNetworkTimeout' and 'setNetworkTimeout' methods.)
2022-05-26 17:08:04.592  INFO 10108 
--- [  restartedMain] com.zaxxer.hikari.HikariDataSource       
: gp - Start completed.
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
Java Spring
Spring Boot配置的优先级?
在Spring Boot项目中,配置可通过配置文件和外部配置实现。支持的配置文件包括application.properties、application.yml和application.yaml,优先级依次降低。外部配置常用方式有Java系统属性(如-Dserver.port=9001)和命令行参数(如--server.port=10010),其中命令行参数优先级高于系统属性。整体优先级顺序为:命令行参数 &gt; Java系统属性 &gt; application.properties &gt; application.yml &gt; application.yaml。
1371 0
|
10月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
651 4
|
11月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1818 5
|
11月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
570 0
探索Spring Boot的@Conditional注解的上下文配置
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
1599 10
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
613 0
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
1708 6
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
1281 4
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
1748 1

推荐镜像

更多