Liquibase는 DB 구조(스키마) 변경을 코드처럼 관리하고 적용하는 도구입니다. SQL이나 YAML/XML 파일로 변경 내역을 기록하고, 이를 수동 또는 자동으로 DB에 적용할 수 있게 해줍니다.
방식 | 설명 |
---|---|
전통적인 방식 | DB 콘솔에서 직접 SQL 실행 → 관리가 어려움 |
Liquibase 방식 | SQL 파일로 작성 + 변경 이력 추적 + 자동 적용 가능 |
src/
└── main/
└── resources/
└── db/
└── changelog/
├── changelog-index.yaml ← 마스터 changelog
└── changes/
├── 001-create-user.sql
├── 002-add-role-column.sql
└── 003-insert-seed-data.sql
databaseChangeLog:
- includeAll:
path: /changes
relativeToChangelogFile: true
runOnChange: true
항목 | 설명 |
---|---|
includeAll |
지정된 폴더 내 모든 changelog 파일 포함 |
path |
포함할 파일 경로 (상대 경로) |
relativeToChangelogFile |
기준 경로를 현재 파일 기준으로 설정 |
runOnChange |
파일 변경 시 재적용 허용 (주의 필요) |
001-create-user.sql
)-- changeset kyungsoo:001
CREATE TABLE users (
id BIGINT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(100)
);
-- changeset 작성자:ID
주석은 반드시 필요합니다.
./gradlew update
changelog-index.yaml
을 읽고, /changes
폴더 내 적용되지 않은 SQL만 순차적으로 실행합니다.changelog-index.yaml
로 includeAll 설정/changes
에 SQL 또는 YAML 파일 추가-- changeset
주석 포함./gradlew update
실행databasechangelog
테이블에 이력 저장됨runOnChange: true
는 파일 내용이 바뀌면 재적용됨 → 운영에서는 주의!databasechangelog
테이블 기준으로 재실행되지 않음001-
, 002-
등의 접두어로 순서를 유지하는 것이 안전
DB를 직접 변경하지 말고, changelog 파일로 작성하고 Liquibase로 추적/적용하자!
Jooq란 무엇인가? (0) | 2025.06.03 |
---|---|
@EventListener 완벽 가이드 (0) | 2025.06.03 |
Spring Boot + GitLab CI/CD 배포 방법 (3) | 2025.06.01 |
[Spring & Swagger] Failed to load API definition. (0) | 2025.05.21 |
[JPA] - 영속성 컨텍스트에 대해 (0) | 2024.12.17 |