Checkpoint ve Devam Etme
GoArchive ilerlemeyi nasıl kaydeder ki yarıda kalan bir çalışma kaldığı yerden devam etsin.
Büyük bir tabloyu arşivlemek saatler sürebilir. GoArchive ilerlemesini yol boyunca kaydeder; böylece bir kesinti size tüm çalışmaya değil, yalnızca içinde bulunulan batch’e mal olur.
Neler kaydedilir
GoArchive hedef sunucuda kendi izleme tablolarını tutar:
- Ulaşılan konumu tutan bir iş kaydı — kök tabloda eksiksiz işlenmiş en ileri nokta.
- Her kök satır için bir girdi tutan işe özel bir günlük; satırın durumu keşfedildi, kopyalandı veya tamamlandı olabilir.
İkisi birlikte, bir çalışmanın nereye kadar geldiğini ve her satırı hangi durumda bıraktığını tam olarak anlatır.
Devam etmek
Devam etmek için aynı komutu yeniden çalıştırın:
goarchive archive -c archiver.yaml --job archive_old_orders
Ayrı bir devam komutu yoktur, hatırlanması gereken bir bayrak da yoktur. GoArchive kendi kayıtlarını okur, ne kaldığını hesaplar ve sürdürür.
Devam etmek tam olarak ne yapar
Devam etme, her satırın bırakıldığı durumu bilir; böylece hiçbir iş gereksiz yere tekrarlanmaz:
| Kesinti anındaki durum | Devam ederken ne olur |
|---|---|
| Keşfedildi, henüz kopyalanmadı | Baştan sona işlenir |
| Kopyalandı ve doğrulandı, henüz silinmedi | Yalnızca silme — kopya tekrarlanmaz |
| Tamamlandı | Atlanır |
Verisi kopyalanmış ve doğrulanmış bir satır yeniden kopyalanmaz. Yalnızca tamamlanmamış adım yürütülür.
İlerleme atomik olarak kaydedilir
Konum, satırların tamamlandı olarak işaretlendiği işlemin içinde ilerletilir. Kaydedilen konumun, gerçekte bitmemiş bir ilerlemeyi iddia ettiği bir ara durum yoktur. Devam etmeyi yaklaşık değil güvenilir kılan da budur.
Temiz durdurma
Ctrl-C ile kesmek veya sürece bir sonlandırma sinyali göndermek, GoArchive’den
bir sonraki batch sınırında durmasını ister. Devam eden batch tamamlanır,
sonuçları kaydedilir ve süreç sonlanır.
^C
Graceful stop requested — finishing current batch
Komutu yeniden çalıştırmak, o noktadan devam eder.
Aynı anda tek iş
Bir iş çalışırken GoArchive bir kilit tutar ve bir heartbeat tazeler; böylece aynı işin ikinci bir çalışması birincinin yanında başlayamaz. Aynı koruma, kök tabloyu paylaşan iki farklı iş için de geçerlidir.
Önceki bir çalışma kilidini bırakmadan sonlandıysa GoArchive durumu bildirir ve nasıl temizleneceğini söyler; iki sürecin aynı satırlar üzerinde çalışması riskini alarak devam etmez.
İlerlemeyi izlemek
İlerleme, iş çalışırken izleme tablolarından görülebilir:
SELECT id, job_name, job_status, last_processed_root_pk_id
FROM archiver_job
WHERE job_name = 'archive_old_orders';
İzleme tabloları varsayılan olarak hedef veritabanında, ya da yapılandırırsanız kendilerine ait bir şemada bulunur. Bkz. Veritabanı Bağlantıları .
