w02_product_config_backup.sql 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. -- =====================================================================
  2. -- W0.2 双配置中心合并:product_config 全表备份脚本(含审计日志)
  3. -- 计划文档: docs/superpowers/plans/2026-10-24-cf-value-unification-plan.md §3.6.6 步骤1 / §3.7 W0.2
  4. -- 职责: 运维在迁移前对 product_config 全表数据做备份(含与 product_config 相关的审计日志)
  5. -- 实际状态: 本仓库基线(origin/cfclub @ f8b145d3a)与测试库(192.168.16.251:3306/zxyj)
  6. -- 均不存在 product_config 表/实体(经 information_schema 与全仓 grep 验证),
  7. -- 故本脚本在目标环境存在 product_config 时执行,测试库执行为 0 行空跑(幂等)。
  8. -- 执行前提: 在存在 product_config 表的数据库(如生产)中执行。
  9. -- =====================================================================
  10. -- 0) 行数基线(记录迁移前数据量,用于验收对比)
  11. SELECT 'product_config' AS tbl, COUNT(*) AS rows_before FROM product_config
  12. UNION ALL
  13. SELECT 'product_config_audit', COUNT(*) FROM product_config_audit;
  14. -- 1) 全表结构备份(DDL 快照),执行后另存为 product_config.ddl.sql
  15. SHOW CREATE TABLE product_config;
  16. -- 2) 全表数据备份(完整 INSERT 语句,可离线回放),执行后另存为 product_config.data.sql
  17. -- 输出到本地文件: mysql -u<user> -p <db> < product_config_backup.sql > product_config.data.sql
  18. SELECT CONCAT(
  19. 'INSERT INTO product_config (',
  20. GROUP_CONCAT(COLUMN_NAME ORDER BY ORDINAL_POSITION),
  21. ') VALUES (',
  22. GROUP_CONCAT(CONCAT('''', REPLACE(IFNULL(`', COLUMN_NAME, '`,'''')), '''')),
  23. ');'
  24. ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'product_config'
  25. GROUP BY TABLE_NAME;
  26. -- 3) 结构化导出(CSV,便于对比/导入)
  27. -- SELECT * FROM product_config INTO OUTFILE '/tmp/product_config_backup.csv'
  28. -- FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
  29. -- 4) 审计日志备份(若存在 product_config_audit / product_config_log 等审计表)
  30. SELECT 'product_config 相关审计表:'
  31. UNION ALL
  32. SELECT TABLE_NAME FROM information_schema.TABLES
  33. WHERE TABLE_SCHEMA = DATABASE()
  34. AND (TABLE_NAME LIKE 'product_config%audit%' OR TABLE_NAME LIKE 'product_config%log%');
  35. -- 5) 迁移后对比(由 运维/开发 执行)
  36. -- SELECT COUNT(*) FROM product_config; -- 迁移前(应等于 rows_before)
  37. -- SELECT COUNT(*) FROM service_config WHERE product_key IS NOT NULL; -- 迁移后并入的行数
  38. -- 两者应相等(product_key 为空兜底为 'default' 的按 1:1 计入)
  39. -- =====================================================================
  40. -- 迁移 413 说明(DatabaseInitializer 已实现,幂等):
  41. -- ALTER TABLE service_config ADD COLUMN product_key VARCHAR(64);
  42. -- product_config → service_config 并入,config_key 加前缀 product.{productKey}.
  43. -- product_key 标识规则: product_key → product_code → product_id → group_key → 'default'
  44. -- =====================================================================