Docker PostgreSQL Yükseltmesi

yazıldı2 dakika okuma süresi

Miniflux uygulaması için PostgreSQL veritabanını v15'ten v17'ye yükseltmeye karar verdim. Sürüm yükseltmesini direkt olarak yapamadım çünkü iki sürüm arasında uyumsuzluklar varmış. Bundan dolayı önce yedek alıp bu yedeği yeni sürümde kullanmam gerekiyordu. Aşağıda adım adım bu yükseltmeyi nasıl gerçekleştirdiğimi anlattım.

Düzenin anlaşılması açısından ben miniflux adındaki stack içerisinde miniflux ve miniflux-db konteynerları kullanıyorum. Siz farklı isimlendirmeler kullanmış olabilirsiniz.

Konteynerları Durdurma

İlk olarak, veritabanı güncellemesi yapmadan önce mevcut tüm konteynerları durdurmam gerekti. Hem Miniflux hem de PostgreSQL konteynerlerinin durduğundan emin oldum:

docker compose down

Bu komut, tüm servisleri durduruyor ve ağ bağlantılarını kaldırıyor. Eğer Portainer kullanıyorsanız, bu işlemi Portainer arayüzü üzerinden de gerçekleştirebilirsiniz.

Yedek Alma

Veritabanını güncellemeden önce, tüm verilerin yedeğini almak oldukça önemli. Aşağıdaki komut ile veritabanımın tam yedeğini aldım:

docker exec miniflux-db pg_dumpall -U miniflux > ./miniflux_pg_backup.sql

Not: Burada -U miniflux parametresi, yedeği almak için miniflux kullanıcısını belirliyor. Bu kullanıcı, veritabanına erişim yetkisine sahip olmalıdır. Eğer farklı bir kullanıcı kullanıyorsanız, miniflux yerine o kullanıcıyı yazmanız gerekecektir.

Bu, veritabanındaki tüm verileri SQL formatında dışa aktarıyor. Eğer bir şeyler ters giderse, bu dosya sayesinde geri dönüş yapabilirim.

Eski Veritabanı Verilerini Güvence Altına Alma

Veritabanı verilerinin bulunduğu volume'u (veritabanı dosyaları) güvence altına almak için şu komutları kullandım:

mv postgresql postgresql.bak
mkdir postgresql

Benim veritabanı dosyalarım /SSD/AppData/miniflux/postgresql altındaydı, siz de kendinize göre ayarlamanız gerekiyor. Bu işlem, eski veritabanı verilerini başka bir dizine taşıyor ve yeni veritabanı verileri için temiz bir alan açıyor.

Docker Compose Dosyasını Güncelleme

Artık PostgreSQL'ün yeni versiyonuna geçebilirim. Docker Compose dosyasındaki PostgreSQL image'ını v15'ten v17-alpine'e güncelledim:

- image: postgres:15
+ image: postgres:17-alpine

Alpine versiyonunun daha hafif ve performans açısından avantajlı olduğunu göz önünde bulundurarak tercih ettim.

Yeni PostgreSQL Konteynerini Başlatma

Yeni versiyonu başlatmak için Docker Compose'u tekrar çalıştırdım:

docker compose up -d miniflux-db

Veritabanı konteyneri çalışmaya başladıktan sonra, pg_isready komutuyla bağlantının sağlandığını kontrol ettim:

docker exec miniflux-db pg_isready -U miniflux

Bu, PostgreSQL'in düzgün çalışıp çalışmadığını test ediyor. Eğer düzgün çalışıyorsa aşağıdaki gibi bir çıktı görmelisiniz:

/var/run/postgresql:5432 - accepting connections

Yedeği Geri Yükleme

Artık veritabanını geri yükleyebilirim. Daha önce aldığım yedeği, aşağıdaki komutla yeni veritabanına aktardım:

cat miniflux_pg_backup.sql | docker exec -i miniflux-db psql -U miniflux

Bu işlem, tüm yedeği geri yükleyerek eski verileri yeni veritabanı üzerine yazıyor.

Miniflux’u Tekrar Başlatma

Veritabanı başarıyla güncellendikten sonra, Miniflux servisini tekrar başlattım:

docker compose up -d

Tüm servislerin çalışıp çalışmadığını kontrol ettim.

Temizlik

Her şey düzgün bir şekilde çalışıyorsa, eski veritabanı yedeği ve dump dosyasını silebiliriz:

rm miniflux_pg_backup.sql
rm -rf postgresql.bak

Sonuç

Bu adımları takip ederek PostgreSQL'i v15'ten v17'ye başarıyla yükselttim. Herhangi bir veri kaybı yaşamadan, eski verilerimle yeni sürüme geçiş yaptım. Eğer bu işlemi yaparken hata alırsanız, yedeği geri yükleyip adımları yeniden gözden geçirebilirsiniz.

© 2025Taylan Tatlı