۴۸صنعت
+۵۰۰زیرسیستم
+۱۰۰۰پروژه
۱۸سال
شرکتصنایعسامانه‌ها و APIتماسدانلود
درس ۶ از ۸۱۶ دقیقه

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

هدف درس

روال پشتیبان‌گیری کامل را برپا کنید: پشتیبان زمان‌بندی‌شدهٔ پایگاه داده با ابزار استاندارد PostgreSQL به‌همراه پوشهٔ فایل‌های بارگذاری‌شده؛ و از خروجی داشبورد و تنظیمات، به‌روزرسانی و بازگشت نسخه درست استفاده کنید.

کجای نرم‌افزار

بیرون از محصول (ابزار PostgreSQL و زمان‌بند سیستم‌عامل)؛ در برنامه: «طراحی سیستم» ← «طراحی داشبورد» ← «داشبوردهای من»، «تنظیمات» ← «تنظیمات پروژه»؛ کنسول سرور ← «Settings»

همهٔ دادهٔ عملیاتی همزاد دیجیتال (سازه‌ها، تجهیزات، نقاط، داشبوردها، کاربران و تاریخچهٔ مقادیر) در PostgreSQL نگه داشته می‌شود و تصاویر و رسانه‌ها در پوشهٔ فایل‌های بارگذاری‌شده. محصول پشتیبان خودکار زمان‌بندی‌شده از پایگاه داده نمی‌گیرد؛ این روال را مدیر سامانه با ابزار استاندارد PostgreSQL و زمان‌بند سیستم‌عامل برپا می‌کند. قابلیت‌های خروجی داخل محصول مکمل این روال‌اند، نه جایگزین آن.

چه چیزی را پشتیبان بگیریم

موردکجاستروش
پایگاه دادهٔ اصلیPostgreSQLpg_dump زمان‌بندی‌شده
پایگاه‌های تاریخچهٔ هر پروژههمان سرور PostgreSQL (یک پایگاه برای هر پروژه)pg_dump جداگانه یا pg_dumpall برای کل خوشه
فایل‌های بارگذاری‌شده و نقشه‌هاپوشهٔ uploads و mapsکپی فایل‌ها هم‌زمان با پشتیبان پایگاه داده
فایل تنظیمات تولید، پوشهٔ config و فایل لایسنسپوشهٔ نصبکپی پس از هر تغییر

رسانه‌های کوچک ممکن است داخل پایگاه داده و بقیه روی دیسک باشند؛ پس پایگاه داده و پوشهٔ فایل‌ها با هم یک پشتیبان کامل می‌سازند.

گام‌به‌گام: پشتیبان پایگاه داده

  1. یک حساب و مقصد امن آماده کنید. پشتیبان را روی دیسک یا سرور دیگری ذخیره کنید، نه فقط روی همان ماشین. دسترسی به پوشهٔ پشتیبان را محدود کنید؛ پشتیبان پایگاه داده اطلاعات کاربران را در خود دارد.
  2. از پایگاه اصلی خروجی بگیرید. با قالب فشرده و تاریخ در نام فایل، مثلاً pg_dump -Fc -d نام_پایگاه -f twin-main-1405-07-01.dump. رمز را از متغیر محیطی یا فایل رمز PostgreSQL بخوانید، نه از خط فرمان.
  3. پایگاه‌های تاریخچه را فراموش نکنید. برای هر پایگاه تاریخچهٔ پروژه همین کار را تکرار کنید، یا با pg_dumpall از کل خوشه خروجی بگیرید.
  4. پوشهٔ فایل‌ها را کپی کنید. هم‌زمان پوشه‌های فایل‌های بارگذاری‌شده، نقشه‌ها و config را (مثلاً با robocopy یا rsync) به مقصد پشتیبان کپی کنید.
  5. زمان‌بندی کنید. این مراحل را در یک اسکریپت بگذارید و با Task Scheduler (ویندوز) یا cron (لینوکس) دست‌کم روزانه اجرا کنید. تعداد نسخه‌های نگه‌داشته‌شده را تعیین و قدیمی‌ترها را حذف کنید. موفقیت اجرا را پایش کنید.
  6. بازیابی را تمرین کنید. به‌طور دوره‌ای روی یک سرور آزمایشی پایگاه دادهٔ خالی بسازید، با pg_restore بازگردانی کنید، پوشهٔ فایل‌ها را برگردانید و سرور را روشن کنید. پشتیبانی که بازیابی‌اش آزموده نشده، پشتیبان مطمئنی نیست.
نکته: تنظیمات دستهٔ Backup در کنسول سرور پشتیبان پایگاه داده را زمان‌بندی نمی‌کنند. تنها پشتیبان خودکار محصول، نسخه‌برداری از فایل تنظیمات کنسول هنگام هر ذخیره است. پشتیبان پایگاه داده را حتماً خودتان زمان‌بندی کنید.

چند نکتهٔ ظرفیت و نگهداشت

حجم پایگاه داده بیشتر از تاریخچهٔ مقادیر می‌آید. پیش‌فرض نگهداشت تاریخچهٔ مقادیر یک سال و تاریخچهٔ پرس‌وجوی پروتکل‌ها سه ماه است؛ این مقادیر در تنظیمات سرور دیده می‌شوند و در برآورد فضای پشتیبان باید حساب شوند. اندازهٔ پشتیبان را ماهانه اندازه بگیرید و روند رشد آن را ثبت کنید تا دیسک مقصد پشتیبان پیش از موعد پر نشود. زمان اجرای پشتیبان را ساعتی بگذارید که بار سامانه کم است، و پس از هر تغییر بزرگ (افزودن یک ساختمان، ورود انبوه تجهیزات، ارتقای نسخه) یک پشتیبان دستی اضافی بگیرید.

گام‌به‌گام: خروجی‌های داخل محصول

  1. خروجی داشبورد. در «طراحی سیستم» ← «طراحی داشبورد» ← «داشبوردهای من» از منوی کارت داشبورد صدور را بزنید. در فرمت خروجی، ZIP (پیشنهادی) همهٔ تصاویر و رسانه‌ها را دارد و برای انتقال بین سرورهاست؛ JSON فقط تنظیمات است. دانلود را بزنید.
  2. ورود داشبورد. وارد کردن داشبورد را بزنید، فایل JSON یا ZIP را بکشید و پیش‌نمایش را بررسی کنید، سپس تأیید و جایگزینی. از این صفحه داشبورد موجود بازنویسی نمی‌شود؛ یک داشبورد تازه ساخته می‌شود و اگر نام تکراری باشد پسوند «(واردشده ۱)» می‌گیرد.
    صفحهٔ داشبوردهای من
    داشبوردهای من · دکمهٔ «وارد کردن داشبورد» کنار «داشبورد جدید»
  3. خروجی پیکربندی رابط. در «تنظیمات» ← «تنظیمات پروژه» دکمهٔ خروجی کل پیکربندی رابط را به JSON می‌دهد (درس C3).
  4. خروجی تنظیمات سرور. در کنسول سرور، زبانهٔ Settings، دکمهٔ Export همهٔ تنظیمات سرور را به JSON می‌دهد؛ Import مقادیر هم‌نام را بازنویسی می‌کند و پیش از اجرا تأیید می‌گیرد.

به‌روزرسانی و بازگشت (بستهٔ ویندوز)

  1. پیش از هر به‌روزرسانی پشتیبان پایگاه داده بگیرید. بازگشت نسخهٔ برنامه، ساختار پایگاه داده را برنمی‌گرداند.
  2. به‌روزرسانی سرور. همان اسکریپت Install-Backend را بدون پارامترهای تنظیمات اجرا کنید. سرویس متوقف می‌شود، فایل برنامهٔ فعلی در پوشهٔ backup با برچسب زمان نگه داشته می‌شود، نسخهٔ جدید نصب و منتظر سالم شدن می‌ماند؛ اگر بالا نیاید، نسخهٔ قبلی خودکار برمی‌گردد. فایل تنظیمات تولید دست نمی‌خورد. قطعی حدود ۳۰ تا ۶۰ ثانیه است.
  3. به‌روزرسانی رابط وب. Install-Frontend پوشهٔ فعلی سایت را با برچسب زمان پشتیبان می‌گیرد و نسخهٔ تازه را جایگزین می‌کند. کاربرانی که صفحه را باز دارند نوار «نسخهٔ جدیدِ سامانه آماده است» را با دکمه‌های به‌روزرسانی و بعداً می‌بینند.
  4. بازگشت دستی. اسکریپت Rollback-Backend آخرین فایل برنامهٔ پشتیبان را برمی‌گرداند و سرویس را دوباره شروع می‌کند؛ برای رابط وب، پوشهٔ پشتیبان سایت را به‌جای پوشهٔ سایت کپی کنید.
پشت صحنه: فایل خروجی داشبورد هنگام ورود اعتبارسنجی می‌شود و شناسهٔ قدیمی آن کنار گذاشته می‌شود. هر تب باز مرورگر هر ۶۰ ثانیه بررسی می‌کند نسخهٔ مستقرشده عوض شده یا نه. در لینوکس و Docker اسکریپت خودکار به‌روزرسانی و بازگشت وجود ندارد؛ پیش از جایگزینی فایل برنامه یا image، نسخهٔ قبلی را نگه دارید.

نکته‌ها و اشتباه‌های رایج

  • خروجی JSON داشبورد برای انتقال بین سرورها کافی نیست؛ تصاویر را نمی‌برد. ZIP بگیرید.
  • خروجی داشبورد و تنظیمات جای پشتیبان پایگاه داده را نمی‌گیرد؛ تجهیزات، نقاط، کاربران و تاریخچه فقط در پشتیبان پایگاه داده هستند.
  • اسکریپت نصب وب فایل‌هایی را که دستی داخل پوشهٔ سایت گذاشته‌اید پاک می‌کند.
  • اگر نسخهٔ جدید تنظیم تازه‌ای لازم دارد، آن را دستی به فایل تنظیمات تولید اضافه کنید؛ به‌روزرسانی آن را تغییر نمی‌دهد.
  • بعضی تغییرات ساختاری پایگاه داده همراه نسخه به‌صورت اسکریپت SQL دستی می‌آیند؛ آن‌ها را فقط پس از پشتیبان و آزمون روی سرور آزمایشی اجرا کنید.

خلاصه

  • پشتیبان واقعی = pg_dump زمان‌بندی‌شدهٔ پایگاه اصلی و تاریخچه + کپی پوشهٔ فایل‌ها و تنظیمات.
  • زمان‌بندی با Task Scheduler یا cron بر عهدهٔ مدیر است؛ محصول آن را انجام نمی‌دهد.
  • بازیابی را دوره‌ای روی سرور آزمایشی تمرین کنید.
  • ZIP داشبورد برای انتقال؛ بستهٔ ویندوز نسخهٔ قبل را خودکار نگه می‌دارد و در شکست برمی‌گرداند.

تمرین عملی روی دموی زنده

روی دموی عمومی (bms.argsrv.com، پروژهٔ «هولدینگ ارگ») داشبوردهای موجود را ویرایش یا حذف نکنید.

  1. «طراحی سیستم» ← «طراحی داشبورد» ← «داشبوردهای من» را باز کنید.
  2. از منوی یک داشبورد صدور را بزنید؛ یک بار JSON و یک بار ZIP (پیشنهادی) دانلود کنید و حجم دو فایل را مقایسه کنید.
  3. وارد کردن داشبورد را بزنید و فایل JSON را انتخاب کنید؛ پیش‌نمایش (تعداد المان‌ها، نسخه) را بخوانید. اگر حساب دمو اجازهٔ ذخیره نداد، تا مرحلهٔ پیش‌نمایش پیش بروید و انصراف بزنید؛ اگر اجازه داد، داشبورد واردشده را به «تمرین — نام شما» تغییر نام دهید و پس از بررسی حذف کنید.
  4. روی کاغذ یک اسکریپت پشتیبان روزانه طراحی کنید: کدام پایگاه‌ها، کدام پوشه‌ها، ساعت اجرا، مقصد، تعداد نسخه‌های نگه‌داشته‌شده و دورهٔ تمرین بازیابی.
باز کردن دموی زنده

آزمون درس

برای گذراندن درس دست‌کم به ۳ پرسش از ۴ پرسش پاسخ درست بدهید.

  1. ۱. پشتیبان خودکار پایگاه دادهٔ PostgreSQL را چه کسی زمان‌بندی می‌کند؟
  2. ۲. برای انتقال داشبورد با همهٔ تصاویرش به سرور دیگر کدام خروجی مناسب است؟
  3. ۳. اگر پس از به‌روزرسانی ویندوزی سرویس سرور بالا نیاید چه می‌شود؟
  4. ۴. کنار پشتیبان پایگاه داده، کدام پوشه حتماً باید پشتیبان گرفته شود؟