티스토리 뷰

spring.io

springboot에 flyway라이브러리 사용

천둥벼락 2018. 3. 29. 05:18

제목 : springboot에 flyway라이브러리 사용


※ 개발환경

  • windows10
  • java version "1.8.0_171"
  • Intellij 버전 2018.1.3
  • Gradle 버전 4.7
  • Spring Boot 버전 2.0.2.RELEASE
  • flyway 5.0.7
  • MySQL 5.5.59 (예제 Database는 www.mysqltutorial.org에서 제공하는 mysql용 예제 classicmodels 를 사용하였습니다.)



Database Schema를 좀 더 쉽게 관리하게 도와주는 툴, 라이브러리이다. https://flywaydb.org/ 에서 배포한다.


flyway의 스키마 관리 방법은 DB접속정보를 flyway의 설정파일에 기록하여 접근하도록 한 후, flyway 명령어를 통해 SQL 파일의 내용을 마이그레이션 하는것이다.


첫번째는 flyway baseline 으로 해당 DB에 flyway_schema_history 테이블을 생성한다.


그후 프로젝트의 src/main/resources/db/migration 디렉토리에 특정 패턴의 파일명을 가진 .sql파일을 만들어 migrate명령어를 사용하여 해당 sql문을 실행하는 방식이다.


기본적인 사용방법은 위에서 기술한것과 같으나, 이 툴은 프로그램으로도 존재하며 API, MAVEN, Gradle, Ant, SBT로 사용 가능하다. 여러가지 실행 모드 DB에 접근하는 설정방법도 실행모드에 따라 다르다. 기본 설정을 재정의 할 수도 있다.


이 글에선 windows에서 Ubuntu서버에 설치되어 있는 mysql5.5버전의 DB를 설정하였으며, gradle 프로젝트(Spring 기반)에서 사용하는 방법을 기술한다.


1. start.spring.io 에서 기본 골격 생성

web, Flyway, MySQL, MyBitis 를 Dependencies 로 선택한다.



2. application.properties 에 DB 접속 정보 작성

이 부분은 실제 flyway의 설정과 관련은 없다. DB관련 설정이 각각 기술되어야 한다는것을 알리기 위함이다.

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://172.30.1.43:3306/classicmodels
spring.datasource.username=<너의 ID>
spring.datasource.password=<너의 PASSWORD>

mybatis.mapper-locations=classpath*:/mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.type-handlers-package=com.github.magicdol


3.  build.gradle 내용 추가

flyway는 이 설정의 DB를 사용한다. 최신 버전에서는 multiple databases 에 대해 설정하는 방법도 설명하고 있다.

plugins {
	id "org.flywaydb.flyway" version "5.0.7"
}
flyway {
    url = 'jdbc:mysql://172.30.1.43:3306/classicmodels'
    user = 'magicdol'
    password = 'magicdol1'
}

4. src/main/resources/db/migration 디렉토리 생성

이곳에 sql 파일을 작성하면 gradle flywayMigrate 명령으로 sql 파일 내용을 DB에 적용 시킬 수 있다. 파일명 규칙을 따르면 어플리케이션이 재실행 될때 flyway_schema_history 테이블을 참조하여 자동으로 마이그레이션이 적용된다.


5. gradle flywayBaseline -i 실행

처음 DB 에 flyway_schema_history 테이블을 생성하는 명령어이다. build.gradle 에 설정되어 있는 DB에 해당 테이블을 생성하여 스키마 버전관리를 시작한다.




※ 참고자료


※ 소스


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함