Storm_backend/docker/DATABASE-SETUP.md
2025-09-28 20:42:16 +08:00

3.5 KiB
Raw Permalink Blame History

Storm数据库部署指南

📋 数据库概览

Storm系统使用三个独立的MySQL数据库

  1. storm - 主系统数据库

    • 包含用户、角色、菜单、系统配置等核心数据
    • 文件:dump-storm-202509032128.sql
  2. storm-config - 配置数据库

    • 包含Nacos配置中心的数据
    • 文件:dump-storm-config-202509041019.sql
  3. storm-device - 设备数据库

    • 包含设备管理相关的数据
    • 文件:dump-storm-device-202509032130.sql

🚀 部署步骤

1. 确保SQL文件存在

检查以下文件是否存在于 mysql/db/ 目录:

mysql/db/
├── 00-init-all-databases.sql          # 数据库初始化脚本
├── dump-storm-202509032128.sql        # 主系统数据库
├── dump-storm-config-202509041019.sql # 配置数据库
└── dump-storm-device-202509032130.sql # 设备数据库

2. 启动MySQL服务

# 启动基础服务包含MySQL
cd D:\workspace\storm\docker
./deploy.sh base

3. 验证数据库创建

# Windows
test-databases.bat

# Linux/Mac
chmod +x test-databases.sh
./test-databases.sh

4. 手动验证(可选)

# 连接MySQL
mysql -h localhost -P 3306 -u root -p123456

# 查看所有数据库
SHOW DATABASES;

# 检查每个数据库的表
USE storm;
SHOW TABLES;

USE `storm-config`;
SHOW TABLES;

USE `storm-device`;
SHOW TABLES;

🔧 故障排除

问题1只创建了一个数据库

原因SQL文件执行顺序问题或文件权限问题

解决方案

  1. 确保所有SQL文件都在 mysql/db/ 目录中
  2. 检查文件权限Linux/Mac
  3. 重新构建MySQL容器
    docker-compose down
    docker-compose build storm-mysql
    docker-compose up -d storm-mysql
    

问题2数据库名称包含特殊字符

原因storm-configstorm-device 包含连字符

解决方案

  • 在SQL中使用反引号包围数据库名`storm-config`
  • 在应用程序连接时也要使用反引号

问题3字符集问题

原因:字符集不统一

解决方案

  • 所有数据库都使用 utf8mb4 字符集
  • 确保MySQL容器配置正确

📊 数据库连接配置

应用程序配置

# 主系统数据库
spring:
  datasource:
    url: jdbc:mysql://storm-mysql:3306/storm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: 123456

# 配置数据库
nacos:
  datasource:
    url: jdbc:mysql://storm-mysql:3306/storm-config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: 123456

# 设备数据库
device:
  datasource:
    url: jdbc:mysql://storm-mysql:3306/storm-device?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: 123456

验证清单

部署完成后,请确认:

  • 三个数据库都已创建
  • 每个数据库都包含相应的表
  • 应用程序能正常连接各个数据库
  • 数据导入成功
  • 字符集设置正确

🔄 重新初始化

如果需要重新初始化所有数据库:

# 停止服务
docker-compose down

# 删除MySQL数据卷
docker volume rm storm_mysql_data

# 重新启动
docker-compose up -d storm-mysql

# 等待初始化完成
sleep 30

# 验证数据库
test-databases.bat