LabHub

SI DB 운영 · DDL 과 변경관리 · 실습

스키마 변경과 롤백 스크립트 작성

LabHub 에서 이어서 보기

목표

확장-이관-축소 패턴으로 스키마를 변경하고, 롤백 스크립트와 배치 백필,
검증 스크립트, 작업 절차서까지 갖춘 변경관리 한 세트를 만들 수 있게 됩니다.

왜 중요한가

"down 스크립트가 있으니 안전하다"는 가장 흔한 착각입니다.
DROP COLUMN 을 되돌리는 down 은 컬럼 구조만 되살릴 뿐 값은 못 되살립니다.
가역성은 코드의 속성이 아니라 코드와 데이터와 시간의 조합이라서,
같은 변경도 어제 배포했으면 가역이고 백만 건이 쌓인 뒤엔 비가역입니다.
그리고 대량 백필을 한 트랜잭션으로 돌리면 잠금과 로그가 폭증해
읽기 복제본이 밀리고, 조회 서비스가 오래된 데이터를 보여 줍니다.
이 실습은 그 함정들을 손으로 피해 보는 훈련입니다.

단계

0. 준비: dbo-schema 실습의 /root/db/si.db 가 있어야 합니다.
없다면 /opt/lab/fixtures/dbo/si-base.sql 로 만들 수 있습니다.
1. 현재 스키마를 /root/db/schema_v1.sql 로 저장하고,
/root/db/baseline.txt 를 만듭니다. 세 줄입니다.

   orders_cnt=<ORDERS 행 수>   orders_amt=<ORDERS 의 ORD_AMT 합계>   item_qty=<ORDER_ITEM 의 QTY 합계>

2. /root/db/changelog.csv 를 만듭니다. 첫 줄은
chg_id,date,object,ddl_file,rollback_file,est_sec,approver.
3~5 단계에서 만들 변경 3건을 미리 등록합니다.
ddl_file·rollback_file·approver 는 비어 있으면 안 되고,
est_sec 에는 숫자가 들어가야 합니다.
3. /root/db/mig/V2__add_dlvr_sts.sql 을 만듭니다.

참고

단계 8개

  1. 스키마 스냅샷과 기준선
  2. 변경관리 대장
  3. 확장 스크립트
  4. 롤백 스크립트
  5. 테이블 재작성 마이그레이션
  6. 배치 백필
  7. 마이그레이션 검증 스크립트
  8. 작업 절차서