如何在Druid中同时使用MySQL与PostgreSQL扩展并添加Postgres驱动到类路径?
解决Druid同时使用MySQL元数据存储与PostgreSQL查询的问题
问题根源在于mysql-metadata-storage和postgresql-metadata-storage这两个扩展都实现了Druid的MetadataStorageConnectorProvider接口,同时加载会触发类冲突,因此Druid禁止同时启用两者。
要实现用MySQL存元数据、用PostgreSQL做查询的需求,无需加载postgresql-metadata-storage扩展,仅需手动将PostgreSQL JDBC驱动加入Druid的类路径即可,具体步骤如下:
- 下载兼容的PostgreSQL JDBC驱动:选择与你的Druid版本匹配的PostgreSQL驱动包(例如
postgresql-42.7.0.jar,具体版本可根据Druid官方说明或实际测试确认)。 - 放置驱动包到类路径:将下载好的驱动包复制到Druid安装目录下的
lib文件夹中。如果是集群部署,所有需要处理查询的节点(如Broker、Coordinator、Overlord)都要放置该驱动包。 - 调整扩展加载配置:修改
druid.extensions.loadList,移除postgresql-metadata-storage,仅保留mysql-metadata-storage,示例配置如下:druid.extensions.loadList=["druid-s3-extensions","druid-kafka-indexing-service","druid-multi-stage-query","druid-histogram","druid-kinesis-indexing-service","clarity-emitter","druid-parquet-extensions","druid-azure-extensions","druid-datasketches","mysql-metadata-storage","druid-lookups-cached-global"] - 重启Druid服务:所有节点重启后,PostgreSQL驱动会被加载到类路径中,此时即可在查询时通过JDBC连接PostgreSQL数据源,同时元数据仍由MySQL存储。
注意:务必保证驱动版本与Druid版本兼容,避免因版本不匹配引发连接异常。
内容的提问来源于stack exchange,提问作者Optimus Prime
相关产品推荐
相关产品推荐

