مقدمه

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

بکاپ گیری در SQL Server به روش دستی

بکاپ گیری دستی در SQL Server به روش دستی، به دو صورت انجام می شود. در روش اول ابتدا پنجره Management Studio را باز می کنیم و در قسمت Object Explorer وارد بخش دیتابیس شده، روی دیتابیس مورد نظر کلیک می کنیم و در منوی Task گزینه بکاپ را انتخاب می کنیم. سپس نوع بکاپ را مشخص کرده و گزینه Add را انتخاب می کنیم. حال در این جا باید محل مورد نظر برای ذخیره و همچنین نام بکاپ را مشخص کرد. پس از اتمام این مراحل گزینه OK را زده و صفحه پایان کار با موفقیت، به ما نشان داده می شود.
در روش دوم بکاپ گیری از T-SQL استفاده می شود. برای این کار باید وارد SQL Server Management Studio شده و از نوار ابزار ها گزینه New Query را انتخاب کنیم. سپس با دستوری مشابه دستور زیر فایل بکاپ را ذخیره می کنیم:

BACKUP DATABASE BinaDB TO DISK = ‘C:BinaDB-Backup-Test.BAK’
GO

 

( توجه داشته باشید که این دستور دیتابیس BinaDB را در درایو C و با نام نوشته شده در حالت Full Backup ذخیره می کند)
پس از اتمام کار، پیغامی مبنی بر اجرای موفقیت آمیز دستور نمایش داده می شود.

بکاپ گیری در SQL Server به روش خودکار

در ادامه مباحث بکاپ و ریکاوری دیتابیس در SQL Server ، به روش بکاپ گیری به صورت خودکار می پردازیم. برای استفاده از این روش باید سرویس SQL Server Agent در حالت فعال یا Running قرار داشته باشد. برای بررسی این موضوع می توانید وارد کنسول Services.msc شده و وضعیت آن را بررسی کنید. در صورتی که حالت آن روی Stop بود آن را به استارت تغییر دهید. همچنین می توانید پس از اتصال به instance مورد نظر در SQL Server Management Studio در منوی Object Explorer ببینید که سرویس مورد نظر اجرا می شود و یا اینکه غیر فعال است.
پس از مطمئن بودن از فعال بودن آن، از منوی Object Explorer بر روی گزینه Management کلیک کرده و گزینه Maintenance Plan را انتخاب کنید. سپس وارد بخش Maintenance Plan Wizard شوید. در صفحه باز شده، گزینه Next را انتخاب می کنیم. در صفحه بعدی نام فایل را انتخاب می کنیم و سپس برای انجام تنظیمات مربوطه Change را انتخاب می کنیم.

سپس تنظیماتی مثل زمان، نوع بکاپ، شرایط بکاپ گیری و… را در صفحه باز شده مشخص می کنیم. در صفحه بعدی باید نوع بکاپ را انتخاب کنیم (مثل Full، Differential و یا Transaction Log که بعدا توضیح داده خواهند شد). در صفحه بعدی باید دیتابیس های مورد نظر برای بکاپ گیری و در نهایت مسیر ذخیره فایل بکاپ را انتخاب کنید. و دکمه Finish را بزنید تا ساخت Plan بکاپ گیری اتوماتیک به اتمام برسد.

ریکاوری دیتابیس در SQL Server

حال که نحوه گرفتن بکاپ را یاد گرفتیم می خواهیم درباره ی ریکاوری دیتابیس در SQL Server صحبت کنیم. برای این کار به این صورت عمل می کنیم. ابتدا در SQL Server Management Studio بر روی دیتابیس مورد نظر راست کلیک کرده و از قسمت Task، گزینه Restore و سپس از آن قسمت هم گزینه Database را انتخاب می کنیم. در صفحه باز شده در قسمت Source For Restore گزینه From Device را انتخاب کرده و فایل بکاپی را که قبلا ایجاد شده است انتخاب می کنیم. اگر می خواهید فایل بکاپ جایگزین دیتابیس فعلی شود، باید از قسمت Options در سمت راست گزینه Overwrite the Exsisting Database را تیک بزنید.

در بکاپ و ریکاوری دیتابیس در SQL Server به چه نکاتی باید توجه کنیم؟

  • – در نسخه های جدید SQL Server ، برای مشخص کردن محل ذخیره ی جدیدی برای فایل های دیتابیس، باید در قسمت Files گزینه Relocate all files to folder را تیک بزنید و سپس یک محل جدید برای ذخیره ی داده ها و لاگ ها مشخص کنید.
  • اگر می خواهید پلنی برای بکاپ خودکار تنظیم کنید، پیشنهاد می شود به دلیل شلوغ بودن سرور، این کار را برای ساعات پایانی روز تعیین کنید.
  • بهتر است فایل های مربوط به بکاپ خود را بر روی سرور، دیسک و یا حافظه دیگری ذخیره کنید تا در صورت ایجاد مشکل در سرور، این فایل ها از بین نروند.
  •  برای انجام دادن عملیات بکاپ ‌گیری، کاربر باید دسترسی Sysadmin را به عنوان Server Roles و دسترسی ‌های db_owner و db_backupoperator را به عنوان Database Roles داشته باشد. برای این منظور در نرم ‌افزار SQL Server Management Studio پس از اتصال به Instance به مسیر Security و سپس Login رفته و با راست کلیک بر روی یوزر مورد نظر گزینه Properties را انتخاب کنید و تنظیمات را مطابق زیر اعمال نمایید:
    در قسمت Server Roles، دو گزینه Public و Sysadmin را تیک بزنید. سپس وارد قسمت User Mapping شده و در این قسمت گزینه های BinaDB، db_backupoperatorو db_owner را تیک بزنید.

انواع مدل های ریکاوری و تفاوت های آن ها

همان طور که مشاهده کردید در قسمت هایی از مقاله به مدل های مختلف بکاپ اشاره شد و گفتیم که بعدا به توضیح آن ها می پردازیم، ریکاوری هم مدل های مختلف دارد. عملیات گرفتن بکاپ و ریکاوری دیتابیس در SQL Server ، بر اساس مدل ریکاوری در آن دیتابیس انجام می گیرد. این مدل های مختلف ریکاوری برای به منظور کنترل و نگه داری Transaction Log ها ایجاد شده اند و بر مواردی مثل نحوه ذخیره تراکنش ها به صورت لاگ، اجازه بکاپ گیری به تراکنش ها و نوع عملیات بازگردانی اطلاعات کنترل دارند. به صورت کلی سه نوع مدل ریکاوری در SQL Server وجود دارد:

  • مدل ریکاوری Full
  • مدل ریکاوری Bulk-Logged
  • مدل ریکاوری Simple

هر کدام از این مدل ها استفاده خاص خود را دارد که در ادامه راجع به هر کدام توضیح می دهیم.

  • مدل بازیابی کامل یا Full Recovery

تنظیم این مدل به گونه ای است که تا زمانی که از تراکنشی بکاپ گرفته نشده باشد، دیتابیس آن را پاک نمی کند. پس از گرفته شدن بکاپ به یکی از سه روش موجود است که دیتابیس اقدام به حذف تراکنش ها خواهد کرد. در صورت ایجاد اشکال در دیتابیس، روش Full Recovery Model بهترین عملکرد را در بازیابی اطلاعات ما دارد. در این مدل شما قادر خواهید بود در هنگام بازیابی اطلاعات دیتابیس، آن ها را به زمان و تاریخ مد نظرتان بازیابی کنید که به این ویژگی قابلیت Point In Time Recovery گفته می شود. حجم اطلاعاتی که در صورت بروز مشکل می توان بازیابی کرد، توسط مدت زمان طول کشیده برای بکاپ گیری از تراکنش ها تعیین می شود.

  • مدل بازیابی Bul-Logged

این مدل ریکاوری بسیار به مدل قبلی یا همان ریکاوری کامل شبیه است اما تفاوت اصلی در بین این دو مدل ریکاوری در روش این مدل از ریکاوری، برای مدیریت عملیات های تغییر در اطلاعات است. این مدل از ریکاوری برای ذخیره اطلاعات و تراکنش ها از سیستم Minimal Logging استفاده می کند. این کار سرعت پردازش را افزایش می دهد در نتیجه زمان مورد نیاز برای پردازش کم شده و همچنین فضای اشغال شده برای این کار کاهش می یابد.
از دیگر تفاوت های این دو روش این است که در این مدل، قابیلت Point In Time Restore را نخواهید داشت. همچنین در این مدل ریکاوری، حجم فایل ها نسبت به مدل قبلی بسیار کمتر خواهد بود. معمولا از این مدل ریکاوری دیتابیس در SQL Server ، به صورت تک موردی و یا برای مدت زمان کوتاهی استفاده می شود نه یک راه دائمی. اگر از این مدل ریکاوری در سازمان خود استفاده می کنید باید دقت داشته باشید که این عملیات را در زمان بروز رسانی ثبت اطلاعات جدید توسط کاربران انجام ندهید، زیرا امکان از بین رفتن داده ها در حین این کار وجود دارد.

  • مدل بازیابی ساده و یا Simple Recovery Model

در این روش، هدف اصلی کاهش اندازه اطلاعات تراکنش ها در لاگ های ذخیره شده است. در این مدل SQL Server هر زمانی که دیتابیس به یک Transaction Checkpoint برسد، اطلاعات تراکنش ها را حذف می‌ کند، که در اصطلاح به اینکار Truncate کردن گفته می ‌شود. استفاده از این مدل ریکاوری سبب می ‌شود که فقط امکان بازگردانی اطلاعات از آن دیتابیس ‌هایی وجود داشته باشد که به روش ‌های Full و Differential از آن ها بکاپ ‎گیری شده است.
در حالت Simple Recovery Model قابلیت بازیابی اطلاعات به یک نقطه زمانی خاص یا همان Point In Time Restore وجود ندارد و تنها می ‌توان اطلاعات را به صورت کامل با استفاده از Full Backup و یا Differential Backup به زمانی برگرداند که Backupها ایجاد شده اند. در استفاده از این مدل ریکاوری دیتابیس در SQL Server ، با خالی شدن Transaction Logها، فضای بیشتری در هارد دیسک شما برای انجام فرآیندهای دیگر باز خواهد شد.

  • مدل ریکاوری را چطور تغییر دهیم؟

در حالت عادی تنظیمات بر روی حالت ریکاوری کامل قرار گرفته است. برای تغییر آن در SQL Server Management Studio وارد قسمت دیتابیس ها در Object Explorer شده، بر روی دیتابیس مورد نظرتان راست کلیک کرده و Properties را انتخاب کنید. در قسمت Options از صفحه باز شده امکان تغییر مدل ریکاوری وجود دارد.