Hubungi dukungan

Kami membalas melalui e-mail, biasanya dalam dua hari.

Google reCAPTCHA memeriksa kiriman ini untuk mencegah penyalahgunaan; data dikirim ke Google. Skrip hanya dimuat saat formulir ini dibuka.

← Semua artikel

Cadangan dipulihkan dari awal sampai akhir

Server ini mencadangkan dirinya setiap malam sejak 11 Agustus. Lognya berisi 163 baris. Kata “restore” tidak muncul di satu pun baris itu, karena setiap baris berkaitan dengan penulisan.

Hari ini sisi pembacaannya juga ikut ditempuh.

yang diperiksa oleh pencadangan malam kode keluar · minimal 1 MB · byte di ujung seberang · satu baris di log bisakah dibaca kembali? — 163 baris log, tidak sekali pun dipulihkan hari ini: 104 MB data penghitung dari dump 437 MB 38 dari 38 tabel, jumlah baris sesuai dengan dump yang diambil pukul 03:00 satu menit empat puluh empat detik, ke basis data sementara, lalu dihapus

Cadangan ini lebih baik daripada kebanyakan

Pencadangan ini berjalan pukul tiga pagi, membuat dump dari setiap basis data, mengemas web root, mengenkripsi keduanya dengan frasa sandi yang tidak dimiliki penyedia penyimpanan, lalu mengunggahnya. Kemudian ia melakukan tiga hal yang dilewatkan banyak skrip pencadangan.

Ia berhenti saat gagal alih-alih terus berjalan. Ia menolak dump di bawah satu megabyte, dengan alasan — yang tertulis di berkasnya — bahwa cadangan 885 byte tampak seperti cadangan padahal bukan. Dan setelah mengunggah, ia menanyakan kepada ujung seberang berapa byte yang tiba lalu membandingkannya.

Dan itu juga berfungsi. Pada 26 Agustus pukul 03:05, langkah pengarsipan gagal, skrip berhenti dan mencatatnya di log, lalu prosesnya diulang secara manual pada pagi yang sama. Dua puluh dua kali dimulai, sembilan belas kali selesai, dan selisihnya terlihat, bukan tersembunyi. Itulah inti dari berhenti dengan lantang.

Semua itu bukan pemulihan

Setiap pemeriksaan itu menyangkut jalur penulisan: apakah dump dibuat, apakah ukurannya masuk akal, apakah byte-nya tiba. Cadangan yang tidak dapat dibaca kembali lolos dari semuanya.

Jadi hari ini, bagian penghitung dari dump semalam diambil dari penyimpanan jarak jauh yang terenkripsi, didekripsi, dipotong dari keseluruhan 437 megabyte, lalu dimuat ke basis data di samping basis data yang aktif. Sebesar 104 megabyte. Satu menit empat puluh empat detik dari awal sampai akhir.

Tiga puluh delapan tabel di cadangan. Tiga puluh delapan di basis data aktif. Jumlah baris di semua tabel kurang beberapa ratus dari yang aktif, dan itu tepat sekali untuk dump yang diambil pukul tiga pagi pada layanan yang terus menghitung sepanjang hari.

Dua hal yang hanya bisa ditemukan lewat latihan ini

Cadangan tidak dapat dibaca oleh pengguna yang akan mencarinya. Tugas malam berjalan sebagai root. Saat diminta berkas yang sama sebagai akun login biasa, alat penyimpanan melaporkan bahwa token aksesnya sudah tidak valid. Pesan itu menyangkut autentikasi, tetapi dalam keadaan terburu-buru, pada jam yang salah, wujudnya tidak bisa dibedakan dari “tidak ada apa-apa di sini.”

Tidak ada yang salah dengan cadangannya. Akun yang menjalankannya baik-baik saja. Tetapi hal pertama yang dilakukan siapa pun dalam keadaan darurat adalah melihat, dan melihat sebagai pengguna yang salah menghasilkan jawaban yang bisa menggiring seseorang ke jalan yang sangat buruk. Hal itu kini sudah dicatat di samping petunjuk pemulihan.

Temuan kedua adalah kesalahan saya, bukan kesalahan cadangan. Memuat potongan itu menghasilkan satu galat, tentang variabel zona waktu yang bernilai null. Galat itu muncul karena satu basis data dipotong dari dump semua basis data: baris yang memulihkan pengaturan itu di bagian akhir merujuk ke variabel yang disetel di bagian kepala, dan bagian kepala tidak termasuk dalam potongan. Cadangannya baik-baik saja. Pisaunya milik saya. Hal ini dicantumkan di sini karena pesan galat saat latihan pemulihan justru hal yang akan dilaporkan sebagai cacat cadangan oleh orang yang tidak memotong berkas itu sendiri.

Apa yang masih belum terverifikasi

Skrip itu menyatakan, di bagian kepalanya sendiri, bahwa tanpa dua berkas frasa sandi, cadangan tidak dapat dipulihkan, dan bahwa keduanya harus disimpan di tempat yang tetap utuh jika mesin ini hancur. Kedua berkas itu ada di mesin ini. Apakah ada salinannya di tempat lain bukanlah hal yang dapat dijawab oleh latihan yang dijalankan di mesin ini, dan tulisan ini tidak akan mengklaim sebaliknya.

Jadi keadaan yang jujur setelah hari ini: rantai dari penyimpanan terenkripsi sampai basis data yang berfungsi sudah ditempuh sekali, dari awal sampai akhir, dan memakan waktu kurang dari dua menit. Rantai dari rumah yang terbakar habis sampai basis data yang berfungsi belum.

Versi umumnya

Tugas pencadangan memverifikasi bahwa penulisan berhasil. Pemulihan memverifikasi bahwa pembacaan berfungsi. Keduanya jalur berbeda melalui kode yang berbeda, dan rasa yakin orang terhadap cadangan mereka hampir seluruhnya berasal dari yang pertama.

Latihan itu butuh sekitar sepuluh menit untuk ditulis dan kurang dari dua menit untuk dijalankan, dan menghasilkan fakta yang tidak bisa dihasilkan oleh sebanyak apa pun baris log hijau: bahwa jalur pemulihan memiliki langkah autentikasi yang belum pernah ditempuh siapa pun. Latihan kedua akan butuh dua menit, karena skripnya kini sudah ada. Itulah alasan untuk melakukannya — bukan karena cadangannya meragukan, melainkan karena “kami punya cadangan” dan “kami sudah memulihkan” adalah dua kalimat yang berbeda, dan hanya satu di antaranya yang merupakan pengukuran.

Iklan