4.7 KiB
4.7 KiB
🔄 RESTORE İŞLEMİ DÜZELTİLDİ! ✅
❌ Eski Sorun
Restore işlemi veritabanını tamamen siliyordu ama yedeği geri yüklemiyordu. Sonuç: Boş veritabanı!
✅ Yeni Çözüm
Restore işlemi şimdi DOĞRU şekilde çalışıyor:
1️⃣ Tabloları Silmez, Sadece Verileri Temizler
- Django migration'ları ile oluşturulan tablo yapısı korunur
- PRIMARY KEY, FOREIGN KEY, INDEX'ler yerinde kalır
- Sadece VERİLER temizlenir (TRUNCATE TABLE)
2️⃣ Yedekteki Verileri Ekler
- SQL dosyasındaki INSERT komutlarını çalıştırır
- Kullanıcılar geri gelir
- Tüm veriler geri gelir
3️⃣ Sequence'leri Günceller
- Auto increment ID'lerin devam etmesi için sequence'ler sıfırlanır
🚀 Nasıl Kullanılır?
Adım 1: Django Sunucusunu Başlat
cd /Users/beyhan/Projeler/Python/dj52
python manage.py runserver
Adım 2: Admin Panele Git
http://127.0.0.1:8000/admin/backup/databasebackup/
Adım 3: Yedeği Restore Et
- Yükl
ediğiniz yedeği seç (checkbox ile) 2. Actions → "Seçili Yedeği Geri Yükle" 3. Go butonuna tıkla 4. Bekle (birkaç saniye) 5. Başarı mesajını gör
Adım 4: Sayfayı Yenile
Tarayıcıda F5 veya Cmd+R ile sayfayı yenile
Adım 5: Giriş Yap
Yedekteki kullanıcı bilgileriyle giriş yapabilirsin:
- Email:
beyhan@beyhan.devveyaadmin@example.com - Şifre: Yedekteki şifreler (orijinal sunucudaki şifreler)
📊 Restore Süreci
┌─────────────────────────────────────────┐
│ 1. Mevcut veriler temizleniyor... │
│ TRUNCATE TABLE RESTART IDENTITY │
│ CASCADE (foreign key'ler otomatik) │
├─────────────────────────────────────────┤
│ 2. Yedekteki veriler ekleniyor... │
│ INSERT INTO ... (tüm kayıtlar) │
├─────────────────────────────────────────┤
│ 3. Sequence'ler güncelleniyor... │
│ SELECT setval(...) │
├─────────────────────────────────────────┤
│ 4. Migration'lar çalıştırılıyor │
│ python manage.py migrate │
├─────────────────────────────────────────┤
│ 5. Tamamlandı! ✅ │
└─────────────────────────────────────────┘
⚡ Hızlı Test
# 1. Sunucuyu başlat
python manage.py runserver
# 2. Admin panelde restore yap
# - Yedeği seç
# - Actions → Geri Yükle
# - Go
# 3. Sayfayı yenile
# 4. Kullanıcıları kontrol et
python manage.py shell -c "
from accounts.models import CustomUser
users = CustomUser.objects.all()
print(f'Toplam {users.count()} kullanıcı:')
for user in users:
print(f' - {user.email}')
"
🎯 Beklenen Sonuç
Restore işlemi tamamlandığında:
- ✅ Kullanıcılar geri geldi
- ✅ Blog yazıları geri geldi
- ✅ Tüm ayarlar geri geldi
- ✅ Admin panel çalışıyor
- ✅ Giriş yapabiliyorsunuz
🔍 Sorun Giderme
"Giriş yapamıyorum"
Yedekteki şifreyi bilmiyorsanız:
python manage.py shell -c "
from accounts.models import CustomUser
user = CustomUser.objects.get(email='beyhan@beyhan.dev')
user.set_password('yenisifre')
user.save()
print('Şifre değiştirildi!')
"
"Hiç kullanıcı yok"
Restore başarısız olmuş, tekrar deneyin:
# Önce migration'ları çalıştır
python manage.py migrate
# Sonra restore'u tekrar yap (admin panelden)
"Veriler eksik"
SQL dosyasını kontrol edin:
# INSERT komutlarını say
grep -c "^INSERT INTO" backups/your_backup.sql
# Beklenen: 100+ INSERT komutu
📝 Değişiklikler
/backup/views.py - restore_backup()
Eski yaklaşım:
- DROP DATABASE (veritabanını sil)
- CREATE DATABASE (yeni veritabanı oluştur)
- SQL dosyasını çalıştır (başarısız oluyordu)
Yeni yaklaşım:
- TRUNCATE TABLE (verileri sil, yapıyı koru)
- Sadece INSERT komutlarını çalıştır
- Sequence'leri güncelle
- Migration'ları çalıştır
/backup/admin.py - restore_selected_backup()
- Restore sonrası otomatik migration eklendi
- Kullanıcıya bilgilendirme mesajı güncellendi
✅ Test Edildi!
Restore işlemi artık çalışıyor. Hemen test edin:
cd /Users/beyhan/Projeler/Python/dj52
python manage.py runserver
Sonra admin panelde restore yapın!