راهکارهای Disaster Recover :
- Backup
- Log Shipping
آشنایی با ساختار Backup در سرویس SQL :
در ساختار تهیه Backup از دیتابیس، 3 مدل وجود دارد:
- Simple Recovery
- Full Recovery
- Bulk Logged Recovery
در مدل Simple Recovery تهیه Backup از Transaction Log ها صرفا برای بازگردانی اطلاعات در زمان Crash کردن دیتابیس می باشد. در شرایط بحرانی، میزان از دست دادن اطلاعات در این مدل بسیار زیاد است. در این مدل می توان به صورت Full Backup و Diff Backup اقدام به تهیه Backup کرد. همانطور که می دانید Full Backup از تمام اطلاعات پشتیبان تهیه می کند و Diff براساس Checkpoint که Full Backup ایجاد کرده است، صرفا از تغییرات اقدام به تهیه Backup می کند، بنابراین وجود Diff Backup ها بدون Full Backup بلااستفاده است.
این مدل دارای ویژگی های زیر است:
مدیریت و راه اندازی آن راحت است
در معرض خطر قرار دادن اطلاعات در یک سناریو Disaster واقعی به این معنا که دیتابیس تنها می تواند به آخرین نسخه Full Backup یا آخرین Diff Backup در صورت وجود Full Backup بازگردد.
سناریوی زیر را در نظر بگیرید:
در این سناریو، رخداد فاجعه در روز چهارشنبه اتفاق افتاده است. بنابراین جهت Recover کردن اطلاعات، آخرین Diff موجود که در روز سه شنبه گرفته شده است وجود دارد، اما حد فاصل سه شنبه تا چهارشنبه تمام اطلاعات از دست رفته است.
در مدل Full Recovery شما راهکارهای Backup گیری بیشتری خواهید داشت. در این مدل ایجاد راهکارها کمی پیچیده تر است اما تضمین نگهداری اطلاعات داده شده است.
در این مدل رکوردهای موجود در فایل Log به صورت Active باقی می مانند تا زمانیکه از آنها Backup تهیه شود، در صورتیکه در مدل قبل رکوردها به صورت Inactive بودند و در زمان Backup گیری به حالت Active تبدیل می شدند.
در این مدل می توان دیتابیس را به یک نقطه زمانی مشخص بازگردانی کرد و همچنین کمترین میزان از دست دادن اطلاعات را همراه دارد.
نمونه ای از سناریویی که در این مدل می توان داشت به شرح زیر است:
- تهیه Full Backup به صورت هفتگی
- تهیه Diff Backup به صورت شبانه
- تهیه Log Backup در هر 15 دقیقه یکبار
نکته: در زمان تهیه Backup و یا Restore کردن گزینه ای به نام With NoRecovery وجود دارد. این گزینه به این منظور است که تضمین می کند هیچ تراکنشی روی دیتابیس اعمال نمی شود تا زمانیکه Recovery توسط مدیر سیستم تکمیل شود. (آنلاین کردن دیتابیس)
نکته: زمانیکه می خواهید یک Full Backup را بازگردانی نمایید و بعد از آن اقدام به بازگردانی Diff Backup کنید، می بایست Full Backup را به صورت With NoRecovery بازگردانی کنید.
به منظور بازگردانی پشتیبان تهیه شده در این مدل به یک نقطه زمانی مشخص کافیست روش زیر را انجام دهید:
ابتدا یک نسخه Full Backup از دیتابیس تهیه نمایید.
سپس نسخه های Diff خود را تهیه نمایید.
در آخرین نسخه Diff خود که تاریخ و ساعت مدنظر شما قرار دارد از دستور زیر استفاده نمایید:
With NoRecovery, STOPAT=’00/00/0000 00:00:00’;
نکته: پس از پایان تمام فرآیند بازگردانی دیتابیس، می بایست دیتابیس را آنلاین نمایید. دستور زیر جهت انجام این فرآیند است:
Restore DATABASE “DB NAME” WITH RECOVERY
دستور جهت تهیه نسخه Full از یک دیتابیس به صورت زیر است:
Backup DATABASE “DB Name”
TO DISK = ‘PATH\Name.bak’
GO
دستور جهت تهیه نسخه Log Backup به صورت زیر است:
Backup LOG “DB Name”
TO DISK = ‘PATH\Name.bak’
GO
مدل Bulk Logged Recovery برای دیتابیس هایی است که به صورت عمده در یک بازه زمانی مشخص اقدام به ثبت تراکنش می نمایند. به منظور جلوگیری از پرشدن آنی فایل Log و عدم استفاده از حداکثر منابع، از مدل Bulk-Logged در Recovery استفاده می نماییم. عملکرد بازگردانی آن مانند مدل Full Recovery است و تفاوت آن در این است که دیگر از ویژگی بازگردانی به یک نقطه زمانی مشخص امکان پذیر نمی باشد.
نکته: در برخی شرایط می توان از دو مدل Full Recovery و Bulk-Logged استفاده کرد. در این صورت هم می توان ویژگی بازگردانی به یک نقطه زمانی مشخص را داشت و هم می توان از ویژگی جلوگیری از پرشدن آنی فایل Log استفاده کرد. برای این منظور می توانید بین Full و Bulk-Logged سوئیچ نمایید بدون آنکه نگران از دست دادن زنجیره بازگردانی Backup ها باشید. در زمانیکه نیاز به بازگردانی به یک نقطه زمانی مشخص است، می بایست به حالت Full Recovery سوئیچ نمایید.
نکته: موردی که در اینجا حائز اهمیت می باشد این است که تا زمانیکه یک Log Backup بعد از تغییر حالت به Full Recovery گرفته نشود، ویژگی بازگردانی به یک نقطه زمانی امکان پذیر نمی باشد.
آشنایی با File Based Backups :
این نوع Backup به منظور استفاده در دیتابیس هایی است که ممکن است بخشی از آنها از دست برود و نیاز باشد که آن بخش از دست رفته بازگردانی شود. منظور از این جمله این است که در یک File Group ممکن است یک Single File از دست برود.
در این حالت بدون اینکه نیاز باشد مدت زمان بازگردانی کل دیتابیس را طی نمایید، تنها با بازگردانی آن فایل از دست رفته می توانید دیتابیس را فعال نمایید.
آشنایی با Maintenance Plan در سرویس SQL :
یکی از بخش های سرویس SQL که بسیار کارآمد می باشد، ایجاد Job های تهیه Backup به صورت زمانبندی شده و اتوماتیک می باشد. این فرآیند توسط یک Wizard به راحتی قابل انجام است. برای اینکار کافیست از زیر مجموعه Management بر روی گزینه Maintenance Plans راست کلیک کرده و گزینه Maintenance Plan Wizard را انتخاب نمایید. سپس مراحل زیر را طی نمایید:
- انتخاب یک نام برای این Job
- انتخاب انواع روش های Backup گیری
- انتخاب دیتابیس یا دیتابیس هایی که مدنظر دارید (به ترتیب انتخاب روش های Backup گیری، اولین دیتابیس برای اولین روش)
- ایجاد زمانبندی برای هر Backup
- انتخاب مسیر قرارگیری Backup
- انتخاب Option های مورد نیاز مانند Backup Expire Date ، Compression و بررسی صحت Backup گرفته شده
- پایان فرآیند برای اولین دیتابیس
نمونه هایی از روش های مدیریت Backup های دیتابیس به شرح زیر است:
- Maintenance Plans
- SQL Agent / Custom TSQL Scripts
- Ola Hallengren’s Scripts (ola.hallengren.com)
- 3rd Party Management Tools (RedGate, Idera, Dell and ...)
نکات کلیدی در زمینه Backup گیری از دیتابیس ها:
- محل نگهداری Backup ها می بایست خارج از سرور همان دیتابیس باشد، وجود یک نسخه از Backup خارج از آن سایت الزامی است.
- طی کردن مرحله Verifying Backup تضمین کننده بازگردانی اطلاعات نمی باشد، لذا می بایست اقدام به تست صحت بازگردانی اطلاعات نمایید.
- وجود سیستم های هشدار دهنده در زمینه Fail شدن Job های مربوط به تهیه Backup
- مسیر عیب یابی Job های مربوط به Backup را هموار سازید. یافتن مشکل توسط خود شما قبل از رخ دادن آن بسیار راحت تر از یافتن آن توسط دیگران بعد از رخ دادن آن می باشد.