اسنپشات، پشتیبانگیری و بازگردانی
یک دستور اشتباه، یک بهروزرسانی ناموفق یا یک حمله میتواند سرور را از کار بیندازد. ابر آریانت دو ابزار برای برگرداندن سرور دارد:
| اسنپشات | پشتیبانگیری خودکار | |
|---|---|---|
| چه وقت گرفته میشود | هر وقت خودتان بخواهید | هر روز خودکار (و دستی هر وقت بخواهید) |
| چه مدت میماند | تا وقتی خودتان حذفش کنید، حتی پس از حذف سرور | چند نسخهی آخر نگه داشته میشود و نسخههای قدیمی خودکار کنار میروند |
| هزینه | بر اساس حجم واقعی هر اسنپشات (هر گیگابایت در ماه) | ۲۰٪ هزینهی پلن سرور |
| کاربرد | پیش از تغییرات مهم؛ ساخت سرورهای مشابه | محافظت روزمره در برابر خطا و از دست رفتن داده |
هر دو، کپی دیسک اصلی سرور هستند و از آنها میتوانید همان سرور را برگردانید یا سرور جدید بسازید.
پیشنیازها
- یک سرور ابری آریانت
- برای بخش CLI: CLI آریانت با توکن دارای
cloud:servers:readوcloud:servers:write
۱. نسخهی سازگار از برنامهها
اسنپشات و پشتیبان از دیسک سرور در حال کار گرفته میشوند. فایلهایی که در همان لحظه در حال نوشتن هستند (بهخصوص فایلهای پایگاه داده) ممکن است در نسخه نیمهکاره باشند. برای اطمینان، پیش از اسنپشات یک dump از پایگاه داده بگیرید تا یک نسخهی سالم و قابل بازگردانی کنار بقیهی فایلها باشد:
sudo mkdir -p /var/backups/db
sudo mariadb-dump --all-databases --single-transaction | gzip | sudo tee /var/backups/db/all-$(date +%F).sql.gz > /dev/null
sync
برای PostgreSQL: sudo -u postgres pg_dumpall | gzip | sudo tee /var/backups/db/all-$(date +%F).sql.gz > /dev/null.
اگر سرور مهم است و چند دقیقه توقف مشکلی ندارد، میتوانید پیش از اسنپشات سرویس پایگاه داده را متوقف یا سرور را خاموش کنید (sudo shutdown -h now).
۲. گرفتن اسنپشات
در پنل: در صفحهی سرور، زبانهی «اسنپشات» را باز کنید و «گرفتن اسنپشات» را بزنید (راهنمای پنل ابر).
با CLI:
arianet cloud servers create-image <server-id> --name before-upgrade \
--description "before apt full-upgrade" --wait
فهرست اسنپشاتها:
arianet cloud images list --type snapshot
هر اسنپشات یک مقدار image به شکل snapshot:<id> دارد که در ساخت یا بازسازی سرور استفاده میشود، و disk_gb حداقل حجم دیسک سروری است که از آن ساخته میشود.
۳. فعال کردن پشتیبانگیری خودکار
در پنل: هنگام ساخت سرور گزینهی «پشتیبانگیری خودکار» را روشن کنید، یا بعداً در زبانهی «پشتیبانگیری» صفحهی سرور.
با CLI:
# window hour is in UTC (0-23); 22 UTC is 01:30 Tehran time
arianet cloud servers enable-backup <server-id> --window-hour 22
arianet cloud servers change-backup-window <server-id> --window-hour 23
بدون --window-hour ساعت پشتیبانگیری خودکار انتخاب میشود. یک پشتیبان دستی همین حالا:
arianet cloud servers create-backup <server-id> --wait
فهرست پشتیبانها:
arianet cloud images list --type backup
۴. بازگرداندن همان سرور
بازگرداندن، دیسک فعلی سرور را کاملاً بازنویسی میکند و هر تغییری که پس از آن نسخه انجام شده از بین میرود. اگر مطمئن نیستید، اول از وضعیت فعلی یک اسنپشات بگیرید، یا به جای بازگرداندن، سرور جدیدی از نسخه بسازید (مرحلهی ۵).
از اسنپشات: در پنل، زبانهی «اسنپشات» صفحهی سرور، یا با CLI سرور را با ایمیج اسنپشات بازسازی کنید:
arianet cloud servers rebuild <server-id> --image snapshot:<snapshot-id> --wait
از پشتیبان:
arianet cloud servers restore-backup <server-id> --backup <backup-id> --wait
هر دو دستور یک رمز root جدید برمیگردانند که فقط یک بار چاپ میشود؛ آن را ذخیره کنید. کلیدهای SSH که در خود نسخه بودهاند (مثلاً ~/.ssh/authorized_keys) با دیسک برمیگردند.
۵. ساخت سرور جدید از اسنپشات یا پشتیبان
این روش برای کپی گرفتن از یک سرور، آزمایش بهروزرسانی روی نسخهی کپی، یا بازیابی فایلهایی خاص بدون دست زدن به سرور اصلی مناسب است.
در پنل: در ساخت سرور جدید، در مرحلهی سیستمعامل زبانهی «اسنپشاتهای من» یا «پشتیبانها» را انتخاب کنید.
با CLI:
arianet cloud servers create --name web-copy --datacenter ovh --plan 3 \
--image snapshot:<snapshot-id> --wait
arianet cloud servers create --name web-restore --datacenter ovh --plan 3 \
--image backup:<backup-id> --wait
سرور را در همان دیتاسنتر اسنپشات و با پلنی بسازید که دیسکش دستکم disk_gb اسنپشات باشد. سرور کپی، IP جدیدی میگیرد؛ اگر برنامهها IP یا نام میزبان را جایی ذخیره کردهاند، آنها را بررسی کنید.
۶. نگه داشتن یک پشتیبان برای همیشه
پشتیبانهای خودکار پس از مدتی کنار میروند. برای نگه داشتن یک پشتیبان مشخص (مثلاً نسخهی پایان ماه)، آن را به اسنپشات تبدیل کنید:
curl -s -X POST https://api.ariaservice.net/cloud/v1/backups/<backup-id>/actions/convert \
-H "Authorization: Bearer $ARIANET_TOKEN" -H "Content-Type: application/json" \
-d '{"name": "month-end"}'
هنگام حذف سرور هم میتوانید با --keep-backups (CLI) یا keep_backups=true (API) پشتیبانهای کاملشده را به صورت اسنپشات نگه دارید.
۷. مدیریت هزینهی اسنپشاتها
اسنپشاتها پس از حذف سرور هم میمانند و هزینه دارند. اسنپشاتهای قدیمی را در پنل از صفحهی اسنپشاتها، یا با API حذف کنید:
curl -s -X DELETE https://api.ariaservice.net/cloud/v1/snapshots/<snapshot-id> \
-H "Authorization: Bearer $ARIANET_TOKEN"
هزینهی اسنپشاتها و پشتیبانهای نگهداشتهشدهی هر سرور را arianet cloud servers costs <server-id> نشان میدهد. هنگام حذف سرور، --delete-snapshots اسنپشاتهای محافظتنشدهی آن را هم پاک میکند.
بررسی
یک نسخهی پشتیبان تا وقتی بازگردانیاش را آزمایش نکردهاید قابل اعتماد نیست. هر چند وقت یک بار:
- از آخرین اسنپشات یا پشتیبان یک سرور موقت بسازید (مرحلهی ۵).
- وارد شوید و بررسی کنید برنامه بالا میآید و دادهها (مثلاً dump پایگاه داده در
/var/backups/db) سالماند. - سرور موقت را حذف کنید:
arianet cloud servers delete <id>.
خطاهای رایج
| مشکل | راهحل |
|---|---|
| پلن در ساخت از اسنپشات غیرفعال است | دیسک پلن از disk_gb اسنپشات کوچکتر است؛ پلن بزرگتری انتخاب کنید. |
پس از بازگردانی SSH با پیام REMOTE HOST IDENTIFICATION HAS CHANGED رد میشود | کلید میزبان عوض شده است: ssh-keygen -R SERVER_IP. |
| حذف سرور ممکن نیست | محافظت در برابر حذف فعال است؛ ابتدا آن را خاموش کنید: arianet cloud servers update <id> --protection-delete=false. |
| دادهی دیسک جدا در اسنپشات نیست | اسنپشات فقط دیسک اصلی را دارد. از دیسک جدا جداگانه نسخهی پشتیبان بگیرید. |
| هزینه پس از حذف سرور ادامه دارد | اسنپشاتها، دیسکهای جدا و IPهای شناور پس از حذف سرور میمانند؛ از منوی ابر حذفشان کنید. |
سرور مجازی (VPS)
در سرور مجازی آریانت پشتیبانگیری خودکار هر شب ساعت ۲ بامداد گرفته و ۷ روز نگه داشته میشود و از زبانهی «پشتیبانگیری» صفحهی سرور فعال و بازگردانی میشود.
قدم بعدی
- اتصال و mount دیسک ابر آریانت
- ساخت سرور با Terraform و CLI آریانت
- اسنپشات و پشتیبان در وب سرویس ابر
از سرور خود محافظت کنید
در پنل آریانت، در صفحهی هر سرور ابری زبانهی «پشتیبانگیری» را باز کنید و پشتیبانگیری خودکار روزانه را روشن کنید، یا پیش از هر تغییر مهم یک اسنپشات بگیرید. سرور ابری ندارید؟ از «سرور ابری / Cloud Computing ← سرور جدید» بسازید و پشتیبانگیری را همانجا فعال کنید.