跳至主要內容

更换数据库

码匠君SASSpring Authorization ServerDante Cloud微服务领域驱动DDDSpring BootSpring CloudSpring SecuritySpring Cloud AlibabaSpring Cloud TencentOAuth2.1NacosSkywalkingSentinelSeata大约 4 分钟

更换数据库

步骤一:判断是否需要添加数据库方言配置

Dante Cloud 使用数据库"方言"配置模式,以达到规范化数据库配置,减少参数修改,快速更换数据库的目的。

目前,Dante Cloud 默认提供postgresqlmysql8,mysql57三种方言配置。在 Nacos 的配置中可以找到dante-cloud-database-postgresql.yamldante-cloud-database-mysql8.yaml,dante-cloud-database-mysql57.yaml与之对应。

如果你所使用的数据库,postgresqlmysql8,mysql57三种方言配置并不能满足,那么请按照下面几步操作;如果能满足请跳过。

  1. 在 Nacos 中新建一个按照格式 dante-cloud-database-<database.type>.yaml 命名的配置。

  2. 复制下面的配置内容到该配置中,注意不要改变格式以及具体配置名。

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}
  1. 根据自己使用的数据库,修改配置中对应的的信息。

说明

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.host},{herodotus.environment.database.port},${herodotus.environment.database.nameopen in new window}三个站位符替换,否则*-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 (支持 MySQL5MySQL8 )和 H2 三种数据库的JDBC Driver, 如果你使用数据库不在此范围内,那么就需要在代码包eurynome-cloud-datapom.xml中添加对应数据库的JDBC Driver

步骤五:编译工程代码

以上步骤完成之后,使用mvn packagemvn install命令,重新编译工程。

警告

这一步非常重要,因为Maven无法真正做到与yml配置文件的传参,只有通过编译,在编译过程中用pom.xml<database.type>的值,替换 yml 配置文件中的@database.type@模拟一种参数传递。

修改配置之后,参考数据初始化章节进行数据库初始化工作。

提示

目前仅提供 PostgreSQLMySQL 两种数据库对应的数据初始化脚本,其它数据库需要自己额外处理。如需要使用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.