본문 바로가기

Database

DB 스키마 반영 TOOL(DB 스키마 반영 도구 구축기) #1

DBA인 나에게는 고민이 있었다.

DB 스키마 반영을 내가 하고 있지만 언제 어떤 스키마를 반영했는지 정확하게 이력관리가 되지 않고(수동 관리)

무엇을 했는지 언제 했는지 조차 관리가 되지 않고 있었다.

 

조사를 해보니 이러한 고민을 가진 DBA들이 많았고 추천하는 Tool이 있어서 소개하고자 한다.

https://flywaydb.org/

 

 

기능은 참 심플하다. 

DB에 반영할 스키마를 네이밍 룰에 맞게끔 지정된 stoage에 넣어놓고 flyway라는 툴로 실행을 하면 DB에 반영되고

반영된 이력을 flyway에서 남긴다.

또한 잘 반영되었는지 안되었는지까지 validation check하는 기능도 제공한다.

또한 상용제품을 사용할 경우 rollback기능까지 제공한다.

 

구축방법은 여러가지를 제공한다.

API, MAVEN, Commnad-line 등

 

나는 Command-line으로 사용하는 방식을 선택했다.(그냥!)


구축방법.

1. 서버에 flyway를 설치한다.(https://flywaydb.org/download/)

2. flyway conf 수정

flyway.url=jdbc:mariadb://<DB 호스트>
flyway user=DB계정
flyway password=DB패스워드

3. flyway 설정시 특정 DB를 선택해서 호스트 설정을 해줘야함
(flyway.url=jdbc:mariadb://<DB host>:3306/flyway)
또한 flyway 첫 실행시 flyway_schema_history라는 테이블이 생기는데 해당 테이블에서 DB 스키마 형상관리를 함

4. flyway 전용 DB flyway 를 생성하고, 형상관리를 해당 DB에서 하는것으로 셋팅


사용방법.

flyway가 설치된 경로의 sql 폴더에 스크립트 보관(flyway 기본 셋팅)
(ex. /flyway/sql/)

스크립트 명은 대문자 V+숫자_decription으로 작성되어야 함
(ex. V1_create db.sql)


최초 수행시 flyway baseline 명령을 통해 baseline을 설정한다.(flyway_schema_history 테이블 자동생성)

명령어.
flyway migrate - 스키마정보를 리얼DB에 마이그레이션한다.
flyway info - DB에 적용된 스키마 정보와, 로컬에 pending 되어있는 변경 정보를 보여준다.
flyway validate - DB에 적용된 스키마 정보와, 로컬의 변경점을 비교하여 보여준다
flyway repair - 마이그레이션 실패한 내역을 수정한다 (삭제, 교체)
flyway baseline - flyway로 형상 버전관리를 시작 할 baseline 을 설정한다.


flyway migrate 명령을 통해 DB반영(마이그레이션) 한다.

flyway info, validation을 통해 스키마 반영 결과 확인


 

flyway commandline 방식을 이용한 구축은 매우 쉬우나, 이를 활용하려면 웹상에서 구동되도록 해야 했고, 이는 다음편에서 소개하도록 하겠다.

 

또한 본 프로젝트를 수행하면서 percona toolkit이라는 mysql 도구를 찾았는데, 이 도구중 하나가 스키마 변경 작업을 무중단으로 가능하게끔 해주는 도구였다. 이에 대한 소개도 다음편에 이어서 진행하도록 하겠다.

 

 

다음글.

DB 스키마 반영 TOOL(DB 스키마 반영 도구 구축기) #2_마이다스아이티