
StudyWithMe
프로젝트를 진행하며 처음으로 DB Migration Tool
인 Flyway
를 사용하고 있다.
아래는 내가 Flyway
에 관해 작성한 포스팅이다.
2024.12.01 - [Infra/Flyway] - [Flyway] Flyway - database migration tool
[Flyway] Flyway - database migration tool
1. Flyway 소개 우선, `Flyway` 공식 홈페이지에서는 `Flyway`를 다음과 같이 정리하고 있다."Flyway is an open-source database migration tool" 해석하자면 오픈 소스로 누구나 사용할 수 있는 데이터베이스 마이
hdbstn3055.tistory.com
2024.12.01 - [Infra] - [Flyway] Flyway 사용 시 함께 알면 좋은 것들 With 스프링부트
[Flyway] Flyway 사용 시 함께 알면 좋은 것들 With 스프링부트
`Flyway`를 스프링부트 프로젝트에 적용해 사용하고 있다. 스프링부트에서 `Flyway`를 사용할 때 알아두면 좋은 것들에 관해 정리하고자 한다. 초기 작업 build.gradleimplementation 'org.flywaydb:flyway-core'
hdbstn3055.tistory.com
Flyway
를 사용해보니 정말 ERD 설계부터 DDL 작성, 엔티티 작성에 있어서 굉장히 신중에 신중을 다하게 된다.
왜냐.. 잘못 설정하면 바로 ddl-auto: validate
에 의해 Spring Boot
가 실행이 되지 않을 뿐더러
잘못설정하면 DB
가 맛이 가버릴 수도 있다.
지금까지 사용한 Flyway의 .sql
파일들 캡처

Flyway
는 DB
를 위한 git
이라고 할 수 있을 것 같다.
이런식으로 잘못 설정한.. 시퀀스의 삭제도 가능하고
alter table study_room_bookmark ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_bookmark_study_room_id_seq;
alter table study_room_like ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_like_study_room_id_seq;
alter table study_room_qna ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_qna_study_room_id_seq;
alter table study_room_reserve_type ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_reserve_type_study_room_id_seq;
alter table study_room_review ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_review_study_room_id_seq;
alter table study_room_tag ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_tag_study_room_id_seq;
아래처럼 새로운 컬럼 추가도 가능하다.(물론 인덱스 추가도)
alter table study_room
add column entire_min_headcount integer not null,
add column entire_max_headcount integer not null;
주의해야 할 점은, 이전에 작성한 .sql
파일을 수정하면 바로 오류가 발생하며 실행이 안된다.
파일의 맨 마지막 엔터?는 문제가 되지는 않지만, SQL문
사이에 있는 공백에 무슨 짓을 하면 체크섬 값이 달라져 오류가 발생해버린다.
checksum(flyway_schema_history)

그래도, 사용하면서 느낀 것이 저렇게 Flyway
를 사용함으로, DB 이전 시에도 휴먼 폴트 없이
최신 상태의 DB
를 계속해서 유지할 수 있다는게 큰 장점이 될 것 같다.
만약, 인간의 실수로 인해 특정 DB에는 적용이 되지 않아 A서버와 B서버가 활용하는 DB의 상태가 다른 건 말이 안되기 때문이다.
'프로젝트 > StudyWithMe' 카테고리의 다른 글
[StudyWithMe] 멀티 스레드에서 트랜잭션 작업 간 정보 불일치 문제 (0) | 2024.12.08 |
---|---|
[StudyWithMe] 페이징 시 Offset 방식 대신 Cursor 방식 적용(약 111배 성능 향상) (0) | 2024.12.07 |
[StudyWithMe] 스터디 룸 UPDATE API 작성 시 했던 고민들 (0) | 2024.12.06 |
[StudyWithMe] PostgreSQL을 처음 접해보며 (0) | 2024.12.06 |
[StudyWithMe] StudyWithMe 프로젝트 시작 (0) | 2024.12.06 |