Java

[Spring Boot/Spring Data JPA] Flyway 데이터베이스 마이그레이션

cob 2023. 7. 4. 22:09

 

 마이그레이션

 

 

데이터베이스 마이그레이션이란?
기존 데이터베이스의 스키마와 데이터를 새로운 버전 또는 구조로 이전하는 작업으로 이를 통해 데이터베이스 시스템을 업그레이드하거나 확장할 수 있다. 마이그레이션은 데이터의 백업, 변환, 이동 등의 작업을 포함하며, 데이터의 일관성과 무결성을 유지하고 새로운 데이터베이스 버전으로 전환되며 시스템의 안정성과 확장성을 유지할 수 있다.

 

 

 


1. 동작 흐름

Application ContextFlyway 실행 스키마 생성 hibernate validation(검증) →  적합한 스키마 실행애플리케이션 실행 완료 

 

 


2. Flyway를 사용한 데이터베이스 마이그레이션 방법

Flyway는 데이터베이스 마이그레이션을 관리하기 위한 오픈 소스 도구이다.

 

2-1) 의존성 추가

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

 

2-2) application.properties 파일 설정 추가

spring.jpa.hibernate.ddl-auto=validate
spring.jpa.generate-ddl=false
  • DDL 검증 옵션을 추가한다. 실제 DB 테이블과 Entity 클래스의 맵핑을 검증한다.

 

 

2-3) 마이그레이션 디렉토리 생성 

마이그레이션 디렉토리

  • 경로 :  resources > db > migration
  • db/migration 또는 db/migration/{vendor}   (vendor = postgreSQL, MySQL 등)

 

 

2-4) 마이그레이션 파일 생성

* 이름 규칙
V숫자__이름.sql

마이그레이션 파일

  • V는 대문자, 숫자는 순차(타임스탬프 권장), 숫자와 이름 사이에 언다바 두개, 이름은 서술적으로 생성

 

  • 세미콜론(;) 추가해야 한다.
  • 한번 적용된 SQL 스크립트 파일 절대 건드려서는 안된다. 새롭게 변경 사항이 있다면 새로운 파일을 생성해 줘야한다.

 

Flyway 테이블

  • Flyway 테이블이 자동으로 생성되고, 마이그레이션 정보를 담고있다. 

 

 

반응형