[java] Flyway를 사용하여 Java 애플리케이션의 데이터베이스 특정 기간 동안 마이그레이션이 일어나지 않게하는 방법

Flyway는 데이터베이스 스키마 관리 도구로서, 데이터베이스의 변경을 버전 관리하고, 애플리케이션에서 자동으로 마이그레이션을 수행할 수 있습니다. 이를 사용하여 애플리케이션을 배포할 때마다 데이터베이스의 스키마를 업데이트할 수 있습니다.

마이그레이션 제외하기

Flyway에서는 마이그레이션을 제외하는 여러 가지 방법이 제공됩니다. 아래의 방법을 사용하여 특정 기간 동안 마이그레이션을 수행하지 않도록 설정할 수 있습니다.

1. 마이그레이션 파일 이름 변경

Flyway는 V{version}__{description}.sql 형식의 마이그레이션 파일을 사용합니다. 일반적으로 마이그레이션 파일은 순차적으로 실행되며, 파일의 이름에 따라 순서가 결정됩니다. 특정 기간 동안 마이그레이션을 실행하지 않으려면 해당 기간 동안 실행되지 않도록 마이그레이션 파일의 이름을 변경합니다.

예를 들어, 현재 날짜가 2022-01-01이고 2주 동안 마이그레이션을 제외하려면 V{version}__{description}.sql 형식의 파일 이름을 V2022-01-15__{description}.sql로 변경합니다. 이렇게 하면 Flyway가 해당 마이그레이션 파일을 인식하지 않습니다.

2. Flyway 스킵 옵션 사용

Flyway는 flyway.skip이라는 JVM 속성을 사용하여 특정 기간 동안 마이그레이션을 건너뛰도록 설정할 수 있습니다. 이 옵션을 사용하려면 다음과 같이 명령어를 실행합니다.

java -Dflyway.skip=true -jar your_application.jar

위의 명령어를 실행하면 Flyway가 마이그레이션을 실행하지 않고, 데이터베이스를 현재 버전으로 유지합니다. 마이그레이션을 제외하고 애플리케이션을 실행하기 위해 스킵 옵션을 다시 제거하면 Flyway가 마이그레이션을 작동시킬 것입니다.

3. Flyway 인스턴스 생성시 스킵 옵션 사용

Java 애플리케이션에서 Flyway를 사용하고 있다면, Flyway.configure() 메서드를 사용하여 Flyway 인스턴스를 생성할 수 있습니다. 이때 skip() 메서드를 사용하여 마이그레이션을 건너뛰도록 설정할 수 있습니다.

Flyway flyway = Flyway.configure()
    .skip()
    .dataSource(url, user, password)
    .load();
flyway.migrate();

위의 예시에서 skip() 메서드를 호출하면 Flyway가 마이그레이션을 실행하지 않고 건너뜁니다. 마이그레이션을 다시 실행하려면 skip() 메서드를 제거하면 됩니다.

요약

Flyway를 사용하여 Java 애플리케이션의 데이터베이스에서 특정 기간 동안 마이그레이션을 제외하는 방법에 대해 알아보았습니다. 마이그레이션 파일 이름을 변경하거나 Flyway의 스킵 옵션을 사용하여 원하는 기간 동안 마이그레이션을 수행하지 않을 수 있습니다. 이를 통해 데이터베이스 스키마 관리를 더욱 효율적으로 관리할 수 있습니다.

참고 자료