1. FlywayDB

애플리케이션의 변경에 따라 DB 스키마의 변경이력을 관리하기 위한 목적으로 사용한다.

2. SpringBoot에서 제공하는 FlywayDB 관련설정

# FLYWAY (FlywayProperties)
flyway.baseline-description= #
flyway.baseline-version=1 # version to start migration
flyway.baseline-on-migrate= #
flyway.check-location=false # Check that migration scripts location exists.
flyway.clean-on-validation-error= #
flyway.enabled=true # Enable flyway.
flyway.encoding= #
flyway.ignore-failed-future-migration= #
flyway.init-sqls= # SQL statements to execute to initialize a connection immediately after obtaining it.
flyway.locations=classpath:db/migration # locations of migrations scripts
flyway.out-of-order= #
flyway.password= # JDBC password if you want Flyway to create its own DataSource
flyway.placeholder-prefix= #
flyway.placeholder-replacement= #
flyway.placeholder-suffix= #
flyway.placeholders.*= #
flyway.schemas= # schemas to update
flyway.sql-migration-prefix=V #
flyway.sql-migration-separator= #
flyway.sql-migration-suffix=.sql #
flyway.table= #
flyway.url= # JDBC url of the database to migrate. If not set, the primary configured data source is used.
flyway.user= # Login user of the database to migrate.
flyway.validate-on-migrate= #

baseline-version은 별도로 설정하지 않아도 된다.

버전을 별도로 지정하지 않는다면 설정항목을 변경하지 않아도 된다.

3. SpringBootApplication 설정

3.1. build.gradle: flywayDB 의존성 추가

/**
 * http://flywaydb.org/
 * FlywayDB: DB Schema version management tool
 */
compile "org.flywaydb:flyway-core"

3.2. application.yml: flywayDB properties 설정

spring:
  profiles: production
  profiles.include: logging-info, logging-daily
  datasource:
    initialize: false
    sql-script-encoding: UTF-8
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:~/.h2database/test-db;CACHE_SIZE=10240;DB_CLOSE_DELAY=-1;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=15000;MVCC=true;
    username: tester //sa 계정을 사용하지 않으려고...
    password: tester
  jpa:
    hibernate:
      ddl-auto: validate
logging:
  file: logs/tester.log
flyway:
  enabled: true
  encoding: UTF-8
  user: sa
  password:

3.3. V1__xxxx.sql 추가

CREATE SCHEMA IF NOT EXISTS "PUBLIC";
CREATE USER IF NOT EXISTS tester PASSWORD 'tester';
ALTER USER tester ADMIN TRUE;
GRANT ALL TO tester;
 
-- DDL 스크립트
....

파일명을 기준으로 하여 버전관리

version comment 사이는 __ 2개의 언더바로 구분지어야 한다.


+ Recent posts