میتوان یکی از مهمترین بخشهای یک سیستم نرمافزاری را بخش پشتیبانی و بازیابی آن بیان کرد. در سازمانهای بزرگ مانند بانکها در یک ثانیه چندین هزار رکورد در دیتابیس و جداول ثبت میشود و اگر چنانچه از دیتابیس مورد نظر پشتیبان نداشته باشید با ازدسترفتن اطلاعات اصلی دیگر نمیتوانید به آن اطلاعات دسترسی داشته باشید پس باید مسیر را دقیقاً مشخص کرد تا بتوانیم در سریعترین زمان ممکن اطلاعات را برگردانیم.
روشهای پشتیبانگیری از دیتابیس بسیار زیاد است که میتوانید از خود نرمافزار SQL استفاده کنید و یا اینکه از نرمافزارهای جانبی استفاده کنید که در اینجا همهی آنها را بررسی میکنیم.
۵-۱ پشتیبانگیری از طریق نرمافزار SQL
برای شروع کار باید سرویس SQL Server Agent را فعال کنیم، برای این کار باید وارد SQL شوید و بهمانند شکل ۱-۵ بر روی سرویس Agent کلیک راست کنید و گزینهی Start را انتخاب کنید، بعد از آن پنجرهای باز خواهد شد که باید بر روی Yes کلیک کنید.
شکل ۱-۵
در ادامه میخواهیم ابزارهای Database Maintenance را با هم بررسی کنیم، برای اینکه سرویس Backup را فعال کنیم باید بهمانند شکل ۲-۵ وارد قسمت Management شوید و بر روی Maintenace Plans کلیک راست کنید و گزینهی Maintenace Plan Wizard را انتخاب کنید.
شکل ۲-۵
در شکل ۳-۵ باید یک نام بهدلخواه وارد کنید و در قسمت زیری آن برای زمانبندی فعلاً گزینهی Separate را انتخاب کنید.
شکل ۳-۵
در شکل ۴-۵ گزینههای مختلفی را مشاهده میکنید که هرکدام برای یک کار طراحی شدهاند که در زیر آنها را بررسی میکنیم.
شکل ۴-۵
- Chech Database Integrity
این گزینه برای این است که بفهمیم یک دیتابیس مشکلی ندارد و میتوانیم از آن پشتیبان تهیه کنیم که این موضوع واقعاً برای پشتیبانگیری مهم است اگر چنانچه دیتابیس مورد نظر مشکل داشته باشد حتی بعد از انجام پشتیبانگیری نمیتوانید از آن دیتابیس در آینده استفاده کنید، پس حتماً باید از این گزینه استفاده کنید.
- Shrink Database
زمانی که یک دیتابیس ایجاد میشود دو فایل در محل ذخیرهسازی ایجاد میشود که یکی فایل اصلی و دیگری فایل log است، این فایل Log بسته به نوع کار در طی زمان حجم آن افزایش پیدا خواهد کرد که باید توسط این گزینه حجم آن را کاهش دهید تا حجم اضافه در خروجی پشتیبانگیری ایجاد نشود.
- Reorganize index و Rebuld index
زمانی که یا دستورت مختلف بر روی دیتابیس خودکار میکنید استفاده از این دستورات مانند Insert, Delete و… بهمرورزمان باعث ایجاد Fragmentation یا همان پارگی میشوند و همین امر باعث میشود که اطلاعات بهدرستی در هارددیسک یا محل ذخیرهسازی قرار نگیرند به طور سادهتر باید گفت که مثلاً از یک محل ذخیرهسازی با حجم ۱ گیگابیت داشته باشید، زمانی که Fragmentation یا پارگی ایجاد شود یک دیتابیس ۵۰۰ مگابایت در یک این فضای یک گیگابیت ذخیره خواهد شد و استفاده درستی از آن نخواهد شد و مهمترین مشکلی که پارگی ایجاد میکند این است که به شدت سرعت دسترسی و استفاده از دیتابیس را کاهش میدهد.
- Update Statistics
این گزینه برای بهبود عملکرد پرسوجو طراحی شده است و باعث بهروزرسانی اطلاعات برای انجام پرسوجو خواهد شد.
- Clean Up History
زمانی که دیتابیسهای مختلفی را در طول زمان ایجاد میکنید یک سری داده در جدول سیستم ذخیره میکند و این دادهها بهمرورزمان منسوخ و ازکارافتاده خواهند شد و باید با دستوری آن اطلاعات قدیمی را از دیتابیس پاک کرد، البته اگر این دادهها را حذف نکنید بهمرورزمان فضای ذخیرهسازی را پر خواهند کرد.
- execute sql server agent job
این دستور برای اجرای کارهایی است که در agent ایجاد کردید.
- Backup Database (FULL)
برای اینکه به طور کامل از دیتابیسهای خود پشتیبان تهیه کنیم، باید از این گزینه استفاده کنیم، داشتن حداقل یک پشتیبان Full برای هر یک از دیتابیسها ضروری است و اگر Full وجود نداشته باشد شما توانایی برگرداندن دیتابیس خراب شده را نخواهید داشت.
- Backup Database (Differential)
این روش یک روش برای پشتیبانگیری از تغییرات است، مثلاً اگر یک پشتیبان Full تهیه کرده باشد با حجم ۱۰ گیگابایت در موقعی که از پشتیبان Differential استفاده کنید حجم آن بسیار کم خواهد شد چون فقط از تغییراتی که بعد از Full ایجاد شده پشتیبان تهیه میشود، البته اگر تنها از روش Differential استفاده کنید در اولین باری که از دیتابیس پشتیبان تهیه میکند از تمام اطلاعات پشتیبان میگیرد.
- Backup Database (Transaction Log)
زمانی که یک دیتابیس ایجاد میکنید، باید حالت Recovery Model آن را مشخص کنید، اگر بر روی حالت Full قرار داشته باشد از دیتابیس مورد نظر یک فایل Log هم گرفته میشود که قبلاً این موضوع را توضیح دادیم، اگر از این روش پشتیبانگیری استفاده کنید از دادههای log هم پشتیبان تهیه خواهد شد و یک مزیت آن این است که بعد از انجام این نوع پشتیبانگیری حجم فایل log دیتابیس کاهش پیدا خواهد کرد و دیگر نیاز نیست خودتان آن را کم کنید.
- Maintenance Cleanup Task
این گزینه برای حذف پروندههای مربوط به برنامههای نگهداری مانند پروندههای دیتابیس و… کاربرد دارد.
بعد از بررسی گزینههای مورد نظر برای تست کار بهمانند شکل ۵-۵ سه گزینهی مورد نظر را انتخاب کنید و بر روی Next کلیک کنید.
شکل ۵-۵
همانطور که در شکل ۶-۵ مشاهده میکنید سه گزینهی مورد نظر انتخاب شده است و برای ادامه بر روی Next کلیک کنید.
شکل ۶-۵
بهمانند شکل ۷-۵ باید مشخص کنید که چه دیتابیسی باید انتخاب شود تا عملیات Check Integrity بر روی آن اعمال شود که میتوانید با انتخاب گزینهی All databases همهی آنها را انتخاب کنید و یا System Database و یا خودتان انتخاب کنید که بهتر است گزینهی All databases را انتخاب کنید.
شکل ۷-۵
بعد از انتخاب All database چند گزینه را در شکل ۸-۵ مشاهده میکنید که در ادامه آنها را معرفی میکنیم.
شکل ۸-۵
Include Indexes
این گزینه برای بررسی درستی و یکپارچگی ایندکسهای جداول در دیتابیس است که انجام میشود.
Physical Only
این گزینه بعد از اجرا فقط ساختار Pageها و سرصفحههای رکوردهای موجود را بررسی میکند.
Tablock
با فعالکردن این گزینه دیتابیس مورد نظر برای مدتزمان کوتاهی قفل شده و دستور بررسی سلامت دیتابیس یعنی DBCC CHECKDB فعال میشود و بعد از اجرا دستور دیتابیس مورد نظر از قفل باز میشود، بکی از ویژگیهای این روش بعد از اجرا باعث افزایش سرعت بررسی دیتابیس خواهد شد.
Max Degree Of Parallelism
زمانی که از دستور بررسی سلامت دیتابیس یعنی DBCC CHECKDB استفاده میکنید SQL از تمام توان CPU استفاده خواهد کرد، با این گزینه میتوانید مشخص کنید که در زمان اجرا از چند هستهی CPU استفاده شود.
اگر به پایین شکل ۹-۵ توجه کنید، شما میتوانید برای این وظیفه یک زمانبندی مشخص ایجاد کنید، برای این کار بر روی Change کلیک کنید.
شکل ۹-۵
در شکل ۹-۵ باید یک نام برای زمانبندی خود وارد کنید و بعد باید مشخص کنید که این وظیفه در چه زمانهایی اجرا شود مثلاً میتوانید هفتگی انتخاب کنید یا بهصورت روزانه که در اینجا روزانه را انتخاب میکنیم، در قسمت سوم میتوانیم ساعت اجرا این وظیفه را مشخص کنیم که ساعت ۱۲ بامداد انتخاب شده است و در قسمت آخر میتوانید مشخص کنید که این زمانبندی از چه تاریخی اجرا شود که بهصورت پیشفرض تاریخ امروز انتخاب خواهد شد، بر روی OK کلیک کنید.
در شکل ۱۰-۵ باید مشخص کنید که چه دیتابیسهایی را میخواهید بر روی آن عملیات shrink انجام دهید که دو دیتابیس که با هم ایجاد کردیم را انتخاب میکنیم، اگر در پایین صفحه تک گزینهی ignore.. را انتخاب کنید در زمان Shrink از دیتابیسهایی که آفلاین هستند صرفنظر خواهد شد.
شکل ۱۰-۵
بعد از انتخاب دیتابیس بهمانند شکل ۱۱-۵ دو گزینه وجود دارد، گزینهی اول عدد ۵۰ را نشان میدهد و این نشاندهندهی این است که روی دیتابیسهایی که بیشتر از ۵۰ مگابایت حجم داشته باشند عملیات Shrink انجام خواهد شد و اگر کمتر از این مقدار باشد عملیات Shrink انجام نخواهد شد، در قسمت بعدی عدد ۱۰ درصد را مشاهده میکنید که نشاندهندهی این است که چند درصد از فضای دیتابیس بعد از Shrink خالی بماند، گزینهی Retain هم اگر انتخاب شود فقط صفحههای انتهایی را به ابتدای فایل انتقال خواهد داد و با صفحات میانی کاری ندارد، در آخر صفحه هم میتوانید زمانبندی اجرا را بهمانند قبل مشخص کنید.
شکل ۱۱-۵
در شکل زیر نحوه انجام Full backups را باید مشخص کنید، برای این کار باید دیتابیس مورد نظر خود را انتخاب کنید که بهترین حالت این است که از گزینهی All Databases استفاده کنید تا همهی دیتابیسها اعم از سیستمی و کاربر را تخصیص دهد. در پایین شکل ۱۲-۵ نوع ذخیرهسازی فایل را باید مشخص کنید که دارای سه حالت است که در زیر بررسی میکنیم.
شکل ۱۲-۵
گزینهی Disk برای ذخیره کردن فایلهای پشتیبان در هارددیسک سیستم خود و یا در یک آدرس شبکه است که در ادامه بررسی میکنیم.
گزینهی tape برای ذخیره اطلاعات بر روی نوار مغناطیسی میشد که یک روش بسیار مقرونبهصرفه است، هرچند که بسیار قدیمی شده ولی به علت ظرفیت بالای آن و قیمت پایین آن حتی در شرکتهای بزرگ هم در حال استفاده است.
گزینهی URL برای ذخیره کردن اطلاعات در یک آدرس تحت وب طراحی شده است مانند آدرس زیر:
‘https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak’
در ادامه کار بعد از انتخاب گزینهی Disk در پایین صفحه میتوانید زمانبندی مورد نظر خود را مشخص کنید، در شکل ۱۳-۵ باید زمانبندی انجام Full Backup را مشخص کنید، برای انجام Full Backup بهتر است گزینهی هفتگی را انتخاب کنید دلیل آن هم این است که اگر تعداد زیادی دیتابیس با حجم بالا داشته باشید انجام Full Backup میتواند حجم زیادی را از حافظهی شما پر کند و بهترین کار این است که بهصورت هفتگی این کار را انجام دهید و به Differential Backup را بهصورت روزانه انجام دهید.
شکل ۱۳-۵
در ادامه کار بهمانند شکل ۱۴-۵ وارد تب Destination شوید و در این تب باید مشخص کنید که فایلهای Backup در کدام مسیر ذخیره شود که در اینجا مسیر C:\Backups انتخاب شده است توجه داشته باشید برای اینکه نرمافزار دسترسی ایجاد SubFolder را داشته باشید بهتر است تیک گزینهی Create a sub-directory را انتخاب کنید، در پایین صفحه میتوانید پسوند فایل Backup خود را بهدلخواه وارد کنید که بهصورت پیشفرض پسوند bak وارد شده است.
شکل ۱۴-۵
در ادامه بهمانند شکل ۱۵-۵ وارد تب Options شوید، در این تب میتوانید با انتخاب گزینهی Backup set will Expore مشخص کنید که فایلهای Backup بعد از مدت مشخصشدهی ۱۴ روز ازروی هارد پاک شوند و فایل Backup جدید جایگزین آن شود.
یکی از مهمترین قسمتهایی که باید مراقب آن باشد این است که تیک گزینهی Verify Backup Integirity را انتخاب کنید، این گزینه بعد از انجام Backup فایل Backup را تست میکند تا سلام باشد و بعد از آن پردازش به پایان میرسد، در جاهایی دیده شده که فایلهای Backup قابل بازگردانی نبودن و مدیر شبکه با مشکل بزرگی روبرو شده است، پس حتماً تیک این گزینه را بزنید، البته اگر حجم Backup زیاد باشد مقدار زمان انجام عملیات بیشتر خواهد شد.
گزینهی Backup Encryption را اگر انتخاب کنید بر روی فایلهای Backup یک رمز عبور به همراه هشینگ قدرتمند قرار میدهد تاکسی نتواند اطلاعات را به سرقت ببرد.
شکل ۱۵-۵
در ادامه بر روی Next کلیک کنید، در شکل ۱۶-۵ میتوانید مشخص کنید که گزارشگیری از اطلاعات این کار در چه مسیری ذخیره شود، البته این فایل بهصورت TXT است و اگر هم بخواهید به یک آدرس خاص ایمیل شود باید تیک گزینهی E-mail report را انتخاب کنید.
شکل ۱۶-۵
اگر اطلاعاتی در شکل ۱۷-۵ مورد قبول بود میتوانید بر روی Finish کلیک کنید.
شکل ۱۷-۵
همانطور که در شکل ۱۸-۵ مشاهده میکنید اطلاعات بهدرستی تأیید و ایجاد شده است.
شکل ۱۸-۵
در شکل ۱۹-۵ Plan مورد نظر ایجاد شده است و برای اینکه بررسی کاملتری داشته باشیم بر روی آن کلیک راست کنید و گزینهی Modify را انتخاب کنید.
شکل ۱۹-۵
در شکل ۲۰-۵ هر سه قسمتی که در قسمتهای قبل ایجاد کردیم را مشاهده میکنید اگر بر روی آنها کلیک کنید عملکرد آنها را مشاهده خواهید کرد، در جلوی آنها زمانبندی را میتوانید تغییر یا حذف کنید و حتی میتوانید نام هر یک از Ruleها را تغییر دهید.
شکل ۲۰-۵
بعد از ایجاد Plan باید آن را اجرا کنیم، برای اجرا بهمانند شکل ۲۱-۵ بر روی Plan مورد نظر کلیک راست کنید و گزینهی Execute را انتخاب کنید.
شکل ۲۱-۵
بعد از اجرا بهاحتمال زیاد با خطای شکل ۲۲-۵ مواجه خواهید شد که آن هم به این خاطر است که ما برای هر یک از قسمتها یک زمانبندی تعریف کردیم و بهخاطر همین این سه قسمت از هم جداشدن، برای حل این مشکل باید آنها را در یک قسمت قرار دهیم.
شکل ۲۲-۵
برای حل مشکل بهمانند شکل ۲۳-۵ وارد Modify شوید و Subplan_2 و Subplan_3 را از لیست حذف کنید.
شکل ۲۳-۵
در ادامه بهمانند شکل ۲۴-۵ وارد منوی View شوید و بر روی Toolbox کلیک کنید، البته از سمت چپ هم میتوانستید ToolBox را اجرا کنید.
شکل ۲۴-۵
بهمانند شکل ۲۵-۵ در subplan_1 باید گزینهی Shrink را کشیده و در محل مورد نظر رها کنید.
شکل ۲۵-۵
بعد از اضافهکردن Shrink باید فلش بالایی را به آن متصل کنید و بعد برای تنظیم آن دو بار برروی Dhrink کلیک کنید.
شکل ۲۶-۵
در شکل ۲۷-۵ باید All databases را انتخاب کنید و بر روی OK کلیک کنید.
شکل ۲۷-۵
در ادامه باید گزینهی Back UP Database Task را هم به لیست اضافه کنیم که این کار را باید بهمانند شکل ۲۸-۵ انجام دهید.
شکل ۲۸-۵
بهمانند شکل ۲۹-۵ گزینهی آخر را هم متصل کنید و با دو بار کلیک بر روی آن تنظیمات آن را هم به نسبت قبل انجام دهید و اطلاعات را ذخیره کنید.
شکل ۲۹-۵
بعد از اجرای مراحل بالا اگر بهمانند شکل ۳۰-۵ بر روی Execute کلیک کنید عملیات بهمانند شکل ۳۱-۵ با موفقیت انجام شود.
شکل ۳۰-۵
شکل ۳۱-۵
بهمانند شکل ۳۲- ۵ وارد آدرس ذخیرهسازی Backup شوید و مشاهده خواهید کرد فایلهای Backup بهدرستی ایجاد شدهاند.
شکل ۳۲-۵
برای اینکه متوجه شوید Maintenance Plans چند بار اجرا شده و درست کار کرده یا نه باید بهمانند شکل ۳۳-۵ باید بر روی Plan مورد نظر کلیک راست و گزینهی View History را انتخاب کنید.
شکل ۳۳-۵
در شکل ۳۴-۵ نتیجه کار را مشاهده میکنید، توجه داشته باشید برای اینکه فقط Plan مورد نظر شما نمایش داده شود باید تیک آن را انتخاب کنید.
شکل ۳۴-۵
همانطور که گفتیم عملیات Maintenance Plans توسط سرویس Agent انجام میشود اگر بهمانند شکل ۳۵- ۵ وارد قسمت SQL Server agent شوید میتوانید Plan مورد نظر را مشاهده و آن را اجرا و تنظیمات آن را تغییر دهید.
شکل ۳۵-۵
برای اینکه بتوانیم از Differential Backup استفاده کنیم باید بهمانند شکل ۳۶-۵ یک Back UP Database به لیست اضافه کنید و بر روی آن کلیک راست کنید و گزینهی Edit را انتخاب کنید، یا اینکه دوبار کلیک کنید.
شکل ۳۶-۵
در شکل ۳۷-۵ باید در قسمت Backups Type گزینهی Differential را انتخاب کنید و All Database را هم انتخاب کنید.
شکل ۳۷-۵
بهمانند شکل ۳۸-۵ در تب Destination هم همان آدرس قبلی را انتخاب و تیک گزینهی مورد نظر را انتخاب کنید، در تب Options هم همان گزینههای قبلی را انتخاب و بر روی OK کلیک کنید.
شکل ۳۸-۵
بعد از انجام مراحل بالا میتوانید بهمانند شکل ۳۹-۵ Plan مورد نظر خود را اجرا کنید.
شکل ۳۹-۵
بعد از اجرا این سرویس بهمانند شکل ۴۰-۵ در هر اجرا دو فایل پشتیبان ایجاد میکند که یکی Full است و دیگری Differenctail که حجم آنها مشخصکننده فایل مورد نظر است.
آیا به نظر شما این روش پشتیبانگیری درست است؟
نه این روش کاملاً اشتباه است، بهخاطر اینکه این Plan که ایجاد کردیم هر دو فایل را در هر بار اجرا تولید میکند و این کار بسیار بر حجم فضای ذخیرهسازی تاثیر گذار خواهد بود، برای حل این مشکل بهتر است هر کدام را جداگانه در یک Plan مختلف با زمانبندی مختلف قرار دهیم.
شکل ۴۰-۵
در شکل ۴۱-۵ دو Plan متفاوت ایجاد کردیم و در زمانبندی آنها برای Full Backup هفگی را مشخص کردیم و برای Differenctial روزانه را مشخص کردیم، با این کار هر هفته یک Full و هر روز یک Differenctial گرفته خواهد شد.
شکل ۴۱-۵