更换数据库

码匠君 ... 2021-10-28 大约 4 分钟

# 更换数据库

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

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

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

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

  1. 在Nacos中新建一个按照格式 eurynome-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
2
3
4
5
6
  1. 根据自己使用的数据库,修改配置中对应的的信息。

说明

eurynome-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是通过配置eurynome-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.name}三个站位符替换,否则*-environment.yaml中配置的值将不再生效。

# 步骤二:修改环境参数

在根据你所使用的 Maven多环境,找到 Nacos 对应 Group 下的eurynome-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
1
2
3
4
5
6
7
8
9
10

# 步骤三:修改pom.xml

找到工程根目录下的pom.xml, 根据你所使用的 Maven多环境找到对应的<profiles>, 修改<database.type>属性值。

<database.type>postgresql</database.type>
1

注意

该值与步骤一中,eurynome-cloud-database-<database.type>.yaml的值对应。

在Maven编译的过程中,<database.type>的值会作为参数传递到各个服务的boostrap.yml配置中,与boostrap.yml中已有的信息拼装成Nacos中对应的配置名。通过这种方式实现Maven多环境,Nacos配置,不同数据库配置的联动

- data-id: eurynome-cloud-database-@database.type@.yaml
  group: common
1
2

# 步骤四:添加数据库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.

上次编辑于: 2021年10月28日 23:24
贡献者: herodotus