외부 Online DDL Tool 들(pt-online-schema-change, oak-online-alter-table)에 대한 단상

Development / MySQL / DB / devops / OnlineDDL / pt-online-schema-change / oak-online-alter-table

  • 급하게 무중단으로 Table Schema를 바꿔야 할 때, 어김 없이 pt-online-schema-changeoak-online-alter-table을 사용하고픈 유혹에 빠진다.
  • 결국 이 툴들은 MySQL 자체 Online DDL(ALGORITHM = INPLACE)이 불가능 할 때 최후의 수단으로 사용하는 것인데, (INPLACE 가능/불가능한 경우가 아주 아주 잘 정리된 페이지) 웃긴게, 테이블에 FK가 걸려있으면 이 외부 Online DDL 툴을 사용할 수 없기 때문에 약간 무용지물의 느낌이 난다는 것이다. 허허.
  • 임시 테이블을 만들고 기존 테이블에 트리거를 걸어서 Full-Copy를 하는 방식으로 무중단 스키마 변경을 지원하는 것이기 때문에 속도가 느리다. 더불어, 나는 AWS Aurora DB를 이용하는 중인데, I/O에 대한 비용을 청구하기 때문에 이런 건 by 건의 Full-Copy 방식은 엄청난 비용 폭탄을 초래하기도 한다. (한 번 당해봤다.)
  • 한 번은 oak-online-alter-table을 이용해 테이블 스키마를 변경하다가, 비즈니스 레이어에서 문제가 해결되어 중단을 한 적이 있는데 테이블에 트리거 걸린줄도 모르고 'INSERT가 외않되?!'라며 날뛰다가, (예전에 한 번 그런 적이 있었으므로)테이블 메타 데이터 파일이 깨진 것으로 추측하고 AWS Support에 문의를 넣은 적도 있었다. ㅎㅎㅎ 답변으로 아주 친절하게, '너 최근에 외부 Online DDL Tool 썼으면 테이블에 트리거 걸려있을껄?ㅎㅎㅎ' 라고 답장이 왔더랬다.
  • 여튼 이 외부 Online DDL Tool에 대한 니즈가 발생했을 때, 경험상 약 20% 정도는 유용하게 잘 사용했던듯 하고, 나머지는 결국 포기하고 다른 해법(새로운 테이블 만들기 등)을 찾았던 것 같다.
  • 결국 아무리 좋은 툴도 그 툴의 원리를 잘 알고 적재적소에 사용할 수 있는게 엔지니어의 능력이 아닐까 싶다.
Share on : Twitter, Facebook or Google+