Skip to content

[Hotfix] vision_summary_5s 테이블 DROP 복구#53

Merged
LeeJeongHeon02 merged 1 commit into
devfrom
hotfix/recreate-vision-summary-5s
Jul 20, 2026
Merged

[Hotfix] vision_summary_5s 테이블 DROP 복구#53
LeeJeongHeon02 merged 1 commit into
devfrom
hotfix/recreate-vision-summary-5s

Conversation

@LeeJeongHeon02

@LeeJeongHeon02 LeeJeongHeon02 commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

🚨 긴급 - 다른 무엇보다 먼저 병합/배포 필요

운영 DB에서 vision_summary_5s 테이블이 실수로 DROP TABLE됐습니다(전체 행 삭제를 의도했으나 테이블 자체를 삭제). 데이터 복구는 필요 없습니다 - 원래도 전체 삭제 의도였습니다.

왜 긴급인가

운영은 ddl-auto: validate(application-prod.yml:19)입니다. VisionSummary5s 엔티티가 매핑하는 테이블이 없으면 어떤 배포/재시작도 Hibernate 스키마 검증에서 즉시 실패합니다. cd.yml의 자동 롤백 로직(151~173줄)은 "이전 이미지 == 이전 DB 스키마"를 전제하는데, 지금은 새 이미지든 롤백 대상인 이전 이미지든 둘 다 이 이유로 기동 실패 - 최악의 경우 서비스가 완전히 다운된 채로 남습니다.

즉, 이 마이그레이션이 배포되기 전까지는 dev 기준 어떤 배포도 위험합니다. PR #52 등 다른 PR보다 먼저 병합·배포해야 합니다.

조치 내용

V12__recreate_vision_summary_5s.sql - V1__init_schema.sql의 원본 정의에 V4__vision_summary_dedup_key_drop_seq.sql의 변경사항(3컬럼 UNIQUE → 2컬럼 UNIQUE)까지 반영한, DROP 직전 최종 구조 그대로 재생성합니다.

검증 방법

실제 MySQL 8.0.46 Docker 컨테이너(운영과 동일 버전)에서 인시던트를 그대로 재현했습니다:

  1. V1~V11 정상 적용 (운영의 실제 flyway_schema_history 기준 최신 버전과 동일)
  2. DROP TABLE vision_summary_5s 수동 실행 (실제 인시던트 재현, flyway_schema_history는 V11을 최신으로 유지)
  3. V12 적용 → 마이그레이션 성공, Hibernate validate 통과, 앱 정상 기동(Started KlljsApplication) 확인
  4. SHOW CREATE TABLE로 컬럼/제약/인덱스가 DROP 이전과 완전히 동일함을 직접 확인 (PK, uk_vision_summary_media_time UNIQUE(media_unit_id, event_time), FK 2개(ON DELETE RESTRICT/ON DELETE SET NULL), 나머지 인덱스 2개)

배포 후 확인 필요

  • CD 배포 성공 및 헬스체크 통과 확인
  • vision SQS 컨슈머가 새 (빈) 테이블에 정상적으로 insert하는지 확인 (배포 전 유실된 메시지가 있었다면 별도 확인 필요)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • 버그 수정
    • 삭제된 vision_summary_5s 테이블의 스키마를 복원했습니다.
    • 기존 데이터 무결성 제약과 조회 성능을 위한 인덱스를 재구성했습니다.
    • 데이터 자체는 복구되지 않으며, 테이블 구조만 재생성됩니다.

운영 DB에서 vision_summary_5s 테이블이 DROP TABLE로 삭제됐다(전체 행 삭제를
의도했으나 테이블 자체를 지움). 운영은 ddl-auto=validate라 VisionSummary5s
엔티티가 매핑하는 이 테이블이 없으면 어떤 배포/재시작도 Hibernate 스키마
검증에서 즉시 실패한다 - 새 이미지든 롤백용 이전 이미지든 동일하게 실패하므로
cd.yml의 자동 롤백도 소용없고, 최악의 경우 서비스가 완전히 다운된다.

V1__init_schema.sql의 원본 정의 + V4__vision_summary_dedup_key_drop_seq.sql의
변경사항(3컬럼 UNIQUE -> 2컬럼 UNIQUE)을 반영한 DROP 직전 최종 구조 그대로
재생성한다. 데이터는 복구하지 않는다(원래도 전체 삭제 의도였음).

실제 MySQL 8.0.46 컨테이너에서 인시던트를 그대로 재현해 검증했다: V1~V11
정상 적용 후 테이블을 실제로 DROP, flyway_schema_history가 V11을 최신으로
유지한 상태에서 V12를 적용 -> 마이그레이션 성공, Hibernate validate 통과,
앱 정상 기동까지 확인. SHOW CREATE TABLE로 컬럼/제약/인덱스가 DROP 이전과
동일함도 확인했다.

이 마이그레이션이 배포되기 전까지는 dev 기준 어떤 배포/재시작도 위험하다.
다른 PR(#52 등)보다 우선 병합·배포 필요.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

V12 마이그레이션이 vision_summary_5s 테이블의 컬럼, 유니크 제약, 외래키 및 보조 인덱스를 DROP 이전 상태로 재생성하도록 추가되었습니다.

Changes

vision_summary_5s 스키마 복구

Layer / File(s) Summary
테이블 스키마 및 제약 조건 재생성
src/main/resources/db/migration/V12__recreate_vision_summary_5s.sql
vision_summary_5s의 원본 컬럼과 JSON 페이로드를 복원하고, media_unit_id, event_time 유니크 제약, media_units·campaigns 외래키, campaign_id, event_timeevent_time 인덱스를 추가합니다.

Estimated code review effort: 1 (Trivial) | ~3 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 핵심 변경인 삭제된 vision_summary_5s 테이블 복구를 명확히 요약하고 있어 제목이 적절합니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hotfix/recreate-vision-summary-5s

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@LeeJeongHeon02 LeeJeongHeon02 changed the title [긴급 Hotfix] 운영 vision_summary_5s 테이블 DROP 복구 [Hotfix] vision_summary_5s 테이블 DROP 복구 Jul 20, 2026
@LeeJeongHeon02 LeeJeongHeon02 self-assigned this Jul 20, 2026
@LeeJeongHeon02
LeeJeongHeon02 merged commit af78dfb into dev Jul 20, 2026
2 checks passed
@LeeJeongHeon02
LeeJeongHeon02 deleted the hotfix/recreate-vision-summary-5s branch July 20, 2026 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant