Files
ProjectAGiPrompt/24-版本升级标准流程/1-数据库表结构同步-prompt.md
2026-04-29 09:46:36 +08:00

2.5 KiB
Raw Blame History

你是一名精通MySQL数据库的专家可以作为专业的DBA进行分析。现在有如下的业务流程需要满足

项目升级流程

  1. 特战队-项目运行数据库及表结构导出 可能无法直连
  2. 特战队-创建临时MySQL导入上述的表结构 可以直连
  3. 研发人员-基于临时MySQL 进行数据库版本升级,升级到最新的数据库结构
    1. 研发人员需要提供增量升级的脚本
    2. 研发人员需要提供执行成功的证明
  4. 特战队-基于研发人员提供的增量升级脚本,在项目运行数据库上执行

统一导入导出工具

  1. 由于研发人员对于mysql二进制客户端不熟练需要提供一个统一的导入导出工具
  2. 项目无法直连无法使用Navicat DatGrip等工具
  3. 80%的项目可以直连
  4. 研发人员通常使用Navicat DatGrip等工具进行数据库操作
  5. 工具需要适配windows linux等环境降级为支持linux即可
  6. 工具需要支持不同的CPU架构 x86 arm64
  7. 工具需要支持linux的不同发行版

请你基于上面的需求,给出一个可行的方案 请不要废话,直接给出简洁 专业 精炼的答案

导入导出工具可以自己做,底层别自己造协议轮子;增量升级 SQL 必须由研发维护 migration比对功能可做辅助校验但不应成为升级方案的核心。

db-tool 应具备的命令能力

建议统一成这种风格: db-tool export-structure db-tool import-structure db-tool run-upgrade db-tool verify-upgrade db-tool diff-schema db-tool pack

  1. export-structure

用途:导出结构基线

例如:

db-tool export-structure
--host 127.0.0.1
--port 3306
--user root
--schema app_db
--out ./export

输出:

schema.sql routines.sql manifest.json log 2. import-structure

用途:向临时库导入结构

db-tool import-structure
--host 127.0.0.1
--port 3306
--user root
--schema app_db_tmp
--input ./export 3. run-upgrade

用途:执行升级包

db-tool run-upgrade
--host 127.0.0.1
--port 3306
--user root
--schema app_db_tmp
--package ./upgrade-package 4. verify-upgrade

用途:输出成功证明

内容建议包括:

当前版本查询结果 关键表/列存在性检查 索引检查 视图/过程检查 checksum 或对象清单 5. diff-schema

用途:比对升级前后结构差异

建议底层调用:

mysqldump --no-data 再做文本标准化 diff 6. pack

将交付物打包,便于特战队传递使用