From 4f2f2db20f1ae24ea5224e10026e94129c8236ff Mon Sep 17 00:00:00 2001 From: wuweihua <88888888> Date: Sat, 14 Nov 2026 00:40:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0UUID=E5=88=B0BIGINT=E7=9A=84?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E8=84=9A=E6=9C=AC=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=A4=87=E4=BB=BD=E5=92=8C=E5=9B=9E=E6=BB=9A=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20261113_uuid_to_bigint_order_bill.sql | 25 +++++-------------- bms-back/sql/20261113_uuid_to_bigint_run.sh | 4 +-- .../sql/20261113_uuid_to_bigint_runbook.md | 11 ++++---- 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/bms-back/sql/20261113_uuid_to_bigint_order_bill.sql b/bms-back/sql/20261113_uuid_to_bigint_order_bill.sql index 846bc160..68590fff 100644 --- a/bms-back/sql/20261113_uuid_to_bigint_order_bill.sql +++ b/bms-back/sql/20261113_uuid_to_bigint_order_bill.sql @@ -3,7 +3,7 @@ -- 范围 PK:prc_order_bill.bill_id / prc_income_bill.income_bill_id / prc_income_bill_fee.fee_id / prc_pay_bill.pay_bill_id / prc_pay_bill_fee.fee_id -- 范围 FK/引用:prc_order_bill_ext、income/pay 上 bill_id、prc_billing_task、ar_bill_detail*、ar_bill_generate_task、pay_bill_line/log/diff -- 不动:ar_bill 等已 bigint;prc_quote* 报价 UUID;任务 taskId --- 回滚:见文末;更稳妥为整库备份恢复 + 旧后端包 +-- 回滚:用宝塔/整库备份恢复 + 旧后端包(本脚本不再做同库 *_bak_uuid 拷贝) -- -- FK盘点: fk_income_bill_order_bill, fk_income_bill_fee_order, fk_order_bill_ext_bill, fk_pay_bill_order_bill, fk_pay_bill_fee_order SET NAMES utf8mb4; @@ -25,19 +25,8 @@ WHERE TABLE_SCHEMA = DATABASE() AND REFERENCED_TABLE_NAME IN ('prc_order_bill','prc_income_bill','prc_income_bill_fee','prc_pay_bill','prc_pay_bill_fee') ORDER BY TABLE_NAME, CONSTRAINT_NAME; --- ========== 1. 备份关键表 ========== -DROP TABLE IF EXISTS `prc_order_bill_bak_uuid`; -CREATE TABLE `prc_order_bill_bak_uuid` AS SELECT * FROM `prc_order_bill`; -DROP TABLE IF EXISTS `prc_order_bill_ext_bak_uuid`; -CREATE TABLE `prc_order_bill_ext_bak_uuid` AS SELECT * FROM `prc_order_bill_ext`; -DROP TABLE IF EXISTS `prc_income_bill_bak_uuid`; -CREATE TABLE `prc_income_bill_bak_uuid` AS SELECT * FROM `prc_income_bill`; -DROP TABLE IF EXISTS `prc_income_bill_fee_bak_uuid`; -CREATE TABLE `prc_income_bill_fee_bak_uuid` AS SELECT * FROM `prc_income_bill_fee`; -DROP TABLE IF EXISTS `prc_pay_bill_bak_uuid`; -CREATE TABLE `prc_pay_bill_bak_uuid` AS SELECT * FROM `prc_pay_bill`; -DROP TABLE IF EXISTS `prc_pay_bill_fee_bak_uuid`; -CREATE TABLE `prc_pay_bill_fee_bak_uuid` AS SELECT * FROM `prc_pay_bill_fee`; +-- ========== 1. 跳过同库 bak(已在宝塔做整库备份,避免再拷一份占盘/耗时) ========== +-- 回滚请用宝塔备份恢复,不再依赖 *_bak_uuid -- ========== 2. 映射表 ========== DROP TABLE IF EXISTS `mig_map_order_bill`; @@ -397,13 +386,11 @@ SELECT d.detail_id, d.prc_order_bill_id, o.order_no FROM ar_bill_detail d JOIN p SELECT f.detail_fee_id, f.prc_income_bill_fee_id, i.fee_type FROM ar_bill_detail_fee f JOIN prc_income_bill_fee i ON i.fee_id = f.prc_income_bill_fee_id LIMIT 5; -- ========== 9. 回滚说明(勿自动执行) ========== --- 推荐:整库从备份恢复 + 部署旧后端包 --- 或:SET FOREIGN_KEY_CHECKS=0; RENAME 把 *_bak_uuid 换回主表名(引用列需另外恢复) +-- 用宝塔/整库备份恢复 + 部署旧后端包 -- -- ========== 10. 次日清理 ========== --- DROP TABLE IF EXISTS prc_order_bill_old_uuid, prc_order_bill_bak_uuid, prc_income_bill_old_uuid, prc_income_bill_bak_uuid, --- prc_income_bill_fee_old_uuid, prc_income_bill_fee_bak_uuid, prc_pay_bill_old_uuid, prc_pay_bill_bak_uuid, --- prc_pay_bill_fee_old_uuid, prc_pay_bill_fee_bak_uuid, prc_order_bill_ext_bak_uuid; +-- DROP TABLE IF EXISTS prc_order_bill_old_uuid, prc_income_bill_old_uuid, +-- prc_income_bill_fee_old_uuid, prc_pay_bill_old_uuid, prc_pay_bill_fee_old_uuid; -- DROP TABLE IF EXISTS mig_map_order_bill, mig_map_income_bill, mig_map_income_fee, mig_map_pay_bill, mig_map_pay_fee; -- -- 冒烟:1)新建/重计费 2)出应收 3)查应付费用 4)旧 AR 明细关联订单 diff --git a/bms-back/sql/20261113_uuid_to_bigint_run.sh b/bms-back/sql/20261113_uuid_to_bigint_run.sh index c2a1576a..1b39ceed 100644 --- a/bms-back/sql/20261113_uuid_to_bigint_run.sh +++ b/bms-back/sql/20261113_uuid_to_bigint_run.sh @@ -52,7 +52,7 @@ echo echo "【必须】先停 Java / BMS,再执行本脚本。" echo "执行前请确认:" echo " 1) Java / BMS 应用与异步 worker 已全部停掉(不要边跑边迁)" -echo " 2) 已做全库/关键表备份" +echo " 2) 已在宝塔做整库备份(SQL 不再同库拷份)" echo " 3) 磅盘空间足够(建议 >= 订单+ext+费用表 2~3 倍)" echo " 4) SQL 成功后,再部署 Long 版后端并启动" echo @@ -104,7 +104,7 @@ ELAPSED=$((END_TS - START_TS)) if [[ "${RC}" -ne 0 ]]; then echo "[$(date '+%F %T')] 失败 exit=${RC} 耗时=${ELAPSED}s,请查日志: ${LOG_FILE}" | tee -a "${LOG_FILE}" - echo "若已换表中途失败:优先整库备份恢复,不要部署新后端" + echo "若已换表中途失败:用宝塔备份恢复,不要部署新后端" exit "${RC}" fi diff --git a/bms-back/sql/20261113_uuid_to_bigint_runbook.md b/bms-back/sql/20261113_uuid_to_bigint_runbook.md index 0e27baf7..dc2afcfe 100644 --- a/bms-back/sql/20261113_uuid_to_bigint_runbook.md +++ b/bms-back/sql/20261113_uuid_to_bigint_runbook.md @@ -5,7 +5,7 @@ ## 必须顺序(不要飞) 1. **先停 Java / BMS 服务**(含计费、出账、导出等异步 worker) -2. 全库或关键表备份 +2. **宝塔整库备份**(SQL 不再做同库 *_bak_uuid 拷贝) 3. 在服务器执行 SQL(下面一键脚本) 4. SQL 成功后,再部署 **Long 版** 后端并启动 5. 冒烟 @@ -36,7 +36,7 @@ chmod +x 20261113_uuid_to_bigint_run.sh ## 执行前 1. **已停 Java / BMS**(含计费/出账/导出异步) -2. 全库备份(或至少:prc_order_bill*、prc_income*、prc_pay_bill*、ar_bill_detail*、prc_billing_task、pay_bill_line) +2. **已在宝塔做整库备份** 3. 建议在从库/备份库先干跑校验 4. 准备好 Long 版后端包(SQL 成功后再发) @@ -56,9 +56,8 @@ chmod +x 20261113_uuid_to_bigint_run.sh ## 回滚 1. 停新包 -2. **推荐**:整库从备份恢复 -3. 或:`SET FOREIGN_KEY_CHECKS=0` 后将 `*_bak_uuid` RENAME 回主表名(引用列需额外处理) -4. 部署旧后端包 +2. **用宝塔整库备份恢复** +3. 部署旧后端包 ## 次日 -- 确认无误后 DROP `*_old_uuid` / `*_bak_uuid` / `mig_map_*` +- 确认无误后 DROP `*_old_uuid` / `mig_map_*`