Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flyway #31

Open
SuyeonChoi opened this issue Nov 1, 2022 · 0 comments
Open

Flyway #31

SuyeonChoi opened this issue Nov 1, 2022 · 0 comments

Comments

@SuyeonChoi
Copy link
Owner

Flyway?

  • 데이터베이스 형상 관리 도구
  • Application은 버전 상향이 되었는데, 변경된 DB 스크립트가 실행되지 않아, 장애로 이어지는 상황 방지
  • 개발 DB에서 변경한 Schema, Index, Key 등을 베타, 운영 DB에 누락되는 것을 Flyway를 사용하여 방지 가능
  • 단위 테스트에서도 In-Memory DB에 DB DDL 이력을 실행하여 원격과 같은 DB 형상을 유지하며 단위 테스트 가능
  • JVM으로 동작하는 애플리케이션에서 실행될 때, API를 통해 경로에 저장된 SQL 파일로 작업을 수행하거나 Maven으로 Application과는 별도로 실행 가능

장점

  • Migration 파일을 변경 명세 기준으로 작성하면 협업할 때 파일이 많아져도 배포 일자 별로 파일 하나로 관리 가능
  • 불필요하게 많은 파일 생성 방지

사용방법

  • V + 버전 + __ + 설명.sql 규칙으로 파일명 작성
  • Prefix V는 반드시 대문자로 작성
  • Flyway Plugin은 내부 스키마의 등록된 정보를 기반으로 버전 순서대로 파일 내용 실행
  • 이미 row에 등록된 스크립트 버전은 중복으로 실행되지 않음
  • Flyway로 관리될 SQL 파일은 src/main/resources/db/migration위치에 저장해야함

Application 실행 시 Migration 진행하는 방법
Application main() 메서드에 코드 추가

Flyway flyway = Flyway.configure().dataSource("DB_URL", "User", 'Password').load();
flyway.migrate();

Application 실행과 관계 없이 Maven으로 Migration 진행하는 방법

  1. Plugin 추가
<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>${flyway-maven-plugin.version}</version>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
        </dependency>
    </dependencies>
</plugin>
  1. flyway.conf 파일에 형상 관리를 반영할 대상 DB 서버 정보 기재
flyway.url=jdbc:mysql://toast.com:{Port}/{DB명}
flyway.user=framework
flyway.password=
flyway.ignoreMissingMigrations=true
flyway.validateOnMigrate=false
  1. Maven으로 Migration 진행
$ mvn -Dflyway.configFiles=flyway.conf flyway:migrate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant