说明
nacos 2.3.1默认支持mysql和derby数据库,如果想要支持其他数据库,可以通过使用插件方式实现。对于该插件的使用,官方说明文档较为粗略(不过也没问题,实际上整个过程就是很简单,只是使用者想复杂了),网上很多资料都是放弃使用官方插件,而是参考官网插件代码修改源码后打包。本文记录直接使用插件,不修改代码(pom依赖除外),实现nacos更换数据库为达梦的需求(切换其他数据库同理,目前插件支持的类型有:postgresql,oracle,dm)
插件参考资料
官方解答:nacos支持postgresql数据库吗?
步骤
下载源码
nacos2.3.1源码:nacos
datasource插件地址: nacos-datasource-plugin-ext
安装插件
插件目录结构如下,该项目有多个插件,现在我只需要nacos-datasource-plugin-ext中的nacos-dm-datasource-plugin-ext,直接删除pom中其他无关内容即可。
修改nacos-plugin-ext的pom如下:
<modules>
<module>nacos-datasource-plugin-ext</module>
</modules>
修改nacos.version为指定版本,我这边为2.3.1:
修改nacos-datasource-plugin-ext的pom如下(nacos-datasource-plugin-ext-base工程为数据库插件操作的适配抽象,所有具体实现类都需要依赖这个base,所以需要包含):
<modules>
<module>nacos-datasource-plugin-ext-base</module>
<module>nacos-dm-datasource-plugin-ext</module>
</modules>
在顶层目录(nacos-plugin-ext)执行mvn clean install
引用插件
打开源码后,结构如下,修改nacos-all下的pom的dependencies加入(注意非dependencyManagement节点):
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-dm-datasource-plugin-ext</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
在根目录重新打包:
mvn -Prelease-nacos clean install -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dpmd.skip=true -Drat.skip=true -U
最终生成的文件:
替换docker配置及jar文件
将docker容器中的配置和jar文件映射到本地
修改application.properties如下(当然这里的配置也可以做成mysql那种通过环境变量传递的形式,本文仅测试,写死):
spring.sql.init.platform=dm
db.url.0=jdbc:dm://192.168.10.70:30236?schema=NACOS&compatibleMode=mysql&ignoreCase=true&ENCODING=utf-8
db.user.0=SYSDBA
db.password.0=SYSDBA001
db.pool.config.driverClassName=dm.jdbc.driver.DmDriver
最后利用docker-compose重新构建容器即可(重启前需手动在dameng数据库执行nacos对应的脚本,在nacos-dm-datasource-plugin-ext模块下有对应sql)