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