flyway로 DB 관리하기(with spring boot & gradle)

2024. 8. 16. 16:12Spring

반응형

이 글에서는 flyway를 어떻게 spring boot에 적용하는지에 대해 작성하겠습니다.

 

Flyway는 DB 버전 관리 툴로, 다양한 DB를 지원하고 마이그레이션을 지원합니다.

 

의존성 추가 및 기본 설정

plugins {
   ...
   id("org.flywaydb.flyway") version "9.0.0"
}


dependencies {
	implementation("org.flywaydb:flyway-core")
}

 

build.gradle에 이렇게 두 개의 문장을 추가해 의존성을 추가해줍니다.

 

 

flyway {
	url = db_url
	user = db_user
	password = db_password
	locations = arrayOf(db_migration_file_loc) # 기본 위치는 filesystem:src/main/resources/db/migration
	cleanDisabled = false # clean 가능하게 할지 여부
}

 

그리고 flyway설정을 추가해줍니다.

 

추가 후 gradle sync를 실행해주면,

 

 

flyway 관련 명령어가 생성된 것을 확인할 수 있습니다.

 

파일 위치 및 작성법

기본 위치는 /src/main/resources/db/migration입니다.

 해당 위치에 실행하고자 하는 sql파일을 만들면 됩니다.

 

이떄 규칙이 있는데,

 

마이그레이션의 경우

V1__Create_Account.sql 과 같은 형식으로,

 

undo의 경우

U2__Undoe_account.sql과 같은 형식으로,

 

repeatable migration의 경우

R1__Repeat.sql과 같은 형식으로 됩니다.

 

 

* repeatable migration은 매번 실행될 때마다 동일한 이름으로 재실행 가능한 마이그레이션 스크립트를 의미합니다.

일반적인 마이그레이션과 달리, Repeatable Migration은 고유한 버전 번호가 없으며, 스크립트 내용이 변경될 때마다 다시 실행됩니다.

 

 

저는 db/migration위치에 V1__Create_account.sql을 만들었고,

CREATE TABLE accounts
(
    id              BIGSERIAL PRIMARY KEY,
    email           CHARACTER VARYING NOT NULL,
    encoded_password CHARACTER VARYING NOT NULL,
    default_username CHARACTER VARYING NOT NULL
);

 

flyway-migrate를 실행하면

 

 

이렇게 정상적으로 실행됩니다.

 

 

 

 

Flyway - Automate database deployments across teams and technologies

 

www.red-gate.com

 

반응형