پرش به مطلب اصلی

اسنپ‌شات، پشتیبان‌گیری و بازگردانی

یک دستور اشتباه، یک به‌روزرسانی ناموفق یا یک حمله می‌تواند سرور را از کار بیندازد. ابر آریانت دو ابزار برای برگرداندن سرور دارد:

اسنپ‌شاتپشتیبان‌گیری خودکار
چه وقت گرفته می‌شودهر وقت خودتان بخواهیدهر روز خودکار (و دستی هر وقت بخواهید)
چه مدت می‌ماندتا وقتی خودتان حذفش کنید، حتی پس از حذف سرورچند نسخه‌ی آخر نگه داشته می‌شود و نسخه‌های قدیمی خودکار کنار می‌روند
هزینهبر اساس حجم واقعی هر اسنپ‌شات (هر گیگابایت در ماه)۲۰٪ هزینه‌ی پلن سرور
کاربردپیش از تغییرات مهم؛ ساخت سرورهای مشابهمحافظت روزمره در برابر خطا و از دست رفتن داده

هر دو، کپی دیسک اصلی سرور هستند و از آن‌ها می‌توانید همان سرور را برگردانید یا سرور جدید بسازید.

پیش‌نیازها​

  • یک سرور ابری آریانت
  • برای بخش 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 اسنپ‌شات‌های محافظت‌نشده‌ی آن را هم پاک می‌کند.

بررسی​

یک نسخه‌ی پشتیبان تا وقتی بازگردانی‌اش را آزمایش نکرده‌اید قابل اعتماد نیست. هر چند وقت یک بار:

  1. از آخرین اسنپ‌شات یا پشتیبان یک سرور موقت بسازید (مرحله‌ی ۵).
  2. وارد شوید و بررسی کنید برنامه بالا می‌آید و داده‌ها (مثلاً dump پایگاه داده در /var/backups/db) سالم‌اند.
  3. سرور موقت را حذف کنید: 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)​

در سرور مجازی آریانت پشتیبان‌گیری خودکار هر شب ساعت ۲ بامداد گرفته و ۷ روز نگه داشته می‌شود و از زبانه‌ی «پشتیبان‌گیری» صفحه‌ی سرور فعال و بازگردانی می‌شود.

قدم بعدی​

از سرور خود محافظت کنید​

در پنل آریانت، در صفحه‌ی هر سرور ابری زبانه‌ی «پشتیبان‌گیری» را باز کنید و پشتیبان‌گیری خودکار روزانه را روشن کنید، یا پیش از هر تغییر مهم یک اسنپ‌شات بگیرید. سرور ابری ندارید؟ از «سرور ابری / Cloud Computing ← سرور جدید» بسازید و پشتیبان‌گیری را همان‌جا فعال کنید.