بکاپ گرفتن اونقدرها هم ساده نیست
خلاصهٔ کاملتر
آلکساندر فیلیپوفسکی تو این پست از یه خاطرهی بچگی شروع میکنه. خانوادهش همهی عکسها رو ریخته بودن روی یه هارد اکسترنال، بعد پدرش اون هارد رو به یه ستتاپباکس وصل کرده و بدون هیچ هشدار درستی فرمتش کرده. عکسها آخرش برگشتن، ولی نویسنده میگه درس اصلی این بود که هیچوقت چیز مهم رو فقط یه جا نگه ندارید. هارد میتونه خراب بشه، دزدیده بشه، یا دیتاش به مرور زمان خودبهخود خراب بشه (bit rot).
قدم اول داشتن یه backup هست، یعنی یه کپی جای دیگه. ولی ransomware یا یه اسکریپت اشتباه میتونه کپی رو هم خراب کنه، پس یه mirror مثل RAID 1 به درد نمیخوره. باید snapshot گرفت تا بشه به عقب برگشت. هر چند وقت یه بار؟ این همون RPO (یعنی حداکثر دیتایی که حاضرید از دست بدید) هست که از کمتر از ۳۰ ثانیه برای بانکها تا ۲۴ ساعت یا بیشتر برای شرکتهای کوچیک فرق میکنه.
snapshot روزانه یعنی ۳۶۵ نسخه در سال، پس باید rotate کرد. نویسنده روش GFS رو توضیح میده: بکاپهای روزانه برای ۱۴ روز، هفتگی برای ۷ هفته و ماهانه برای ۱۲ ماه. یعنی هرچی به امروز نزدیکتر، snapshotها فشردهتر. بعد سراغ deduplication میره: چون بیشتر فایلها عوض نمیشن، با hard link فقط یه نسخه از هر فایل نگه میدارید. ابزار rsnapshot دقیقاً همین کارو میکنه و اینجوری هم فضا صرفهجویی میشه هم پهنای باند.
بعد مشکلهای واقعی پیدا میشن. کانتینرهای Docker فایلهایی میسازن که مال root هستن و cronjob کاربر عادی بهشون دسترسی نداره. دیتابیسها هم خیلی وقتها دیتا رو تو حافظه نگه میدارن و دستهای روی دیسک مینویسن، پس کپی مستقیم فایلهاشون ممکنه موقع ریستور خراب باشه و باید جدا dump گرفت. بعد قانون 3-2-1 میاد وسط: ۳ نسخه، روی ۲ نوع رسانهی مختلف، ۱ نسخه بیرون از محل.
برای نسخهی offsite روی Amazon S3 هم دو تا مشکل هست: metadata فایلها از بین میره و آپلود کلی فایل کوچیک گرون درمیاد. پس باید فایلها رو تو tarballهای مثلاً ۵۰ مگابایتی بستهبندی کرد، که درست انجام دادنش سخته. نویسنده میگه همینجا بود که بیخیال شد و پیشنهاد میکنه از Borg یا Restic استفاده کنید که رمزنگاری، deduplication در سطح chunk و checksum رو خودشون دارن. در کنارش هر ۶ ماه یه بار ریستور رو تست کنید.
تو بخش آخر هم چند نکته از بحثها اضافه شده: cronjob رو بین ساعت ۲ تا ۳ صبح نذارید چون موقع تغییر ساعت تابستونی ممکنه اجرا نشه یا دو بار اجرا بشه. ZFS هم یه فایلسیستم کامل هست که snapshot و سلامت دیتا رو خودش مدیریت میکنه. یه کاربر Hacker News هم یادآوری کرده که اگه دیتابیس و اپلیکیشن همزمان روی دیسک مینویسن، snapshot ممکنه ناهماهنگ باشه، یعنی به consistency group نیاز دارید. ACLها و sparse fileها (مثل image ماشین مجازی) هم باید پشتیبانی بشن.
نکات کلیدی:
- RAID 1 بکاپ نیست چون اشتباه یا ransomware رو هم کپی میکنه؛ به snapshot نیاز دارید.
- چرخش GFS: روزانه برای ۱۴ روز، هفتگی برای ۷ هفته، ماهانه برای ۱۲ ماه.
- rsnapshot با hard link فایلهای تکراری رو فقط یه بار ذخیره میکنه.
- دیتابیسها رو جدا dump بگیرید؛ کپی خام فایلهاشون ممکنه موقع ریستور خراب باشه.
- قانون 3-2-1: سه نسخه، دو نوع رسانه، یکی بیرون از محل.
- Borg و Restic رمزنگاری، dedup در سطح chunk و checksum رو آماده دارن.
- cronjob بین ساعت ۲ تا ۳ صبح به خاطر تغییر ساعت تابستونی خطرناکه.




