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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
9月前
|
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。
1257 0
|
6月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
556 4
|
7月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1336 5
|
7月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
393 0
探索Spring Boot的@Conditional注解的上下文配置
|
8月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
1409 10
|
9月前
|
虚拟化 iOS开发 MacOS
VMware ESXi 9.0.0.0100 macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 9.0.0.0100 macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
1747 1
|
10月前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
1417 2
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
620 0
|
存储 缓存 关系型数据库
|
存储 SQL 并行计算
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(中)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
803 0

推荐镜像

更多