database-config-analysis.md 5.69 KB

数据库配置分析与建议

当前配置分析

从提供的 YAML 配置文件中,发现以下情况:

1. 缺失的数据库配置

当前配置文件中缺少直接的数据源配置,需要添加以下配置:

spring:
  datasource:
    # 主数据源配置
    master:
      url: jdbc:mysql://localhost:3306/saas
      username: saas
      password: P89cZHS5d7dFyc9R
      driver-class: com.mysql.cj.jdbc.Driver
      type: com.zaxxer.hikari.HikariDataSource
      hikari:
        maximum-pool-size: 20
        minimum-idle: 5
        connection-timeout: 30000
        idle-timeout: 600000
        max-lifetime: 1800000

    # 动态数据源配置(多租户支持)
    dynamic:
      enabled: true
      primary: master
      strict: false
      datasource:
        # 店匠生产数据库
        shoplazza:
          url: jdbc:mysql://120.79.247.228:3316/saas
          username: saas
          password: P89cZHS5d7dFyc9R
          driver-class: com.mysql.cj.jdbc.Driver
          type: com.zaxxer.hikari.HikariDataSource

2. 当前已有的相关配置

Redis 配置

spring:
  data:
    redis:
      host: 127.0.0.1
      port: 6379
      database: 0
      timeout: 5000ms
      lettuce:
        pool:
          max-active: 200
          max-idle: 20
          min-idle: 5
          max-wait: -1ms

MyBatis Plus 配置

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
  global-config:
    db-config:
      id-type: NONE
      logic-delete-value: 1
      logic-not-delete-value: 0

3. 从项目结构推断的数据库配置

基于之前分析的项目文件,完整的数据库配置应该包括:

3.1 连接池配置

spring:
  datasource:
    master:
      hikari:
        # 连接池最大连接数
        maximum-pool-size: 20
        # 连接池最小空闲连接数
        minimum-idle: 5
        # 连接超时时间(毫秒)
        connection-timeout: 30000
        # 空闲连接超时时间(毫秒)
        idle-timeout: 600000
        # 连接最大生命周期(毫秒)
        max-lifetime: 1800000
        # 连接测试查询
        connection-test-query: SELECT 1

3.2 多数据源配置

spring:
  datasource:
    dynamic:
      enabled: true
      primary: master
      strict: false
      datasource:
        # 主库(读写)
        master:
          url: jdbc:mysql://120.79.247.228:3316/saas
          username: saas
          password: P89cZHS5d7dFyc9R
          driver-class: com.mysql.cj.jdbc.Driver

        # 从库(只读)- 可选配置
        slave:
          url: jdbc:mysql://slave-host:3306/saas
          username: saas_readonly
          password: readonly_password
          driver-class: com.mysql.cj.jdbc.Driver

3.3 JPA/Hibernate 配置

spring:
  jpa:
    show-sql: false
    hibernate:
      ddl-auto: none
      naming:
        physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL8Dialect
        format_sql: true
        use_sql_comments: true
        jdbc:
          batch_size: 50
          order_inserts: true
          order_updates: true

4. 环境配置建议

开发环境(application-dev.yml)

spring:
  profiles:
    active: dev

  datasource:
    master:
      url: jdbc:mysql://localhost:3306/saas_dev
      username: root
      password: root
      driver-class: com.mysql.cj.jdbc.Driver
      hikari:
        maximum-pool-size: 10
        minimum-idle: 2
        connection-timeout: 30000

# 开发环境 SQL 输出
logging:
  level:
    com.hsyl.saas.mapper: DEBUG
    org.springframework.jdbc.core: DEBUG

生产环境(application-prod.yml)

spring:
  profiles:
    active: prod

  datasource:
    master:
      url: jdbc:mysql://120.79.247.228:3316/saas
      username: saas
      password: P89cZHS5d7dFyc9R
      driver-class: com.mysql.cj.jdbc.Driver
      hikari:
        maximum-pool-size: 50
        minimum-idle: 10
        connection-timeout: 60000
        max-lifetime: 3600000

# 生产环境 SQL 监控
management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,datasource

5. 数据库连接信息汇总

环境 主机 端口 数据库 用户名 密码
本地开发 localhost 3306 saas saas P89cZHS5d7dFyc9R
生产环境 120.79.247.228 3316 saas saas P89cZHS5d7dFyc9R

6. 必需的依赖项

确保 pom.xmlbuild.gradle 包含以下依赖:

<!-- MySQL 连接器 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

<!-- HikariCP 连接池 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version>
</dependency>

<!-- 动态数据源 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.6.1</version>
</dependency>

7. 测试数据库连接

# 测试本地数据库连接
mysql -h localhost -P 3306 -u saas -pP89cZHS5d7dFyc9R saas

# 测试生产数据库连接
mysql -h 120.79.247.228 -P 3316 -u saas -pP89cZHS5d7dFyc9R saas

结论

当前配置文件缺少完整的数据库配置,需要补充:

  1. 数据源连接信息(URL、用户名、密码)
  2. 连接池配置(HikariCP 参数)
  3. 多数据源配置(如需多租户支持)
  4. JPA/Hibernate 配置(数据库方言、DDL 策略等)

建议根据环境(开发/测试/生产)分别配置不同的数据库连接参数。