datai/docs/archive/api-docs/setting/DataiConfigEnvironmentController/0009-init-slave-datasource.md

6.9 KiB
Raw Permalink Blame History

接口文档

接口信息

  • 接口名称: 初始化环境从库
  • 接口路径: /setting/environment/initSlave
  • 请求方法: POST
  • 模块归属: datai-salesforce-setting
  • 版本号: v1.0
  • 创建日期: 2026-01-24
  • 最后更新: 2026-01-24

功能描述

为指定的环境初始化从库数据源。该接口会从配置文件读取主库配置自动生成从库名称slave_环境编码创建数据库写入数据源配置表注册数据源到 DataSourceManager并验证连接有效性。从库一经创建不允许任何修改、删除或重新初始化。

请求参数

请求参数

参数名 类型 必填 描述 示例 默认值
environmentId Long 环境ID 1 -

参数说明:

  • environmentId: 要初始化从库的环境ID必须是已存在的环境

响应数据

成功响应

HTTP 状态码: 200 OK

{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "id": 1,
    "dsName": "PROD",
    "dbName": "slave_PROD",
    "dbHost": "localhost",
    "dbPort": 3306,
    "dbType": "mysql",
    "username": "root",
    "password": "******",
    "status": "0",
    "createBy": "admin",
    "createTime": "2026-01-24 10:00:00",
    "updateBy": "admin",
    "updateTime": "2026-01-24 10:00:00"
  }
}
字段名 类型 描述 示例
code Integer 响应码 200
msg String 响应消息 操作成功
data Object 创建的数据源配置详细信息 -

data 对象字段说明:

字段名 类型 描述 示例
id Long 数据源ID 1
dsName String 数据源名称(环境编码) PROD
dbName String 数据库名称 slave_PROD
dbHost String 数据库主机地址 localhost
dbPort Integer 数据库端口 3306
dbType String 数据库类型 mysql
username String 数据库用户名 root
password String 数据库密码(加密) ******
status String 状态0-正常1-停用) 0
createBy String 创建人 admin
createTime String 创建时间 2026-01-24 10:00:00
updateBy String 更新人 admin
updateTime String 更新时间 2026-01-24 10:00:00

失败响应

HTTP 状态码: 400/401/403/500

{
  "code": 500,
  "msg": "数据源名称已存在PROD",
  "data": null
}
错误码 错误信息 描述
400 参数错误 参数验证失败
401 您没有权限执行此操作 权限不足
403 访问被拒绝 访问被拒绝
500 数据源名称已存在:{环境编码} 数据源已存在
500 主库配置不存在 主库配置不存在
500 数据库操作失败:{错误信息} 数据库操作失败
500 数据源配置写入失败 数据源配置写入失败
500 数据源连接验证失败 数据源连接验证失败

接口示例

请求示例

curl -X POST "http://localhost:8080/setting/environment/initSlave" \
  -H "Authorization: Bearer [token]" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "environmentId=1"

响应示例

成功:

{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "id": 1,
    "dsName": "PROD",
    "dbName": "slave_PROD",
    "dbHost": "localhost",
    "dbPort": 3306,
    "dbType": "mysql",
    "username": "root",
    "password": "******",
    "status": "0"
  }
}

失败:

{
  "code": 500,
  "msg": "数据源名称已存在PROD",
  "data": null
}

错误处理

  1. 权限验证失败: 检查用户是否具有 setting:environment:initSlave 权限
  2. 参数验证失败: 检查必填参数是否完整,参数格式是否正确
  3. 主库配置不存在: 检查 application-druid.yml 中是否配置了主库信息
  4. 数据源已存在: 检查数据源名称是否已存在,如已存在则返回错误
  5. 数据库创建失败: 检查数据库连接和权限,记录错误日志并返回错误信息
  6. 数据源配置写入失败: 检查数据库连接和权限,记录错误日志并返回错误信息
  7. 数据源连接验证失败: 检查数据源配置和连接,记录错误日志并返回错误信息
  8. 系统错误: 记录错误日志并返回通用错误信息

注意事项

  1. 接口需要登录认证,需要携带有效的 token
  2. 接口需要 setting:environment:initSlave 权限
  3. 环境编码为必填项
  4. 从库名称自动生成为 slave_环境编码
  5. 数据库字符集为 utf8mb4排序规则为 utf8mb4_general_ci
  6. 从库一经创建,不允许任何修改、删除或重新初始化
  7. 使用 Spring 事务保证原子性,验证失败时自动回滚
  8. 初始化操作会记录到操作日志中
  9. 初始化成功后会返回创建的数据源配置信息
  10. 主库配置从 application-druid.yml 配置文件中读取
  11. 初始化过程包括:创建数据库、写入配置、注册数据源、切换到从库、验证连接、切换回主库
  12. 建议在初始化前先查询确认环境信息

相关接口

实现细节

  1. 接收环境ID参数
  2. 根据环境ID查询环境信息
  3. 从环境信息中获取环境编码
  4. 调用 IDataiConfigEnvironmentService 的 initSlaveDatasource 方法
  5. 从 application-druid.yml 配置文件中读取主库配置
  6. 生成从库名称slave_环境编码
  7. 检查数据源名称是否已存在
  8. 使用 JDBC 创建数据库字符集utf8mb4排序规则utf8mb4_general_ci
  9. 写入数据源配置表
  10. 注册数据源到 DataSourceManager
  11. 切换到从库并验证连接有效性
  12. 切换回主库
  13. 使用 Spring 事务保证原子性,验证失败时自动回滚
  14. 返回创建的数据源配置信息

测试信息

测试环境

  • 环境: 本地开发环境
  • 版本: v1.0

测试用例

测试场景 输入参数 预期结果 实际结果 状态
初始化生产环境从库 environmentId=1 初始化成功 初始化成功 通过
初始化测试环境从库 environmentId=2 初始化成功 初始化成功 通过
初始化已存在的从库 environmentId=1已存在 返回数据源已存在 返回数据源已存在 通过
初始化不存在的环境 environmentId=999 返回错误 返回错误 通过
缺少必填参数 缺少environmentId 返回参数错误 返回参数错误 通过
无权限访问 无权限token 返回401错误 返回401错误 通过