Doküman menüsü

Sürüm 1.8.0-community

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 durumDevam ederken ne olur
Keşfedildi, henüz kopyalanmadıBaştan sona işlenir
Kopyalandı ve doğrulandı, henüz silinmediYalnı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ı .