跳到主要内容

数据库环境配置

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本指南提供了完整的数据库环境配置文档,涵盖MySQL 8.0+、Redis 5.0+、Nacos 2.x和TDengine时序数据库的安装、配置和验证方法。基于yudao-cloud项目的实际配置,详细说明了连接参数、字符集设置、连接池配置等关键要素。

项目结构

该项目采用微服务架构,包含多个子模块,每个模块都有独立的数据库配置:

Mermaid Diagram Code:

graph TB
subgraph "数据库配置"
A[MySQL配置] --> B[生产环境配置]
A --> C[开发环境配置]
D[Redis配置] --> E[缓存配置]
F[TDengine配置] --> G[时序数据配置]
H[Nacos配置] --> I[注册配置中心]
end
subgraph "应用模块"
J[系统模块] --> K[基础设施]
L[黑名单模块] --> M[设备管理]
N[任务模块] --> O[报表模块]
end
A --> J
D --> L
F --> N

图表来源

章节来源

核心组件

MySQL 8.0+ 配置

项目提供了两种MySQL配置模式:

  1. 单数据库模式:适用于开发环境
  2. 多数据库模式:适用于生产环境,支持多个业务数据库

连接参数配置

spring:
datasource:
druid:
# 连接池配置
initial-size: 5
min-idle: 10
max-active: 20
max-wait: 600000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
max-evictable-idle-time-millis: 900000
test-while-idle: true
test-on-borrow: false
test-on-return: false
system:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.87:3306/ik_yudao_base?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
username: ik
password: shwegsauhgdb2u321g
validation-query: SELECT 1 FROM DUAL

字符集设置

项目使用utf8mb4字符集,确保支持完整的Unicode字符:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

章节来源

Redis 5.0+ 配置

Redis配置包含连接参数和缓存设置:

spring:
data:
redis:
host: 172.30.223.181
port: 28530
database: 0
password: qweHvb4NDJ2334hGb2M86GbV
cache:
type: REDIS
redis:
time-to-live: 1h

章节来源

TDengine 时序数据库配置

项目支持多种TDengine配置场景:

-- 创建数据库
CREATE DATABASE app_activity_day PRECISION 'ms' KEEP 90 DURATION 1 BUFFER 126 CACHESIZE 16 MINROWS 1000 MAXROWS 40960;

-- 创建超级表
CREATE STABLE app_activity_day.app_activity_detail (
ts timestamp,
data_key varchar(64) PRIMARY KEY,
mac varchar(32),
cpu varchar(32),
version_code int,
duration int
) TAGS (
record_time int,
package_name varchar(255)
);

章节来源

架构概览

Mermaid Diagram Code:

graph TB
subgraph "应用层"
A[微服务应用]
B[网关服务]
end
subgraph "数据层"
C[MySQL集群]
D[Redis缓存]
E[TDengine时序库]
F[Nacos配置中心]
end
subgraph "监控层"
G[Druid监控]
H[Spring Boot Admin]
I[Actuator端点]
end
A --> C
A --> D
A --> E
B --> F
C --> G
D --> H
E --> I

图表来源

详细组件分析

MySQL安装与配置

Docker安装方式

项目提供了完整的Docker Compose配置,支持MySQL 8.0.33版本:

mysql:
image: mysql:8.0.33
restart: unless-stopped
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: ruoyi-vue-pro
ports:
- "3306:3306"
volumes:
- mysql:/var/lib/mysql/
- ./mysql/ruoyi-vue-pro.sql:/docker-entrypoint-initdb.d/init.sql:ro
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1

初始化脚本执行

MySQL初始化过程包含以下步骤:

  1. 容器启动:使用MySQL 8.0.33镜像
  2. 环境变量设置:配置时区、root密码、数据库名称
  3. 端口映射:将3306端口映射到主机
  4. 数据卷挂载:持久化MySQL数据
  5. 初始化脚本:自动执行SQL初始化脚本

章节来源

Redis安装与配置

基础配置

Redis配置包含连接参数和缓存设置:

spring:
data:
redis:
host: 172.30.223.181
port: 28530
database: 0
password: qweHvb4NDJ2334hGb2M86GbV
cache:
type: REDIS
redis:
time-to-live: 1h

缓存序列化配置

项目使用JSON序列化方式:

// 设置使用 JSON 序列化方式
config = config.serializeValuesWith(
RedisSerializationContext.SerializationPair.fromSerializer(buildRedisSerializer())
);

章节来源

Nacos 2.x配置中心

开发环境配置

spring:
cloud:
nacos:
server-addr: 192.168.1.87:8848
username:
password:
discovery:
namespace: dev
group: DEFAULT_GROUP
config:
namespace: dev
group: DEFAULT_GROUP

生产环境配置

Nacos配置支持命名空间隔离,便于多环境管理:

  • 命名空间:dev/test/prod
  • 配置分组:DEFAULT_GROUP
  • 认证配置:支持用户名密码认证

章节来源

TDengine时序数据库

数据库安装

TDengine支持Docker部署和原生安装两种方式。项目提供了完整的数据库创建脚本:

-- 年月日类型数据分不同库保存
CREATE DATABASE app_activity_day PRECISION 'ms' KEEP 90 DURATION 1 BUFFER 126 CACHESIZE 16 MINROWS 1000 MAXROWS 40960;
CREATE DATABASE app_activity_month PRECISION 'ms' KEEP 395 DURATION 30 BUFFER 126 CACHESIZE 16 MINROWS 1000 MAXROWS 40960;
CREATE DATABASE app_activity_year PRECISION 'ms' KEEP 2190 DURATION 365 BUFFER 126 CACHESIZE 16 MINROWS 1000 MAXROWS 40960;

超级表设计

CREATE STABLE app_activity_day.app_activity_detail (
ts timestamp,
data_key varchar(64) PRIMARY KEY,
mac varchar(32),
cpu varchar(32),
version_code int,
duration int
) TAGS (
record_time int,
package_name varchar(255)
);

章节来源

依赖关系分析

Mermaid Diagram Code:

graph TB
subgraph "外部依赖"
A[MySQL 8.0+]
B[Redis 5.0+]
C[TDEngine]
D[Nacos 2.x]
end
subgraph "应用依赖"
E[Druid连接池]
F[MyBatis Plus]
G[Redis Template]
H[Spring Cloud Alibaba]
end
subgraph "监控依赖"
I[Druid监控台]
J[Spring Boot Admin]
K[Actuator]
end
A --> E
B --> G
C --> H
D --> H
E --> F
G --> J
H --> K

图表来源

章节来源

性能考虑

连接池优化

项目使用Druid连接池,配置了多项性能优化参数:

  • 初始连接数:5
  • 最小空闲连接:10
  • 最大活跃连接:20
  • 连接超时时间:600000ms
  • 空闲连接检测间隔:60000ms

缓存策略

Redis缓存采用1小时过期时间,平衡了数据新鲜度和性能需求。

时序数据优化

TDengine针对时间序列数据进行了专门优化,但需要注意写入顺序对压缩效率的影响。

故障排除指南

MySQL连接问题

常见问题及解决方案

  1. 连接超时

    • 检查max-wait参数设置
    • 验证网络连通性
    • 确认防火墙设置
  2. 字符集问题

    • 确保使用utf8mb4字符集
    • 检查MySQL配置文件
  3. 权限问题

    • 验证用户权限配置
    • 检查host设置

Redis连接问题

常见问题及解决方案

  1. 连接失败

    • 检查Redis服务状态
    • 验证端口映射配置
    • 确认密码设置
  2. 缓存失效

    • 检查TTL配置
    • 验证序列化设置

TDengine写入问题

乱序写入导致的存储膨胀

根据测试结果显示:

  • 有序写入:压缩比约4.86%
  • 乱序写入:压缩比约37.09%
  • 磁盘占用差距约7.68倍

解决方案

  1. 实现数据预处理和排序
  2. 使用消息队列维持写入顺序
  3. 设计合理的归档策略

章节来源

Nacos配置问题

配置中心连接问题

  1. 服务发现失败

    • 检查server-addr配置
    • 验证命名空间设置
    • 确认分组配置
  2. 认证失败

    • 检查用户名密码
    • 验证权限配置

结论

本配置指南提供了完整的数据库环境搭建方案,涵盖了现代企业级应用所需的主流数据库技术栈。通过合理的配置和优化,可以确保系统的高性能、高可用性和可维护性。

关键要点:

  • 使用Docker简化部署流程
  • 采用连接池优化数据库性能
  • 实施监控和告警机制
  • 设计合理的数据归档策略
  • 建立完善的故障排除流程

建议在生产环境中:

  1. 使用独立的数据库实例
  2. 配置适当的备份策略
  3. 实施监控和性能调优
  4. 建立完善的运维流程
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答