Files
BMS/bms-back/sql/20261113_uuid_to_bigint_runbook.md
T

2.1 KiB
Raw Blame History

UUID -> bigint 夜间执行与冒烟清单

脚本:bms-back/sql/20261113_uuid_to_bigint_order_bill.sql

必须顺序(不要飞)

  1. 先停 Java / BMS 服务(含计费、出账、导出等异步 worker)
  2. 全库或关键表备份
  3. 在服务器执行 SQL(下面一键脚本)
  4. SQL 成功后,再部署 Long 版 后端并启动
  5. 冒烟

旧包连新库或新包连旧库都会挂。一定先停 Java,再跑 SQL。

服务器一键执行

把同目录下 20261113_uuid_to_bigint_order_bill.sql 与 20261113_uuid_to_bigint_run.sh 一起上传到服务器。

# 1) 先停 Java(按你们部署方式改,以下为示例)
# systemctl stop bms-admin
# 或:kill / docker stop / 停掉所有 java -jar bms-*.jar

# 2) 再跑迁移
export BMS_DB_HOST=127.0.0.1
export BMS_DB_PORT=3306
export BMS_DB_NAME=bms
export BMS_DB_USER=root
export BMS_DB_PASS='******'
chmod +x 20261113_uuid_to_bigint_run.sh
./20261113_uuid_to_bigint_run.sh
# 或非交互:CONFIRM=YES ./20261113_uuid_to_bigint_run.sh

日志写在 sql/logs/uuid_to_bigint_*.log。

执行前

  1. 已停 Java / BMS(含计费/出账/导出异步)
  2. 全库备份(或至少:prc_order_bill*、prc_income*、prc_pay_bill*、ar_bill_detail*、prc_billing_task、pay_bill_line)
  3. 建议在从库/备份库先干跑校验
  4. 准备好 Long 版后端包(SQL 成功后再发)

执行

  1. 确认 Java 已停
  2. 跑 ./20261113_uuid_to_bigint_run.sh(内部会执行整份 SQL)
  3. 查日志校验/抽查通过
  4. 部署新后端,启应用

冒烟

  • 订单列表能打开,billId 为数字
  • 新建/重计费一票,生成新 bigint bill_id
  • 手动加一笔应收费用 / 查费用明细
  • 生成一笔应收账单,明细能关联订单
  • 旧应收账单明细 JOIN prc_order_bill 正常
  • 应付费用/应付账单查看正常

回滚

  1. 停新包
  2. 推荐:整库从备份恢复
  3. 或:SET FOREIGN_KEY_CHECKS=0 后将 *_bak_uuid RENAME 回主表名(引用列需额外处理)
  4. 部署旧后端包

次日

  • 确认无误后 DROP *_old_uuid / *_bak_uuid / mig_map_*