버전 업그레이드 / 패치 롤백
증상
업그레이드/패치 후 문제: 성능 회귀, 애플리케이션 비호환, 데이터베이스가 열리지 않음.
1. 먼저 멈춘다: 대체 계획이 있는가?
운영 업그레이드 전에 전체 백업 + (가능하면) 스토리지 스냅샷을 확보하지 않았다면 가장 안전한 방법은 fix forward다. 대부분의 데이터베이스에서 롤백은 백업에서 복원하는 것을 의미한다. 이 단계는 원래 업그레이드 전에 계획되었어야 한다.
2. 문제를 분류한다
옵티마이저 계획 회귀(쿼리 느려짐)인가, 애플리케이션/드라이버 비호환인가, 열리지 않음/손상인가? 이에 따라 해결 경로가 크게 달라진다.
3. 데이터베이스별 롤백 경로
Oracle: datapatch로 패치 롤백, 또는 Flashback Database(guaranteed restore point를 만든 경우). PostgreSQL: pg_upgrade 후 롤백 = 이전 바이너리 + 이전 데이터 디렉터리 백업. MySQL: in-place 다운그레이드는 일반적으로 지원되지 않는다 — 백업에서 복원한다. SQL Server: 다운그레이드가 없다 — 업그레이드 전 백업에서 복원한다. 모든 경우에 스냅샷/백업이 보험이다.
4. 계획 회귀라면: 롤백 없이 해결한다
대개 버전 전체를 롤백할 필요는 없으며, 계획만 바뀐 것이다.
Oracle
ALTER SYSTEM SET optimizer_features_enable='19.1.0'; -- pin to the old behavior
-- or lock in the good plan with a SQL Plan BaselinePostgreSQL
ANALYZE; -- fresh statistics first
-- if needed, temporarily: steer the plan with settings such as SET enable_nestloop=off;5. 영구 조치: 다음번에는
먼저 실제 워크로드로 staging에서 업그레이드를 테스트하고, canary/rolling 업그레이드를 적용하며, guaranteed restore point / 스냅샷을 확보하고 대체 절차를 문서화한다.