همه مقالات

بکاپ خودکار SQL Server؛ راهنمای عملی پشتیبان‌گیری امن برای شرکت‌ها

۶ دقیقه مطالعهپشتیبان‌گیری

انواع بکاپ SQL Server، قانون ۳-۲-۱، زمان‌بندی خودکار حتی در نسخه Express، تست بازیابی و رمزنگاری؛ هر آنچه برای پشتیبان‌گیری مطمئن از دیتابیس نرم‌افزار حسابداری و فروش لازم است.

بکاپ خودکار SQL Server؛ راهنمای عملی پشتیبان‌گیری امن برای شرکت‌ها

دیتابیس SQL Server در بیشتر شرکت‌ها قلب نرم‌افزار حسابداری، فروش و انبار است. خرابی یک هارد، حمله باج‌افزار یا حذف اشتباه چند جدول می‌تواند سال‌ها اطلاعات را از بین ببرد. تنها چیزی که در آن لحظه نجات‌تان می‌دهد، یک فایل بکاپ سالم و تازه است که بشود آن را بازیابی کرد.

چرا بکاپ دستی کافی نیست؟

در بسیاری از شرکت‌ها بکاپ را یک نفر هر چند روز یک بار با دست می‌گیرد. مشکل اینجاست که روزی که آن فرد مرخصی است یا فراموش می‌کند، همان روزی است که سرور از کار می‌افتد. بکاپ دستی معمولاً روی همان سرور یا یک هارد همیشه وصل ذخیره می‌شود و باج‌افزار آن را هم رمز می‌کند. بکاپ باید خودکار، زمان‌بندی‌شده و قابل گزارش باشد.

انواع بکاپ در SQL Server

  • Full Backup: نسخه کامل دیتابیس؛ پایه همه بازیابی‌ها.
  • Differential Backup: فقط تغییرات بعد از آخرین بکاپ کامل؛ سریع‌تر و کم‌حجم‌تر.
  • Transaction Log Backup: ثبت تراکنش‌ها برای بازیابی تا یک لحظه مشخص؛ فقط وقتی Recovery Model دیتابیس روی Full باشد.

برای بیشتر شرکت‌های کوچک و متوسط، یک بکاپ کامل شبانه به‌اضافه یک یا چند بکاپ Differential در طول روز تعادل خوبی بین امنیت و حجم است. اگر از دست دادن حتی یک ساعت ثبت سند قابل قبول نیست، بکاپ Log هر ۱۵ تا ۳۰ دقیقه را هم اضافه کنید.

یک دستور بکاپ ساده و درست

BACKUP DATABASE [Sales]
TO DISK = N'D:\Backup\Sales_full.bak'
WITH CHECKSUM, INIT, STATS = 10;

RESTORE VERIFYONLY
FROM DISK = N'D:\Backup\Sales_full.bak'
WITH CHECKSUM;

گزینه CHECKSUM باعث می‌شود SQL Server هنگام بکاپ صفحه‌های خراب را تشخیص دهد و RESTORE VERIFYONLY سالم بودن فایل را بررسی می‌کند. در نسخه‌های Standard و Enterprise می‌توانید COMPRESSION را هم اضافه کنید تا حجم فایل چند برابر کمتر شود.

زمان‌بندی خودکار؛ حتی در SQL Server Express

در نسخه‌های Standard و Enterprise، SQL Server Agent و Maintenance Plan کار زمان‌بندی را انجام می‌دهند. اما نسخه Express که در بسیاری از نرم‌افزارهای حسابداری نصب می‌شود SQL Agent ندارد. در این حالت باید دستور بکاپ را با sqlcmd در Task Scheduler ویندوز اجرا کنید یا از یک سرویس پشتیبان‌گیری مستقل استفاده کنید که زمان‌بندی، نگهداری نسخه‌ها و گزارش را خودش انجام دهد.

قانون ۳-۲-۱ را جدی بگیرید

  1. سه نسخه از اطلاعات داشته باشید: نسخه اصلی و دو بکاپ.
  2. بکاپ‌ها را روی دو نوع رسانه متفاوت نگه دارید؛ مثلاً هارد شبکه (NAS) و فضای ابری.
  3. دست‌کم یک نسخه خارج از محل شرکت و جدا از شبکه داخلی باشد تا باج‌افزار به آن نرسد.

رمزنگاری بکاپ قبل از خروج از شرکت

فایل بکاپ دیتابیس شامل همه اطلاعات مالی و مشتریان است. اگر نسخه‌ای به فضای ابری، FTP یا پیام‌رسان فرستاده می‌شود، باید قبل از ارسال با الگوریتمی مثل AES-256 رمزنگاری شود تا اگر به دست دیگری افتاد قابل استفاده نباشد. کلید رمز را جدا از بکاپ و در جای امن نگه دارید.

بکاپی که تست نشده، بکاپ نیست

هر ماه دست‌کم یک بار آخرین بکاپ را روی یک سرور یا دیتابیس آزمایشی بازیابی کنید و چند گزارش نرم‌افزار را با آن بگیرید. فقط در این صورت مطمئن می‌شوید که روز بحران، بکاپ واقعاً کار می‌کند و می‌دانید بازیابی چقدر زمان می‌برد.

هر چند وقت یک بار بکاپ بگیریم؟

جواب این سؤال به دو عدد بستگی دارد که مدیر شرکت باید تعیین کند. اول RPO یعنی حداکثر چند ساعت اطلاعات را می‌توانید از دست بدهید؛ اگر بکاپ فقط شب‌ها گرفته شود و سرور ساعت ۵ عصر خراب شود، کار کل روز از دست رفته است. دوم RTO یعنی سیستم حداکثر چقدر می‌تواند از کار بیفتد؛ بازیابی یک دیتابیس چند ده گیگابایتی از فضای ابری ممکن است چند ساعت طول بکشد، پس یک نسخه محلی سریع هم لازم است.

  • شرکت کوچک با ثبت سند محدود: بکاپ کامل شبانه و یک بکاپ Differential ظهر
  • شرکت پخش یا فروشگاه با ثبت فاکتور مداوم: بکاپ کامل شبانه، Differential هر چند ساعت و Log هر ۱۵ تا ۳۰ دقیقه
  • نگهداری: دست‌کم ۷ نسخه روزانه، ۴ نسخه هفتگی و ۶ تا ۱۲ نسخه ماهانه

اشتباهات رایجی که روز بحران معلوم می‌شوند

  1. بکاپ روی همان دیسکی ذخیره می‌شود که دیتابیس روی آن است؛ با خرابی دیسک هر دو از بین می‌روند.
  2. یک فایل بکاپ هر شب روی فایل دیشب بازنویسی می‌شود؛ اگر اطلاعات چند روز پیش خراب شده باشد، نسخه سالمی باقی نمانده است.
  3. فقط از دیتابیس بکاپ گرفته می‌شود و فایل‌های پیوست، اسکن اسناد و تنظیمات نرم‌افزار فراموش می‌شوند.
  4. کسی از شکست بکاپ خبردار نمی‌شود؛ پر شدن دیسک یا تغییر رمز کاربر می‌تواند هفته‌ها بکاپ را بی‌صدا متوقف کند.
  5. رمز رمزنگاری بکاپ فقط در ذهن یک نفر است و با رفتن او بکاپ‌ها غیرقابل استفاده می‌شوند.
تنظیم مقصدهای بکاپ در برنامه Backup AI
نمونه تنظیم چند مقصد هم‌زمان برای یک بکاپ: پوشه شبکه، فضای ابری S3 و تلگرام (برنامه Backup AI)

چک‌لیست پشتیبان‌گیری مطمئن

  • بکاپ کامل خودکار شبانه و بکاپ Differential یا Log در طول روز
  • نگهداری چند نسخه روزانه، هفتگی و ماهانه به‌جای بازنویسی یک فایل
  • دست‌کم یک مقصد بیرون از شبکه شرکت، مثل فضای ابری S3
  • رمزنگاری بکاپ پیش از ارسال به بیرون
  • گزارش خودکار موفقیت یا خطای هر اجرا به مدیر
  • تست بازیابی ماهانه

نرم‌افزار Backup AI ساینانت همین چک‌لیست را به‌صورت یک سرویس ویندوزی اجرا می‌کند: بکاپ زمان‌بندی‌شده از چند دیتابیس SQL Server و فایل‌ها، رمزنگاری AES-256-GCM، ذخیره هم‌زمان در شبکه، S3، FTP و تلگرام و گزارش هر اجرا در پیام‌رسان بله.

داشبورد برنامه Backup AI
داشبورد Backup AI: وضعیت آخرین اجراها، حجم بکاپ‌ها و نتیجه هر مقصد در یک نگاه

پرسش‌های رایج

آیا بکاپ گرفتن در ساعت کاری سرعت نرم‌افزار را کم می‌کند؟

بکاپ SQL Server به‌صورت آنلاین و بدون قطع کار کاربران گرفته می‌شود، اما روی دیسک بار می‌گذارد. بکاپ کامل را شب‌ها و بکاپ‌های Differential و Log را که حجم کمی دارند در طول روز بگیرید.

کپی‌کردن فایل‌های MDF و LDF کافی نیست؟

خیر. کپی این فایل‌ها وقتی SQL Server روشن است معمولاً نسخه ناسالم و غیرقابل اتصال می‌سازد. همیشه از دستور BACKUP یا ابزاری که از آن استفاده می‌کند بکاپ بگیرید.

بکاپ را در تلگرام یا فضای ابری بگذاریم امن است؟

اگر فایل پیش از ارسال با رمز قوی رمزنگاری شود، بله؛ در این صورت حتی اگر حساب یا فضای ابری لو برود، محتوای بکاپ قابل خواندن نیست.

خدمات مرتبط ساینانت

مقاله‌های دیگر