.:: محمدحسین فخرآوری ::.

با سلام و خسته نباشید به شما دوست عزیز به قسمت موضوعات وبلاگ مراجعه کنید. 09173700916

آشنایی با انواع Recovery Model در SQL Server

یکی از مهمترین کارهایی که  یک مدیر پایگاه داده  میتونه داشته باشه , داشتن یک طرج یا پلن برای پشتیبان گیری کارا و موثر از دادها با توجه به شرایط هست تا در مواقع بروز نقص فنی بتونه کمترین گمشدگی داده رو داشته باشه . در این مقاله نگاهی به Database Files  و Database File group میاندازیم  و سپس به انواع SQLServer Recovery Mode میپردازیم .

 

Database FileGroups

حال که در مورد انواع فایلها آشنا شدم بهتره که در مورد File group ها هم بدونیم . File Group ها بر خلاف مورد قبلی به هیچ عنوان مفهموم فیزیکی ندارند بلکه  دارای ساختار منطقی هستند . از File group ها برای مقاصد گوناگونی استفاده میشه .مثلا برای مقاصد Back up گیری و Restore کردن یا  جدا کردن اعمال  OLTP On-line Transaction Processing از OLAP On-Line Analytical Processing. .

اگر با این دو اصلاح نا آشنا هستید باید بگویم OLTP دیتابیسی هست که اعمال خواندن و نوشتن  وبروزرسانی  زیادی دراون داریم در حالی که در OLAPبیشتر به صورت  تنها خواندنی هست و بیشتر از اون در گزارش گیری استفاده میکنیم .

ما همیشه Primary File Group رو داریم که میتونه حاوی فایلهای mdf و ndf باشه . همچین میتونیم File Group های اختیاری دیگری رو هم داشته باشیم که به اونها User Defined File Group’ گفته میشه که تنها میتونه حاوی فایلهای  ndf باشه . علیت اینکار میتونه دلایل متفاوتی داشته باشه . تصور کنید که در دیتابیس شما جدولی وجود دارد که بر خلاف دیگر جدولها بسیار بزرگ هست و متناوب از سوی کاربر درخواست خواندن دارد . در این شرایط میتونیم اون جدول خاص رو در یک فایل ndf مجزا در یک درایو یا هارددیسک مجزا قرار دهیم . به این طریق کارایی برنامه ما بالاتر خوهد رفت . نکته دیگر اینکه فایلهای Transaction Log ما یا همان ndf درون File group ها قرار نمیگیرند .

ما میتونیم هنگام تعریف جدول جدید آن را به یک File Group مشخص انتصاب بدیم , البته باید اینجا File Group رو ایجاد کرده باشیم . از پنل Properties قسمت Table Designer مقدار Text/Image Filegroup را به file group مورد نظر انتصاب میدیم .


Recovery Models

حال به بحث اصلی مان برمیگردیم . تعین Recovery Model برای دیتابیس نقش مهمی در تعین استراتژی ما برای Disaster recovery  بازی میکنه . اگر بخواهیم خیلی ساده هدف  Recovery Models رو بیان کینم , میتونیم بگیم برای این بوجود اومده تا نحوه نگهداری یا  maintenance  فایلهای T-Log رو مدیریت کنه .

Full Recovery Model

این مدل که پیشفرض هم میباشد , کاملترین نوع  هست که کمترین کمشدگی داده رو داریم . در اینجا ما( PIT ( Point In Time Restore  رو داریم   یعنی میتونیم به هر لحظه ای از زمان دیتابیس رو برگردونیم  . مناسب دیتابیس های OLTP هست و نیازمند Back up گیری مستمر از Log هست .


Simple

شرایطی رو در نظر بگیرید که در صورت Failure برای شما کافی باشد که تنها به وضعیت آخرین Back up گیری برگردید و لازم نداشته باشید که به یک زمان مشخص برگردید , در این صورت Simple مناسب حال شماست . مثلا فرض کینید که شما همیشه آخر شب Back up میگیرید و یک Failure در ساعت 10 صبح برای شما رخ میده . در صورتی که مد Simple باشید , داده های بین ساعات 12 شب تا 10 صبح رو از دست خواهید داد و اگر این برای شما اهمیتی نداشته باشد که دادهای بین آخرین Back up تا زمان Failure رو از دست بدهید از مد Simple استفاده کنید .

در این مد شما به Back up گیری از فایل log نیازی ندارید , PIT Recovery رو ندارید و Maintenance سادست و بیشتر مناسب دیتابیس های OLAP هست .


Bulk-logged
این مد با Full تفاوت چندانی ندارد , تنها تفاوت آنها در اعمال Bulk  انبوه هست . مثلا فرض کنید دادههایی رو از دیتابیسی دیگر به این دیتابیس Import میکنید , در اینجا تنها یک Transaction در فایل لاگ ثبت میشود در صورتی که اگر در مد full بود , به تعداد رکورهایی که درج میشد تراکنش ثبت میشد .  به عبارت جامعتر , در این مد اعمال Bulk یا انبوه به صورت minimal  لاگ میشود .  اگر ما یک میلیون رکورد رو به صورت انبوه درج میکردیم , به ازای همه اون یک میلیون ما تنها یک تراکنش در فایل لاگ ذخیره میکردیم  در حالی که در مد Full یک میلیون تراکنش ثبت میشد . در اینجا ما PIT Restore رو نداریم .

نکته مهمی که باید به خاطر داشته باشید این است که در صورتی که در مد Full or Bulk -logged هستید , حتما باید از فایل لاگ Back up بگیرید تا Trancate شود در غیر اینصورت این فایل آنقدر رشد خواهد کرد و تمام فضای درایو رو به خودش اختصاص خواهد داد . بعضا دیتابیس هایی دیده شده است که علیرغم اینکه حجم فایل mdf آن کم است , حجم فایل log آن چندین برابر mdf آن هست . این ناشی از Back up گیری نکردن از فایل log  هست .

 

محمدحسین فخرآوری ، چهارشنبه ۱۳۹۱/۰۳/۳۱ ، 0:11