Bilgi tabanı

Bir anlık görüntü alın ve geri koyun

Anlık görüntülerin nasıl alındığı, çökme tutarlılığının neden genellikle yeterli olduğu, gerekmediğinde nasıl sessize alınacağı ve geri yüklemenin çalışan bir örneğe ne yaptığı.

Burada anlık görüntü (snapshot) nedir

Örnek diskin belirli bir zaman noktasındaki kopyasıdır; depolama katmanında alınır ve örneğin çalıştığı depolamadan farklı bir depolamaya yazılır. Slotlar paketler halinde satılır; bir slot bir anlık görüntü tutar ve üzerine yazdığınızda yeniden kullanılır. Anlık görüntü almak örneği duraklatmaz ve sonraki dakikalarda copy-on-write maliyeti, gecikme grafiğinde nadiren görünecek kadar küçüktür.

Bu bir yedek değildir. Bir anlık görüntü, örnekle aynı sitede yaşar; bu sizi kendi rm'inize karşı korur, siteye karşı değil. Düğüm dışı yedek, ayrı bir eklentidir; sizin tarafınızda şifrelenir ve farklı bir şehre yazılır.

Anlık görüntü alma

curl -s -X POST https://paragonvps.com/api/v1/instances/<instance-id>/snapshots -H "Authorization: Bearer $Paragon_TOKEN" -H "Content-Type: application/json" -d '{"label":"pre-upgrade"}'
curl -s https://paragonvps.com/api/v1/instances/<instance-id>/snapshots -H "Authorization: Bearer $Paragon_TOKEN" | jq -r '.[] | .id + " " + .label + " " + .created'

Çökme tutarlılığı ve bunun yeterli olmadığı durumlar

Çalışan bir örneğin anlık görüntüsü, elektrik kesintisinden sonra diskin tam olarak nasıl görüneceğidir. PostgreSQL, MariaDB ve görüntülerimizdeki tüm günlük dosya sistemleri (journalling filesystem) başlangıçta bu durumdan kurtarılır, çünkü kurtarma onların işidir. Risk aslında veritabanı değildir. Risk, birbiriyle uyumlu olması gereken iki dosyayı yazmanın yarısında olan kendi uygulamanızdır.

Temiz bir çizgiye ihtiyaç duyduğunuz yerde, veri birimini saniyeliğine boşaltın (flush) ve dondurun (freeze):

sync
fsfreeze -f /srv/data
# take the snapshot here
fsfreeze -u /srv/data

Veri birimini dondurun. Asla /'i dondurmayın. Donmuş bir kök dosya sistemi, onu çözmeye çalışan sürecin hiçbir şey yapmasını engeller ve çıkış yolu zorlu sıfırlamadır (hard reset).

Veritabanı için daha düzenli seçenek, anlık görüntü alıp motorun kurtarmasına izin vermek ve ardından kurtardığını kontrol etmektir:

sudo -u postgres pg_isready
journalctl -u postgresql -n 50

Geri yükleme

Geri yükleme, örneği durdurur, diski anlık görüntüyle değiştirir ve örneği yeniden başlatır. Saniyeler sürer, dakikalar değil. Adresler değişmez, ayarladığınız ters DNS (reverse DNS) ayarlı kalır ve anlık görüntüden sonra yazılan her şey kaybolur.

Buna geri yükleme kararını verdiren şey de dahildir. Bozuk durumdan günlükleri okumak isteyebileceğiniz ihtimali varsa, önce bozuk durumun anlık görüntüsünü alın ve ardından üzerine geri yükleyin.

curl -s -X POST https://paragonvps.com/api/v1/snapshots/<snapshot-id>/restore -H "Authorization: Bearer $Paragon_TOKEN"

Zamanlama

Örnek başına zamanlama, platform revizyonu 5.4 ile geldi. Sabit bir saatte günlük ve kayan pencere (rolling window) yaygın seçimdir: slotlar dolduğunda en eski düşer.

curl -s -X PUT https://paragonvps.com/api/v1/instances/<instance-id>/snapshot-schedule -H "Authorization: Bearer $Paragon_TOKEN" -H "Content-Type: application/json" -d '{"cron":"20 3 * * *","keep":7}'

İş yükünüz için sakin olan bir saat seçin, bizim için sakin olanı değil. Bir anlık görüntünün depolama maliyeti, sonrasında değişen miktarla orantılıdır; bu nedenle gece toplu işiniz sırasında tetiklenen bir zamanlama, bir saat sonra tetiklenenden çok daha fazla veri tutar.

Bir örneği iptal etmek, anlık görüntülerini siler

Hemen, ödemesiz dönem olmadan, çünkü bunlar örneğe karşı saklanır. İptalden sonra saklamak istediğiniz her şey düğüm dışı yedekte veya hiç bize ait olmayan bir yerde olmalıdır.

Hazır olduğunda

Bir şehir seç. Bir boyut seç. Kripto ile öde.

Kim olduğunuzla ilgili formlar yok, onay için insan bekleme yok, doğrulama için telefon görüşmesi yok. Ödeme onaylanır ve kimlik bilgileri gelen kutunuza düşer.