# Norden — PostgreSQL yedek ve geri yükleme provası

Tarih: 14 Eylül 2026  
Durum: Yerel Docker/PostgreSQL restore provası tamamlandı; production otomasyonu, şifreli off-site kopya ve Hostinger üzerinde ikinci prova bekliyor

## Doğrulanan sonuç

Çalışan `norden` PostgreSQL 17 veritabanı `pg_dump --format=custom --compress=9 --no-owner --no-privileges` ile container içindeki geçici dosyaya alındı. Dosyanın SHA-256 özeti üretildi ve `pg_restore --list` ile arşiv yapısı okunabildi.

Yedek, zaman damgalı ayrı bir PostgreSQL test veritabanına `--role=norden_app --exit-on-error` ile geri yüklendi. Kaynak ve restore sayımları eşleşti:

| Tablo | Kayıt |
|---|---:|
| Category | 1 |
| Series | 7 |
| Product | 131 |
| ProductImage | 272 |
| GalleryItem | 9 |
| ExportMarket | 48 |
| SiteSection | 7 |

Prova `POSTGRES_BACKUP_RESTORE_OK` sonucuyla kapandı. Test veritabanı ve geçici dump yalnız doğrulama sonunda silindi; çalışan `norden` veritabanı değiştirilmedi.

## Hazırlanan üretim aracı

`deploy/postgres-backup.sh`:

- parolayı komut satırından değil, salt okunur bağlanan `PGPASSFILE` üzerinden alır;
- geçici dosyayı `umask 077` ile oluşturur;
- custom/compressed dump üretir;
- arşivi `pg_restore --list` ile doğrulamadan nihai ada taşımaz;
- her dump için ayrı SHA-256 dosyası üretir;
- hata veya kesintide yarım `.tmp` dosyasını temizler.

Dump, checksum ve parola dosyaları Git'e giremez; `.gitignore` ve depo güvenlik denetimi `.dump`, `.backup` ve `backups/` yollarını reddeder.

## Production'da kalan kabul

1. Hostinger üzerinde backup container/cron zamanlaması kurulur.
2. Dump istemci tarafında güçlü bir anahtarla şifrelenir; anahtar VPS ve R2 erişim anahtarından ayrı tutulur.
3. Şifreli dosya private R2 backup bucket/prefix'ine gönderilir; anonim okuma kapalı olur.
4. Günlük 14, haftalık 8 kopya saklama politikası uygulanır.
5. Ayrı test DB'ye otomatik restore yapılıp uygulama health, 432 rota ve admin RBAC denetimleri çalıştırılır.
6. Hostinger snapshot'ının geri yüklenmesi mevcut VPS içeriğini değiştirebileceği için yalnız bakım penceresinde ve ayrıca onaylanmış prosedürle yapılır.

Yerel prova production felaket kurtarma kabulü değildir; off-site kopya ve farklı ortamda restore görülmeden G-17 tamamen kapatılmaz.
