Her okuyucuyu ve yazıcıyı haritalandırın
Temsili arındırılmış verilerle izole bir şema üzerinde çalışın. Geçerli ve sonraki uygulama sürümlerine, taşıma çerçeveniz hakkında bilgiye, incelenmiş bir yedekleme stratejisine ve uzun işlemlere görünürlüğe ihtiyacınız var. Çalışanları, zamanlanmış işleri, raporları ve eski uygulama örneklerini dahil edin. Bir API hızlı güncellenirken uzun süre çalışan bir işçi hâlâ eski sütuna yazıyor olabilir.
Örnek raporlama hizmetimiz bir dışa aktarma etiketini şurada saklar: label ve şunu ister: display_name. Bu bir tasarım örneğidir, evrensel çalıştırılabilir SQL değildir. Taşıma sözdizimini veya kilit ayarlarını seçmeden önce tam PostgreSQL sürümünüzü ve çerçevenizi doğrulayın.
Eski temsili devre dışı bırakmadan genişletin
Önce yeni nullable alanı tanıtın. Veriler eksikken tek bir işlemde her iki değeri yazan ve gerekli geri dönüşle okuyan bir uyumluluk sürümü dağıtın. Geriye doldurma sırasında bir müşteri bir kaydı düzenlediğinde ne olacağını tanımlayın. Bir yeniden deneme ikinci bir mantıksal dışa aktarma oluşturmamalıdır.
PostgreSQL ALTER TABLE işlemleri kilit alır; düzey alt komuta bağlıdır. Küçük bir değişiklik uzun bir işlemin arkasında bekleyebilir ve sonra diğer işleri engelleyebilir. Belirli işlemi inceleyin ve prova sırasında beklemeleri gözlemleyin; eklemeli, kilitsiz anlamına gelmez.
Teknik referans: PostgreSQL ALTER TABLE · PostgreSQL açık kilitleme.
Uyumluluk sınırını görünür kılın
| Şema ve yazıcılar | Okuyucu davranışı | Kurtarma kararı |
|---|---|---|
| Yalnızca etiket var | Eski kod destekleniyor | Önce yeni alanı ekleyin |
| Her iki alan; yalnızca eskiye yazanlar kalır | Etiketi yetkili olarak okuyun | Okuyucuları henüz değiştirmeyin |
| Tüm yazıcılar çift yazar; doğrulanmış geriye doldurma | Yeni alan yetkili hale gelebilir | Yalnızca uyumlu çift yazan koda geri dönün |
| Eski alan kaldırıldı | Hiçbir kod etikete başvurmamalıdır | Eski yapı uyumsuz |
Eksik değerler için bir geri dönüş, boş olmayan ama eski bir yeni değeri algılayamaz. Okuyucuları değiştirmeden önce yalnızca eskiye yazanları devre dışı bırakın ve tutarlılığı doğrulayın. Okuyucu geçişinden sonra yalnızca eski koda geri dönmek sapmayı yeniden oluşturabilir. Bunun yerine uyumluluk sürümünü incelenmiş kurtarma yapısı olarak koruyun.
Sınırlı, yeniden başlatılabilir işlerle geriye doldurun
Daha yeni bir müşteri düzenlemesinin üzerine yazmadan kopyalanması gereken satırları bulun. Kararlı bir sıralama, eşzamanlılık açısından güvenli bir güncelleme koşulu ve iş yüküne göre seçilmiş gruplar kullanın. İlerlemeyi kalıcı hale getirin, böylece bir hata bilinen bir sınırda devam edebilir. Yazma hacmini, kilit beklemelerini, istek gecikmesini ve varsa replikasyonu izleyin.
Her uygulama için güvenli bir grup boyutu yoktur. Provada küçük bir grubu normal trafikle karşılaştırın, ardından bir duraklatma veya durdurma kuralı seçin. Bir grup başarısız olursa yeniden denemeden önce neyin taahhüt edildiğini inceleyin. Sınırsız bir yeniden deneme döngüsü, kurtarılabilir bir uyuşmazlığı sürekli veritabanı baskısına dönüştürebilir.
Yalnızca dolu satırları değil, anlambilimi de kontrol edin
Eksik değerleri, temsili etiketleri, yeni kayıtları ve mevcut dışa aktarmalara yapılan güncellemeleri doğrulayın. Boş olmayan satırları saymak doğru görünebilir, ancak değerler yanlış kaynaktan kopyalanmış olabilir. Uyumluluk yapısını kısmen doldurulmuş verilere karşı test edin ve dağıtımdan önce başlatılmış bir işçiyi çalıştırın.
Şema sürümünü, taşıma revizyonunu, tamamlama ölçütlerini ve uyumsuz kombinasyonları kaydedin. Herhangi birini kaldırmadan önce geri dönüş kullanımını ve tutarlılığı inceleyin. Kontroller başarısız olursa geriye doldurmayı veya terfiyi durdurun, kanıtları koruyun ve uyumlu bir yapı ya da incelenmiş ileri onarım seçin. Bir uygulama geri almanın taahhüt edilmiş veriyi yeniden oluşturduğunu iddia etmeyin.
Eski alanı başka bir incelenmiş sürümde kaldırın
Geriye doldurma ve gözlem dönemi ölçütlerinizi karşıladıktan sonra eski okumaları ve yazmaları kaldırın. Etkileşimli rotaların yanı sıra seyrek işleri de kontrol edin. Eski alanı bırakmak, kendi kurtarma kararıyla daha sonraki bir değişikliğe aittir; böylece bir sürüm sorunu sizi kod onarımını veri yeniden oluşturmayla birleştirmeye zorlamaz.
Devre dışı bırakmadan sonra kötü veri ortaya çıkarsa daha fazla hasarı durdurun ve kurtarma planını veya onaylanmış bir onarımı kullanın. Araçlar bir geri alma düğmesi sunduğu için yıkıcı bir aşağı taşıma uygulamayın. Matrisi şuna ekleyin: sürüm kaydıyla başlayın ve prova yapın: veri kurtarma üretimi değiştirmeden önce. Yararlı sonuç, sıfır kesinti garantisi değil, açık bir uyumluluk sınırıdır.
Resmî referanslar
Bu makale için belgeler incelendi. Örnekler, bir PrivacyNodes sunucusunda test edilmiş komutlar değil, planlama alıştırmalarıdır. Yüklü sürümünüz için belgeleri kontrol edin.