[DB migration] Springboot & Flyway - 개발환경과 로컬환경의 DB가 다를 때 DB 마이그레이션 하기
여러 환경을 두고 개발하는 일은 매우 일반적이다.
- 로컬, 개발, QA, 운영 ...
환경마다 사용하는 DB가 다를 수 있다.
개발환경에서는 가볍게 사용할 수 있는 H2
를 사용하고 로컬에서는 운영환경에서 사용할 MySQL
을 붙여서 DB와의 통합 테스트를 진행할 수 있다.
H2
와 MySQL
은 문법적으로 매우 비슷하지만 완전히 똑같지는 않다.
MySQL
과 Oracle
이라면?? 문법적으로 다른 점이 더 많을 것이다.
hibernate
의 도움을 받아 마이그레이션 할 때는 dialect
라는 것에 도움을 받았다.
dialect
는 방언이라는 뜻으로 각 DB에 해당하는 문법으로 SQL문을 만드는 기능이다.
직접 DDL을 작성해야 하는 경우 dialect
의 도움을 받을 수 없다.
flyway를 사용하는 경우 flyway는 어떤 vendor의 DB를 사용할 지 모른다.
flyway에게 특정 vendor의 DB를 사용할 때 지정한 경로의 스크립트가 사용되도록 알려줘야 한다.
📌 설정
개발환경에서는 H2
를 사용하고 운영환경에서 사용할 MySQL
을 붙여서 테스트 하기 위해 MySQL
을 사용하는 로컬환경을 운영할려고 한다.
flyway
가 기본으로 스크립트 파일을 찾는 경로는 아래와 같다.
resouces/db/migration/V1__init.sql
flyway
가 스크립트를 찾는 두번째 방법이 있다.
두번째 방법을 적용키기 위해 application.properties
에 설정을 추가한다.
spring.flyway.locations=classpath:db/migration/{vendor}
이제 아래와 같은 경로에 스크립트를 위치시키면 사용되는 DB 종류에 따라 그에 맞는 경로의 스크립트가 실행될 것이다.
resouces/db/migration/mysql/V1__init.sql
resouces/db/migration/h2/V1__init.sql
같은 작업을 하지만 DB 문법이 달라서 다른 경로에 작성하는 경우 위와 같이 버전정보는 맞춰줘야 한다.
Author And Source
이 문제에 관하여([DB migration] Springboot & Flyway - 개발환경과 로컬환경의 DB가 다를 때 DB 마이그레이션 하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dhk22/DB-migration-Springboot-Flyway-개발환경과-로컬환경의-DB가-다를-때-DB-마이그레이션-하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)