schema


근래 들어, 일하면서 특정 조건에 해당하는 고객데이터를 수정할 일이 많았다. DB 데이터를 변경하게 되는 UPDATE/DELETE 쿼리 문은 사용할 때 항상 조심스럽다. 트랜잭션을 마친 데이터는 DB에서의 복구가 불가능하며, 백업본으로 복구하는 것 밖에는 방법이 없기 때문이다. (백업본마저 없다면 애도를 표한다 …)

따라서 여러 개의 데이터를 변경할 경우에는, 잘못된 변경에 대한 복구가 가능하도록 보험을 들어놓고 시도하는 것이 안전하다. 아래는 데이터를 잘못 변경하더라도 복구할 수 있는 보편적인 방법들이다.

  1. DB 백업
  2. 트랜잭션

나는 백업과 트랜잭션을 조합해서 다음과 같이 사용한다.

  1. (테스트 DB에서) 트랜잭션을 이용해, UPDATE/DELETE 쿼리문을 실행하고 롤백해보면서 개발한다.
  2. (라이브 DB 반영시) 라이브 DB 스냅샷 떠서 백업본을 만들고, 트랜잭션을 거쳐 업데이트를 실행한다.
    • 업데이트 결과가 적절한지 확인한다.
      • affected rows를 체크
      • SELECT 문을 실행하여 해당 데이터들이 의도한데로 수정된지 확인 후 COMMIT
  3. 라이브 배포

지금까지 DB 데이터를 안전하게 변경하는 방법에 대해서 알아보았다. 백업과 트랜잭션을 사용하는 방법에 대한 내용은 다음 글에서 다룰 예정이다.