[MVP] Admin MySQL 8.4 单一生产数据库 #77

Open
opened 2026-08-10 01:08:05 +08:00 by ila · 2 comments
Owner

基本信息

  • 父级大工单:#76

范围

首个可交付版本将 Admin 的生产运行时完整切换到线上 MySQL 8.4.8,并保留原 SQLite 文件和可重复迁移工具作为回退基础。

包含:

  • MySQL 8.4 配置、连接池、UTC/utf8mb4 和启动自检。
  • MySQL 专用追加式 schema migrations。
  • 全部 repository SQL、upsert、JSON、筛选、分页和事务适配。
  • 任务领取与初始化等并发安全测试。
  • SQLite 到 MySQL 的单向迁移、逐表计数与关键业务不变量核对。
  • 线上最小权限数据库账号、同机部署、备份、切换和回退演练。
  • 更新 Admin 技术基线、上手指南、架构、数据模型和质量门禁。
  • 稳定切换后移除 Admin 正常运行路径中的 SQLite 依赖。

非范围

  • SQLite/MySQL 双写、双向同步和运行时自由切换。
  • 公网开放 MySQL 端口。
  • 修改 Client 四接口契约。
  • 真实下单、自动付款或绕过拼多多风控。
  • 将服务器或数据库凭据提交到仓库。

阶段与单元工单

  1. 数据库基础:- [x] #78
  2. Repository 与事务:- [x] #79
  3. 数据迁移:- [x] #80
  4. 线上切换:- [x] #81

集成风险

  • SQL 方言和事务锁语义差异可能影响任务幂等与并发领取。
  • 大小写排序规则可能改变用户名、商品 ID 的唯一性判断。
  • 迁移期间新旧 Admin 并行写入会产生数据分叉。
  • 线上 MySQL 8.4 实例需要先确认持久化、备份、自启动和专用账号。
  • 新驱动发布前需要项目负责人确认 MPL-2.0 许可证。

回退策略

切换前停止写入、备份 SQLite 并记录校验摘要。失败时停止 MySQL 版 Admin,恢复旧程序和原 SQLite;不做反向数据覆盖。

MVP 验收标准

  • 全量 Go 1.23 测试在真实 MySQL 8.4 测试库通过。

  • SQLite 迁移演练逐表数量一致,人工 PDD 关联、SKU 映射、账号、任务和同步游标一致。

  • Client 四接口契约与并发领取回归通过。

  • 线上 Admin 使用 127.0.0.1:3307,数据库端口仍只监听本机。

  • 生产日志和配置样例无凭据。

  • 完成一次切换与回退演练并记录结果。

  • 生产稳定验收后运行时不再打开 admin.db。

  • #83 Admin:允许从 config.yaml 读取 MySQL 8 配置

  • #86 Admin:支持校验 CA 的 MySQL 公网 TLS 连接

  • #128 Admin:重新打包并增量部署最新版本到生产服务器

  • #129 允许所有公网 IP 连接生产 MySQL 业务账号

## 基本信息 - 父级大工单:#76 ## 范围 首个可交付版本将 Admin 的生产运行时完整切换到线上 MySQL 8.4.8,并保留原 SQLite 文件和可重复迁移工具作为回退基础。 包含: - MySQL 8.4 配置、连接池、UTC/utf8mb4 和启动自检。 - MySQL 专用追加式 schema migrations。 - 全部 repository SQL、upsert、JSON、筛选、分页和事务适配。 - 任务领取与初始化等并发安全测试。 - SQLite 到 MySQL 的单向迁移、逐表计数与关键业务不变量核对。 - 线上最小权限数据库账号、同机部署、备份、切换和回退演练。 - 更新 Admin 技术基线、上手指南、架构、数据模型和质量门禁。 - 稳定切换后移除 Admin 正常运行路径中的 SQLite 依赖。 ## 非范围 - SQLite/MySQL 双写、双向同步和运行时自由切换。 - 公网开放 MySQL 端口。 - 修改 Client 四接口契约。 - 真实下单、自动付款或绕过拼多多风控。 - 将服务器或数据库凭据提交到仓库。 ## 阶段与单元工单 1. 数据库基础:- [x] #78 2. Repository 与事务:- [x] #79 3. 数据迁移:- [x] #80 4. 线上切换:- [x] #81 ## 集成风险 - SQL 方言和事务锁语义差异可能影响任务幂等与并发领取。 - 大小写排序规则可能改变用户名、商品 ID 的唯一性判断。 - 迁移期间新旧 Admin 并行写入会产生数据分叉。 - 线上 MySQL 8.4 实例需要先确认持久化、备份、自启动和专用账号。 - 新驱动发布前需要项目负责人确认 MPL-2.0 许可证。 ## 回退策略 切换前停止写入、备份 SQLite 并记录校验摘要。失败时停止 MySQL 版 Admin,恢复旧程序和原 SQLite;不做反向数据覆盖。 ## MVP 验收标准 - 全量 Go 1.23 测试在真实 MySQL 8.4 测试库通过。 - SQLite 迁移演练逐表数量一致,人工 PDD 关联、SKU 映射、账号、任务和同步游标一致。 - Client 四接口契约与并发领取回归通过。 - 线上 Admin 使用 127.0.0.1:3307,数据库端口仍只监听本机。 - 生产日志和配置样例无凭据。 - 完成一次切换与回退演练并记录结果。 - 生产稳定验收后运行时不再打开 admin.db。 - [x] #83 Admin:允许从 config.yaml 读取 MySQL 8 配置 - [x] #86 Admin:支持校验 CA 的 MySQL 公网 TLS 连接 - [x] #128 Admin:重新打包并增量部署最新版本到生产服务器 - [x] #129 允许所有公网 IP 连接生产 MySQL 业务账号
Author
Owner

用户已批量验收通过 Admin 工单:#78、#79、#80、#81、#83、#85、#86。对应子工单已关闭,父工单清单已同步;父工单本身是否满足整体关闭条件仍按其全部范围单独判断。

用户已批量验收通过 Admin 工单:#78、#79、#80、#81、#83、#85、#86。对应子工单已关闭,父工单清单已同步;父工单本身是否满足整体关闭条件仍按其全部范围单独判断。
Author
Owner

生产部署与公网连接验收同步(2026-08-11)

用户明确验收通过 #128、#129。两项本地归档状态已更新,验收记录提交为 6386d76,对应工单均已关闭并在本父工单中标记完成。

父工单仍有其他范围,因此保持打开。

## 生产部署与公网连接验收同步(2026-08-11) 用户明确验收通过 #128、#129。两项本地归档状态已更新,验收记录提交为 `6386d76`,对应工单均已关闭并在本父工单中标记完成。 父工单仍有其他范围,因此保持打开。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#77