Go to file
hailin 2a725af83e fix: Debezium CDC 全面安全加固 (1.0 + 2.0)
问题背景:
  - 1.0 生产环境发现 6 个孤儿 replication slot, WAL 积压 8.6GB (已清理)
  - 1.0 使用 Debezium 2.4, 存在 DBZ-7316 (WAL 无限积压) bug
  - 1.0 和 2.0 均无 max_slot_wal_keep_size 安全阀 (已在线设置 10GB)
  - 2.0 outbox connector 使用 pg_logical_emit_message 心跳, 不经 publication
  - 2.0 outbox connector RegexRouter regex=".*" 导致 heartbeat 污染消费者

修复内容:

[docker-compose.yml - 1.0 基础设施]
  - Debezium: 2.4 → 2.5.4.Final (修复 DBZ-7316)
  - PostgreSQL: 添加 max_slot_wal_keep_size=10GB
  - Debezium REST API: 端口绑定 127.0.0.1 (防 SSRF 注入)
  - PostgreSQL: 端口绑定 127.0.0.1 (防公网直连)
  - Kafka Connect: 添加 OFFSET_FLUSH_INTERVAL_MS=10s

[docker-compose.2.0.yml - 2.0 基础设施]
  - Debezium: 2.5 → 2.5.4.Final (锁定精确版本)
  - PostgreSQL: 添加 max_slot_wal_keep_size=10GB
  - Kafka Connect: 添加 OFFSET_FLUSH_INTERVAL_MS=10s

[1.0 Connector 配置 - identity/authorization]
  - 添加 heartbeat.action.query (INSERT INTO debezium_heartbeat TABLE 方式)
  - 之前只有 heartbeat.interval.ms 无 action.query, 心跳不生效

[2.0 Outbox Connector 配置 - 5个全部更新]
  - heartbeat: pg_logical_emit_message → INSERT INTO debezium_heartbeat TABLE 方式
    (TABLE 方式经过 publication → Debezium 消费 → 推进 confirmed_flush_lsn)
  - RegexRouter: regex ".*" → ".*outbox_events" (只路由 outbox 事件, heartbeat 走默认 topic)
  - table.include.list: 添加 debezium_heartbeat (确保心跳变更生成 Kafka 消息)
  - publication.autocreate.mode: filtered → disabled (使用预创建的 publication)
  - auth/contribution: 添加 signal channel 配置 (支持增量快照数据重放)

经验总结:
  1. pg_logical_emit_message 写 WAL 但不经 publication, 无法推进 confirmed_flush_lsn
  2. RegexRouter regex=".*" 把所有变更(含 heartbeat)路由到 outbox topic, 污染消费者
  3. 删除 Kafka Connect connector 不会自动清理 PostgreSQL replication slot
  4. max_slot_wal_keep_size 是 sighup 级参数, 可在线 ALTER SYSTEM + pg_reload_conf

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 07:32:13 -08:00
.claude feat(mining-app): 二维码扫描支持从相册选择图片识别 2026-01-31 07:21:56 -08:00
backend fix: Debezium CDC 全面安全加固 (1.0 + 2.0) 2026-02-15 07:32:13 -08:00
contracts feat(blockchain): 部署 eUSDT 和 fUSDT 代币合约 2026-01-19 05:30:25 -08:00
docs docs: 添加 RWADurian 2.0 部署与运维成本方案 2026-01-22 03:29:51 -08:00
frontend fix(mining-app): 资产页面数据一致性修复与冗余估值隐藏 2026-02-13 22:57:41 -08:00
kubernetes . 2025-11-25 10:29:24 +08:00
scripts fix(snapshot): 修改 Services PostgreSQL 用户名为 rwa_user 2026-01-08 09:05:22 -08:00
tests . 2025-11-25 10:29:24 +08:00
.gitignore feat(mining-ecosystem): 添加挖矿生态系统完整微服务与前端 2026-01-10 17:45:46 -08:00
README.md first commit 2025-11-23 21:21:44 -08:00
SEED01-qrcode.png fix: 短信超时返回成功状态避免前端报错 2025-12-21 20:55:31 -08:00
STKAITI.TTF feat(mobile-app): 添加合同签署 API 详细调试日志 2025-12-25 03:14:10 -08:00
contract.docx feat(kyc): 实名认证前检查手机号验证状态 2025-12-24 21:00:53 -08:00
docker-compose.yml first commit 2025-11-23 21:21:44 -08:00
挖矿.xlsx feat(contribution): 添加系统账户算力来源类型字段 2026-01-21 04:23:50 -08:00
榴莲皇后数据.xlsx fix(mobile-app): 修复多账号切换后账号列表只显示一个的问题 2025-12-27 11:12:50 -08:00
联合种植协议董事长_release_form.pdf fix(reporting-service): add /api/v1 prefix to wallet and reward service API calls 2026-01-04 23:18:10 -08:00

README.md