İşletim
GoArchive'i düzenli çalıştırmak: zamanlama, ilerlemeyi izleme ve çalışan bir işi yönetme.
Bir iş tanımlanıp denendikten sonra genellikle düzenli çalışan bir şeye dönüşür. Bu sayfa GoArchive’i düzenli çalıştırmayı anlatır.
Düzenli arşivleme işlerini izlemek ve replica gecikmesiyle birlikte yönetmek sürekli bir iş; MySQL destek hizmetimiz bu yükü üstlenir.
Zamanlama
GoArchive işini bitirip çıkar; dolayısıyla herhangi bir zamanlayıcı onu sürebilir.
# haftalık, pazar 02:00
0 2 * * 0 /usr/local/bin/goarchive archive \
-c /etc/goarchive/archiver.yaml \
--job archive_old_orders \
--log-format json \
--log-level info >> /var/log/goarchive/cron.log 2>&1
Zamanlanmış çalışmaları öngörülebilir kılan birkaç nokta:
- Mutlak yol kullanın — hem binary hem yapılandırma dosyası için.
- Uzun işlere yer bırakın. Bir çalışma, çalışmalar arasındaki aralığı aşabiliyorsa: ikinci bir çalışma, birincisi kilidini tutarken başlayamaz; çakışmayı bildirir ve çıkar, eşzamanlı çalışmaz.
- Bitmeyen çalışma bir sonrakine devretsin. İlerleme kaydedildiği için bir sonraki zamanlanmış çalışma baştan başlamaz, kaldığı yerden sürer. Tek pencereye sığmayan bir iş birkaç pencerede tamamlanabilir.
Belirli bir zaman aralığında çalıştırmak
İşi sakin bir döneme sığdırmak için başlangıcı zamanlayın ve bitirmek için duraklatma anahtarını kullanın:
0 2 * * * /usr/local/bin/goarchive archive -c /etc/goarchive/archiver.yaml --job archive_old_orders
0 6 * * * /usr/bin/touch /var/run/goarchive/pause.flag
5 6 * * * /usr/bin/pkill -TERM goarchive; /bin/rm -f /var/run/goarchive/pause.flag
Duraklatma bir sonraki batch sınırında etkili olur, sonlandırma sinyali de çalışmayı temiz biçimde durdurur. Kalan iş, bir sonraki zamanlanmış çalışmada ele alınır.
Çalışmayı izlemek
GoArchive yapılandırılmış günlük yazar. Zamanlanmış çalışmalarda dosyaya yönlendirin:
logging:
level: info
format: json
output: /var/log/goarchive/archive.log
file_only: true
Her kayıt iş adını taşır; böylece birden çok iş aynı hedefi paylaşsa da birbirinden ayırt edilebilir.
İlerleme, çalışma sürerken izleme tablolarından da görülebilir:
SELECT job_name, job_status, last_processed_root_pk_id, last_heartbeat_at
FROM archiver_job
WHERE job_name = 'archive_old_orders';
Çalışan bir iş, ilerledikçe heartbeat’ini tazeler.
Çalışan bir işi yönetmek
Sentinel dosyasını oluşturarak duraklatın, silerek sürdürün:
touch /var/run/goarchive/pause.flag
rm /var/run/goarchive/pause.flag
Ctrl-C ile ya da bir sonlandırma sinyaliyle durdurun. İçinde bulunulan
batch tamamlanır, ilerlemesi kaydedilir ve süreç sonlanır. Aynı komutu yeniden
çalıştırmak o noktadan devam eder.
Günlük dosyaları
GoArchive günlük dosyalarını ekleme kipinde açar ve döndürmez; döndürmeyi harici bir araç üstlenebilir:
/var/log/goarchive/*.log {
daily
rotate 14
compress
missingok
notifempty
copytruncate
}
Düzenli bakım
- Şema değişikliklerinden sonra
validateçalıştırın. Bir iş, tablolar arasındaki ilişkileri tarif eder; tablolar değiştiyse tarifin hâlâ geçerli olduğunu teyit edin. dry-runçıktısını arada bir gözden geçirin. Veri büyüdükçe satır sayıları değişir; zamanlanmış bir çalışmanın artık ne kadar veri taşıdığını görmenin en hızlı yolu önizlemedir.- İzleme kayıtlarını saklayın. Neyin arşivlendiğinin geçmişi onlardadır ve yarıda kalan bir çalışmayı sürdürülebilir kılan da onlardır.
