更换数据库
步骤一:判断是否需要添加数据库方言配置
Dante Cloud 使用数据库"方言"配置模式,以达到规范化数据库配置,减少参数修改,快速更换数据库的目的。
目前,Dante Cloud 默认提供postgresql
、mysql8
、mysql57
和 opengauss5
四种方言配置。在 Nacos 的配置中可以找到dante-cloud-database-postgresql.yaml
和dante-cloud-database-mysql8.yaml
,dante-cloud-database-mysql57.yaml
与之对应。
如果你所使用的数据库,postgresql
、mysql8
、mysql57
和 opengauss5
四种方言配置并不能满足,那么请按照下面几步操作;如果能满足请跳过。
在 Nacos 中新建一个按照格式
dante-cloud-database-<database.type>.yaml
命名的配置。复制下面的配置内容到该配置中,注意不要改变格式以及具体配置名。
herodotus:
database-information:
platform: postgresql
driver-class-name: org.postgresql.Driver
dialect: org.hibernate.dialect.PostgreSQL10Dialect
url: jdbc:postgresql://${herodotus.environment.database.host}:${herodotus.environment.database.port}/${herodotus.environment.database.name}
- 根据自己使用的数据库,修改配置中对应的的信息。
说明
dante-cloud-database-<database.type>.yaml 中,主要包含针对不同类型数据库,所使用的 JDBC Driver 等相关配置信息。
- platform:指定数据库类型。
注意:platform 具体值来源于枚举类
org.springframework.orm.jpa.vendor.Database
,请使用全部小写字母值进行配置。这个值不分版本,所以 mysql5 数据库和 mysql8 数据库均是使用mysql
,目前支持的值如下:db2
,derby
,h2
,hana
,hsql
,informix
,mysql
,oracle
,postgresql
,sql_server
,sybase
- driver-class-name:数据库驱动类名。
- dialect: 指定 Hibernate 针对不同的数据库的 Dialect,org.hibernate.dialect 包下可以找到具体数据库对应的 dialect。
- url:数据库连接 URL。
注意:这里的的 URL 是通过配置
dante-cloud-environment.yaml
,中的 herodotus.environment.database.host,port,name 等三个值组装而成。如果新增方言配置,不管具体数据库 URL 内容是什么,一定确保数据库地址,端口,数据库名使用${herodotus.environment.database.host},${herodotus.environment.database.port},${herodotus.environment.database.name}三个站位符替换,否则*-environment.yaml 中配置的值将不再生效。
步骤二:修改环境参数
在根据你所使用的 Maven 多环境,找到 Nacos
对应 Group
下的dante-cloud-environment.yaml
配置,修改数据库相关的host
,port
,name
,username
,password
等几个参数的值。
herodotus:
environment:
logstash-server-addr: 127.0.0.1:5044
gateway-server-addr: http://localhost:8847
database:
host: 127.0.0.1
port: 5432
name: herodotus
username: XXXXX
password: XXXXX
步骤三:修改 pom.xml
找到工程根目录下的pom.xml
, 根据你所使用的 Maven 多环境找到对应的<profiles>
, 修改<database.type>
属性值。
<database.type>postgresql</database.type>
注意
该值与步骤一中,dante-cloud-database-<database.type>.yaml
的值对应。
在 Maven 编译的过程中,<database.type>
的值会作为参数传递到各个服务的boostrap.yml
配置中,与boostrap.yml
中已有的信息拼装成 Nacos 中对应的配置名。通过这种方式实现 Maven 多环境,Nacos 配置,不同数据库配置的联动
- data-id: dante-cloud-database-@database.type@.yaml
group: common
步骤四:添加数据库 JDBC Driver
目前,系统代码已经包含 PostgreSQL
, MySQL
(支持 MySQL5
和 MySQL8
)、SQLite
和 OpenGauss
四种数据库的JDBC Driver
, 如果你使用数据库不在此范围内,那么就需要在代码包eurynome-cloud-data
的pom.xml
中添加对应数据库的JDBC Driver
。
步骤五:编译工程代码
以上步骤完成之后,使用mvn package
或mvn install
命令,重新编译工程。
警告
这一步非常重要,因为Maven
无法真正做到与yml
配置文件的传参,只有通过编译,在编译过程中用pom.xml
中<database.type>
的值,替换 yml 配置文件中的@database.type@
模拟一种参数传递。
修改配置之后,参考数据初始化章节进行数据库初始化工作。
提示
目前仅提供 PostgreSQL
和 MySQL
两种数据库对应的数据初始化脚本,其它数据库需要自己额外处理。如需要使用Spring Data JPA
初始化机制,需要手动修改spring.sql.init.*
相关参数。
步骤六:修改工作流服务数据库类型
在 eurynome-cloud-bpmn-ability
模块中,找到bootstrap.yml
。根据你所使用的数据库,修改配置camunda.bpm.database.type
的值。
说明
camunda.bpm.database.type
支持的值有: h2
, mysql
, mariadb
, oracle
, postgres
, mssql
, db2
.