مقدمه
عملیات پشتیبانگیری و بازیابی در SQL Server در چارچوب مدل بازیابی پایگاه داده صورت میگیرد. مدلهای بازیابی در پایگاههای داده و بهخصوص در SQL Server برای کنترل نحوه نگهداری از تراکنشها طراحی شدهاند. مدل بازیابی در واقع یک ویژگی از پایگاهداده است که نحوه ثبت تراکنشها، نیاز به پشتیبانگیری از دادههای موجود و همینطور انواع عملیاتهای بازیابی را فراهم کرده و به شما دسترسی میدهد تا بتوانید از این ویژگیها و امکانات نهایت بهره را ببرید.
امروزه سه مدل بازیابی برای SQL Server مورداستفاده قرار میگیرد که این سه مدل عبارتاند از موارد زیر:
- simple
- full
- bulk-logged
به طور معمول یک پایگاهداده از مدل بازیابی کامل یا مدل بازیابی ساده استفاده میکند. نکته مهمی که دراینخصوص باید بدانید این است که مدل بازیابی در یک پایگاهداده را در هر زمان و بر حسب نیاز خود میتوانید بهراحتی تغییر دهید؛ بنابراین محدودیتی دراینخصوص برای شما وجود نخواهد داشت. در ادامه به معرفی هریک از این سه مدل بازیابی در پایگاههای داده میپردازیم.
مدل بازیابی ساده
مدل بازیابی ساده برای بازیابی در SQL Server
این مدل بازیابی در SQL Server از logهای سرور پشتیبانگیری نمیکند. این مدل به طور خودکار فضای گزارش را بازیابی میکند تا فضای موردنیاز را تاحدامکان کوچک نگه دارد و همین عامل نیز باعث میشود تا نیاز به مدیریت فضای گزارش تراکنشها به طور کامل از بین برود. نکتهای که درباره این مدل وجود دارد این است که عملیاتی که نیاز به پشتیبانگیری از گزارش تراکنش داشته باشد توسط این مدل پشتیبانی نمیشود و امکان استفاده از آن وجود نخواهد داشت.
اگر شما نیازمندی ویژگیهایی مانند Log shipping، Always On یا انعکاس پایگاهداده، بازیابی فایلهای رسانهای بدون از دادن اطلاعات و بازیابی Point-in-time هستید نمیتوانید از این مدل در پایگاهداده SQL Server خود استفاده کنید. در این مدل تغییرات در آخرین نسخه پشتیبان محافظت نمیشوند؛ بنابراین در صورت بروز هرگونه مشکلی این تغییرات باید دوباره انجام شوند.
مدل بازیابی ساده میتواند تنها تا پایان یک نسخه پشتیبان بازیابی شود؛ بنابراین زمانی که قصد استفاده از این مدل در پایگاهداده SQL Server خود را دارید حتما به این نکته دقت داشته باشید و اقدامات امنیتی موردنیاز را اعمال کنید تا با مشکل مواجه نشوید.
مدل بازیابی full
آشنایی با مدل بازیابی full در SQL Server
این مدل به بکآپها و log نسخههای پشتیبان نیاز دارد. با استفاده از مدل full برای بازیابی در SQL Server در صورت گمشدن یا آسیبدیدن یک فایل داده هیچ مشکلی برای شما به وجود نمیآید و این مسئله یکی از مهمترین مزایای مدل full به شمار میآید. یک ویژگی مهم این است که میتواند نسبت به یک نقطه مشخص از زمان عملیات بازیابی را انجام دهد. بهعنوانمثال شما میتوانید قبل از اجرای برنامه یا دریافت خطای کاربر را بازیابی کنید.
در این مدل اگر انتهای log آسیبدیده باشد نیازمند تغییرات خواهید بود؛ چراکه نسخه پشتیبان گزارش باید دوباره انجام شود. یکی از مهمترین مزایای مدل بازیابی full این است که میتواند تا یک نقطه زمانی خاص را بهراحتی بازیابی کند و از این نظر مشکلی ندارد. البته این به شرطی است که عملیات پشتیبانگیری شما تا آن نقطه زمانی کامل شده باشد.
یک نکته بسیار مهم برای استفاده از این مدل این است که اگر دو یا چند پایگاهداده با مدل بازیابی full دارید که باید از نظر منطقی با یکدیگر سازگار باشند ممکن است مجبور شوید تا رویههای خاصی را برای اطمینان از قابلیت بازیابی این پایگاههای داده پیادهسازی و اجرا کنید.
مدل بازیابی Bulk logged
مدل بازیابی Bulk logged در SQL Server و ویژگیهای این مدل
این مدل نیز مانند مدل full نیازمند log پشتیبانها است که در زمان استفاده حتما باید به آن دقت داشته باشید. مدل Bulk logged را میتوان مکمل مدل بازیابی full دانست که امکان عملیاتهای bulk copy یا کپی انبوه را با عملکردی بینظیر برای شما در پایگاههای داده فراهم میکند. این مدل از نظر کاهش فضای گزارش یکی از بهترین مدلهای بازیابی در SQL Server به شمار میآید؛ چراکه در این زمینه میتواند عملکردی بسیار عالی را به شما ارائه دهد.
بکآپهای Log گزارش ممکن است اندازه فوقالعادهای داشته باشند؛ چراکه عملیاتهای لاگگیری که در بکآپ لاگ ذخیره میشوند بهصورت حداقل هستند. درصورتیکه از این مدل استفاده میکنید باید به این نکته دقت کنید که اگر گزارش شما آسیبدیده است یا اینکه عملیات ثبت انبوه از آخرین نسخه پشتیبان با مشکل مواجه شده است تغییرات پس از آخرین نسخه پشتیبان مجددا باید انجام شوند.
این مدل بازیابی در SQL Server برای شما امکان بازیابی تا پایان هر نسخه پشتیبان را فراهم میکند. دقت داشته باشید که در این مدل، بازیابی Point-in-time پشتیبانی نمیشود.
انتخاب مدل بازیابی
انتخاب مدل بازیابی در SQL Server
روشهای متعددی وجود دارد که شما میتوانید از آنها برای انتخاب مدل بازیابی در SQL Server استفاده کنید. یکی از بهترین گزینههایی که برای این کار وجود دارد استفاده از ابزار SQL Server Management Studio است. این ابزار به شما کمک میکند تا بتوانید بهترین مدل را بر اساس پایگاهداده خود انتخاب کنید. برای این کار کافی است که ابتدا روی پایگاهداده خود راست کلیک کرده و گزینه Properties را از منوی کشویی که نمایش داده میشود انتخاب کنید.
پس از آنکه ویژگیهای پایگاهداده شما نمایش داده شد از منوی context که در سمت چپ قرار دارد گزینه Options را انتخاب کنید. پس از انجام این کار پنجرهای برای شما نمایش داده میشود. در این پنجره شما میتوانید مدل خود را بهسادگی انتخاب کنید. یکی دیگر از روشهایی که برای انتخاب مدل بازیابی وجود دارد استفاده از کد TSQL است. شما میتوانید مطابق شکل زیر از این کد استفاده کنید:
SELECT name, recovery_model_desc FROM sys.databases WHERE name = 'AdventureWorks2017' ;
این تنها یک مثال ساده از این کد است و شما میتوانید بهراحتی با استفاده از این کدها مدل بازیابی پایگاهداده خود را تغییر داده و بسیاری از عملیاتهای دیگر را نیز انجام دهید.
نتیجهگیری
بازیابی در SQL Server از اهمیت زیادی برخوردار است و به همین علت نیز مدلهای مختلفی برای این کار طراحی شده است. هریک از این مدلها دارای ویژگیها و مزایای مخصوص به خود هستند. از جمله مدلهایی که امروزه برای انجام این کار مورداستفاده قرار میگیرند میتوان به مدلهای ساده، full و Bulk logged اشاره کرد. برای انتخاب مدل نیز راهکارهای مختلفی وجود دارد که شما بر اساس سلیقه خود میتوانید از هریک از این راهکارها استفاده کنید.