@bmh8993 안녕하세요. 비록 1년 가까이 지난 시점이지만 잘 보고 계셨다니, 감사합니다.
블루/그린 배포와 같이 타이밍에 의존하는 로직의 배포를 하지 않습니다. 작업을 분명히 작게 쪼갤 수 있을 것 같아요. 특정 컬럼을 추가한 뒤에, 해당 컬럼에 값을 채우는 로직을 배포하고, 해당 로직이 다 배포된 이후에 이전 row 들에 대해 마이그레이션 한 뒤에 해당 컬럼을 사용하는 로직을 배포해볼 수 있겠네요!
실패한 적이 있습니다. 정확한 원인 파악이 어렵더라구요. metadata table lock 을 오래 잡고 있었던 걸로 파악했었는데, 그 이후로 나아가지 못하고 그 뒤로는 MySQL 내 Online DDL 이라는 기술을 사용했습니다.
Django 라는 Framework 를 썼는데, django 내에서 마이그레이션에 대한 버전 관리를 할 수 있었고 Online DDL 이나 pt-osc 처럼 별도로 실행하는 경우에는 django 에서 마이그레이션을 동일하게 생성하고 적용만 따로 했었습니다. 롤백도 django 내 마이그레이션에서 rollback 시 수행할 작업을 정의할 수 있어서 그렇게 진행했습니다.
pt-online-schema-change 1년 사용 후기 (절망편) – Myungseo Kang
Review of pt-online-schema-change in last year (despair part)
https://blog.myungseokang.dev/posts/pt-osc-review/