
Zelkulon10 Mart 20251 dk okuma
Liquibase, veritabanı göçlerini tekrarlanabilir, versiyonlanmış ve güvenli kılar. Bu rehber, ilk göçten geri almaya kadar tüm iş akışını gösterir.
Liquibase Olmadan Yaşanan Sorun

Changelog Yapısı
src/main/resources/db/changelog/
├── db.changelog-master.yaml ← Master (diğerlerini içe aktarır)
├── 2024/
│ ├── 001-create-users-table.yaml
│ ├── 002-add-email-index.yaml
│ └── 003-create-orders-table.yaml
└── 2025/
├── 001-add-last-login-column.yaml
└── 002-create-audit-log.yaml# db.changelog-master.yaml
databaseChangeLog:
- includeAll:
path: db/changelog/2024/
- includeAll:
path: db/changelog/2025/Changeset: Tablo Oluşturma
# 2024/001-create-users-table.yaml
databaseChangeLog:
- changeSet:
id: 2024-001-create-users
author: [email protected]
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: VARCHAR(36)
constraints:
primaryKey: true
nullable: false
- column:
name: email
type: VARCHAR(255)
constraints:
nullable: false
unique: true
- column:
name: created_at
type: TIMESTAMP
defaultValueComputed: CURRENT_TIMESTAMP
rollback:
- dropTable:
tableName: usersBağlamla Karmaşık Göç
# 2025/001-add-last-login.yaml
databaseChangeLog:
- changeSet:
id: 2025-001-add-last-login
author: [email protected]
preConditions:
onFail: MARK_RAN
tableExists:
tableName: users
changes:
- addColumn:
tableName: users
columns:
- column:
name: last_login_at
type: TIMESTAMP
# Yalnızca test/geliştirme ortamında çalıştır
- changeSet:
id: 2025-002-insert-test-data
context: "test,development"
changes:
- insert:
tableName: users
columns:
- column: { name: email, value: "[email protected]" }Geri Alma (Rollback)
# Maven Eklentisi ile
mvn liquibase:rollback -Dliquibase.rollbackCount=1
# CLI ile
liquibase rollback --tag=v1.0
liquibase rollbackCount 3En İyi Uygulamalar
- Changeset'ler değiştirilemez – halihazırda çalıştırılmışları asla değiştirme
- Her zaman geri alma talimatlarını tanımla
- Ortama özgü göçler için bağlamları kullan (test, development)
- Sıralı çalıştırma için sayısal önek (001-, 002-)
- CI/CD'de: her dağıtımdan önce mvn liquibase:validate çalıştır
Özet
- Tekrarlanabilir: Her ortamın aynı durumda olması garantilenir
- Versiyonlu: Tüm şema değişikliklerinin eksiksiz geçmişi
- Geri alınabilir: Göçler geri alınabilir
- CI/CD-hazır: Her dağıtımda otomatik çalıştırma