[Spring Boot] 데이터베이스 마이그레이션 툴

Junseo Kim·2020년 2월 26일
2

마이그레이션 툴

스키마를 체계적으로 버전 관리하는 것이다. DB 스키마와, 데이터에 일어나는 변경을 sql파일로 관리하는 것이다.

Flyway와 Liquibase가 있는데 Flyway를 사용해보겠다.

Flyway

의존성을 추가해준다.

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

그 후, resources 밑에 db/migration 디렉토리를 만든다.

이 안에 sql 들을 쌓아나가면 된다.

V는 꼭 대문자로 써줘야하고 '_' 를 두개 붙여줘야한다.

이렇게 한 후 실행하면, application context가 뜨다가, Flyway를 실행해서 V1__init.sql로 인해 스키마가 생성되고, 그 다음 hibernate가 validation을 진행한다.

flyway_schema_histroy는 flyway가 자기정보를 관리하는 테이블이다. 어떤 sql파일이 언제 생성되었고, 누가만들었고 등등의 정보가 담겨져있다.

이 상황에서 Account Entity에 새로운 column을 하나 추가해보겠다.

이 후 실행하면 매핑을 할 수 없기 때문에 validation에 의해 에러가 난다.

이 경우, V1__init.sql 파일을 수정하는 것이 아니라, 새 버전을 만든다.

한 번 적용 된 sql파일은 절대 수정하면 안된다 무조건 새 파일을 만들어서 적용해야한다.

이렇게 하면 flyway가 새로운 버전을 적용해준다.

0개의 댓글