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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4月前
|
SQL Java 关系型数据库
Dataphin功能Tips系列(53)-离线集成任务如何合理配置JVM资源
本文探讨了将MySQL数据同步至Hive时出现OOM问题的解决方案。
116 5
|
6月前
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
715 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
4月前
|
JSON JavaScript API
MCP 实战:用配置与真实代码玩转 GitHub 集成
MCP 实战:用配置与真实代码玩转 GitHub 集成
1205 4
|
5月前
|
缓存 前端开发 API
(网页系统集成CAD功能)在线CAD中配置属性的使用教程
本文介绍了Mxcad SDK在线预览和编辑CAD图纸的功能及配置方法。通过Vite、CDN或Webpack实现集成,用户可自定义设置以满足项目需求。主要内容包括:1)`createMxCad()`方法的初始属性配置,如画布ID、WASM文件路径、字体加载路径等;2)`MxFun.setIniset()`方法提供的更多CAD初始配置;3)`McObject`对象API用于动态调整视图背景色、浏览模式等。此外,还提供了在线Demo(https://demo2.mxdraw3d.com:3000/mxcad/)供用户测试实时效果。
|
6月前
|
Java 数据库连接
【YashanDB知识库】Springboot启动找不到崖山jdbc驱动的问题处理
本文来自YashanDB官网,主要解决SpringBoot应用启动时出现“找不到崖山JDBC驱动”的问题,尽管lib目录下已有yashandb-jdbc-1.6.9.jar文件。错误信息显示`java.lang.ClassNotFoundException: com.yashandb.jdbc.Driver`。解决方案为:通过`which java`等命令定位Java安装路径,将驱动jar包复制到JRE的`lib/ext`目录下,最后重启应用即可。
|
7月前
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
2989 14
|
6月前
|
关系型数据库 Linux 数据库
PostgreSQL 入门指南:安装、配置与基本命令
本文从零开始,详细介绍如何在 Windows、Linux 和 macOS 上安装和配置 PostgreSQL,涵盖30+个实操代码示例。内容包括安装步骤、配置远程访问和用户权限、基础数据库操作命令(如创建表、插入和查询数据),以及常见问题的解决方案。通过学习,你将掌握 PostgreSQL 的基本使用方法,并为后续深入学习打下坚实基础。
6727 1
|
6月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
861 0
|
6月前
|
缓存 Java 应用服务中间件
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——依赖导入和Thymeleaf相关配置
在Spring Boot中使用Thymeleaf模板,需引入依赖`spring-boot-starter-thymeleaf`,并在HTML页面标签中声明`xmlns:th=&quot;http://www.thymeleaf.org&quot;`。此外,Thymeleaf默认开启页面缓存,开发时建议关闭缓存以实时查看更新效果,配置方式为`spring.thymeleaf.cache: false`。这可避免因缓存导致页面未及时刷新的问题。
255 0
|
10月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
314 1

推荐镜像

更多