PostgreSQL’de CMD ile Backup ve Restore (Windows)
Kurumsal Hayatta Veritabanı Yönetimi
Kurumsal hayatta veritabanı “sadece proje dosyası” değildir; çoğu zaman sipariş, ödeme, müşteri kayıtları gibi kritik veriler burada durur. Bu yüzden şirketler “yedek almayı” bir seçenek değil, bir operasyon standardı olarak görür.
Bu yazıda, Windows ortamında PostgreSQL için en yaygın iki yaklaşımı (komut satırı üzerinden) basit şekilde öğreneceksiniz:
- Backup (yedek almak):
pg_dump - Restore (geri yüklemek):
.sqlisepsql,.backupisepg_restore
Not: Burada örnek veritabanı adı olarak
sample_dbkullanıyorum. Siz kendi veritabanı adınızı yazabilirsiniz.
Kurgu: Bir şirkette “neden” bu işler böyle yapılır?
Bir e-ticaret şirketi düşünün: gece boyunca siparişler, ödemeler, iade kayıtları işleniyor. Sabah operasyon ekibi rapor alacak, muhasebe mutabakat yapacak, teknik ekip logları inceleyecek.
Bu dünyada iki temel ihtiyaç vardır:
- Her gün düzenli yedek (bir şey ters giderse geri dönmek için)
- Test ortamına geri yükleme (güncelleme öncesi denemek için)
Bu yüzden şirketler backup/restore işini genelde CMD ile yönetir. Çünkü komut satırı:
- Daha stabil çalışır (özellikle büyük veride)
- Otomasyona uygundur (gece 02:00 yedeği gibi)
- Sunucu ortamında da aynı şekilde çalışır (GUI’ye bağlı kalmaz)
1) .sql ile yedek/geri yükleme
Kurumsal örnek:
“Geliştirici ekip bir tabloda değişiklik yapacak. Önce hızlı bir yedek alalım; sorun olursa geri döneriz.”
Backup almak (.sql)
"C:\Program Files\PostgreSQL\17\bin\pg_dump.exe" ^
--host "localhost" --port "5432" --username "postgres" ^
--dbname "sample_db" ^
--file "D:\backup\sample_db.sql"
Restore etmek (.sql)
"C:\Program Files\PostgreSQL\17\bin\psql.exe" ^
--host "localhost" --port "5432" --username "postgres" ^
--dbname "sample_db" ^
--file "D:\backup\sample_db.sql"
Kurumsal mantıkla: .sql ne zaman tercih edilir?
- “Hızlı bir geri dönüş planı” gerekiyorsa
- Veri küçük/orta ölçekliyse
- Öğrenme ve temel senaryolarda (staj, ders, lab ortamı) pratikse
2) .backup ile yedek/geri yükleme
Kurumsal örnek:
“Veritabanı 80 GB. Biz bu işi daha kontrollü ve sürdürülebilir yapmalıyız. Yedek formatını daha profesyonel seçelim.”
Backup almak (.backup)
"C:\Program Files\PostgreSQL\17\bin\pg_dump.exe" ^
--host "localhost" --port "5432" --username "postgres" ^
--format=c ^
--file "D:\backup\sample_db.backup" ^
"sample_db"
Restore etmek (.backup)
"C:\Program Files\PostgreSQL\17\bin\pg_restore.exe" ^
--host "localhost" --port "5432" --username "postgres" ^
--dbname "sample_db" ^
"D:\backup\sample_db.backup"
3) “80 GB’lık DB bu yöntemle yedeklenir mi?”
Evet, yedeklenir. Kurumsal pratikte kritik olan şudur:
- 80 GB gibi bir boyutta .backup formatı daha mantıklı olur.
- Yedeği mümkünse D: gibi ayrı bir diske alın.
- SSD kullanımı süreci ciddi oranda hızlandırır.
Sık görülen durum: “Database yok” hatası
Yeni bir sunucuya restore yapacaksanız önce veritabanını oluşturmalısınız:
"C:\Program Files\PostgreSQL\17\bin\createdb.exe" ^
--host "localhost" --port "5432" --username "postgres" ^
"sample_db"