هدف در این مجموعه از مقالات معرفی و بررسی همهجانبهی نرمافزار Oracle Data Guard میباشد. در بخش اول این مجموعه تحت عنوان «معرفی Oracle Data Guard»، علاوه بر بررسی کلی این نرمافزار، پیکربندی آن شامل دیتابیس اصلی، دیتابیسهای Standby ، Instanceهای Far Sync و Zero Data Loss Recovery Appliance شرح داده شد و مثالی از این پیکربندی نیز ارائه گردید. در این قسمت نیز توضیح داده میشود که Oracle Data Guard چگونه انتقال دادههای Redo، اِعمال دادههای Redo و تغییرات در Roleهای دیتابیس را مدیریت مینماید. همچنین انواع حالتهای حفاظتی Oracle Data Guard شامل حالت حداکثر دسترسپذیری، حالت حداکثر عملکرد و حالت حداکثر حفاظت شرح داده میشوند.
سرویسهای Oracle Data Guard
سرویس انتقال Redo یا به عبارتی Redo Transport Services انتقال خودکار دادههای Redo را از دیتابیس تولیدی به یک یا چند مقصد کنترل مینمایند و دارای قابلیتهای زیر میباشد:
- انتقال دادههای Redo از سیستم اصلی به سیستمهای Standby در پیکربندی.
- مدیریت فرایند برطرف نمودن هر شکافی، در فایلهای Redo Log آرشیو شده که به علت خرابی شبکه ایجاد شدهاند.
- شناسایی خودکار فایلهای Redo Log آرشیوشده، از بین رفته یا آسیب دیده، بر روی یک سیستم Standby و بازیابی خودکار فایلهای Redo Log آرشیوشدهی جایگزین از دیتابیس اصلی یا یک دیتابیس Standby دیگر.
سرویس Apply
دادههای Redo منتقلشده از دیتابیس اصلی در Standby Redo Log روی دیتابیس Standby نوشته میشود. سرویس Apply به طور خودکار دادههای Redo را روی دیتابیس Standby اعمال میکنند تا سازگاری با دیتابیس اصلی حفظ شود. همچنین دسترسی Read-Only به دادهها را فراهم مینماید.
تفاوت اصلی بین دیتابیسهای Standby فیزیکی و منطقی، شیوهای است که سرویسApply از طریق آن، دادههای Redo آرشیوشده را اعمال مینمایند.
- Oracle Data Guard برای دیتابیسهای Standby فیزیکی، از تکنولوژی Redo Apply استفاده میکند که با استفاده از تکنیکهای بازیابی استانداردِ یک دیتابیس اوراکل، به گونهای که در شکل زیر نمایش داده شده، دادههای Redo را روی دیتابیس Standby اعمال مینماید.
Oracle Data Guard برای دیتابیسهای Standby منطقی، از تکنولوژی SQL Apply استفاده میکند که در ابتدا دادههای Redo دریافتشده را تبدیل به Statementهای SQL کرده و سپس Statementهای SQL ایجاد شده را بهگونهای که در شکل زیر نمایش داده شده است، بر روی دیتابیس Standby منطقی اجرا مینماید.
بررسی فرآیند انتقال Role
یک دیتابیس اوراکل، در یکی از دو نقش Primary یا Standby فعالیت میکند. با استفاده از Oracle Data Guard میتوان Role یک دیتابیس را با استفاده از عملیات Switchover یا Failover، تغییر داد.
عملیات Switchover تغییر Role بین دیتابیس Primary و یکی از دیتابیسهای Standby است. این عملیات تضمین میکند که هیچ دادهای از دست نرود. این تغییر معمولا برای نگهداری برنامهریزیشدهی سیستم اصلی انجام میگردد. در طول یک عملیات Switchover، Role دیتابیس اصلی به Standby و Role دیتابیس Standby، به اصلی تغییر پیدا میکند.
عملیات Failover زمانی انجام میشود که دیتابیس اصلی در دسترس نباشد. این عملیات تنها در صورت خرابی یک دیتابیس اصلی انجام میگردد و نتیجهی آن تغییر دیتابیس Standby به یک Role اصلی است. مدیر دیتابیس میتواند Oracle Data Guard را تنظیم نماید تا اطمینان حاصل شود که دادهای از دست نخواهد رفت.
روشهای محافظت از Oracle Data Guard
در برخی سازمانها، حفظ دادهها بر هرچیز دیگری ارجحیت دارد و در برخی دیگر ممکن است که در مقایسه با هرگونه از دست رفتن دادهها در نتیجهی بُروز چندین خرابی (که احتمالش اندک است)، دسترسپذیری دیتابیس در اولویت باشد. در نهایت بعضی از برنامههای کاربردی همواره نیازمند حداکثر عملکرد دیتابیس هستند و در نتیجه، در صورت خرابی یکی از اجزا، میتوانند از دست رفتن مقدار اندکی داده را تحمل نمایند. در زیر به بررسی سه حالت مجزای حافظت از دادهها می پردازیم.
حداکثر دسترسپذیری
روش حفاظتیِ Maximum Availability ، بالاترین سطح محافظت از دادهها را که بدون آسیب رساندن به دسترسپذیری دیتابیس Primary ممکن است، فراهم مینماید. با Oracle Data Guard آن تراکنشها فقط در زمانی انجام میپذیرد که تمام دادههای Redo مورد نیاز برای بازیابی تراکنشها در حافظه دریافت شده و یا در Standby Redo Log روی حداقل یک دیتابیس Standby هماهنگ (Synchronized) نوشته شده باشند (بستگی به پیکربندی دارد). اگر دیتابیس اصلی نتواند Redo Stream خود را در حداقل یک دیتابیس Standby یی که Sync شده است بنویسد، تا زمانی که دوباره بتواند Redo Stream خود را در یک دیتابیس Standby هماهنگ بنویسد، طوری عمل میکند که گویی در حالت حداکثر عملکرد قرار دارد تا دسترسپذیری دیتابیس اولیه را حفظ نماید.
این روش تضمین میکند که هیچ دادهای از دست نمیرود، مگر در صورت رخ دادن خرابیهای Double Fault خاصی مانند خرابی یک دیتابیس اصلی پس از خرابی دیتابیس Standby.
حداکثر عملکرد
حالت حفاظتی پیشفرض، روش Maximum Performance است. این روش بالاترین سطح محافظت از داده را که بدون تاثیر گذاشتن روی عملکرد دیتابیس اصلی ممکن است، فراهم مینماید. این امر با صدور اجازهی انجام تراکنشها به محض نوشتهشدن تمام دادههای Redo ایجادشده توسط آن تراکنشها بر روی Log آنلاین، ممکن میشود. دادههای Redo همچنین بر روی یک یا چند دیتابیس Standby نوشته میشوند، اما این امر در رابطه با Transaction Commitment به صورت غیرهماهنگ (Asynchronous) انجام میشود، در نتیجه تاخیرها در نوشتن دادههای Redo در دیتابیس(های) Standby، تاثیری بر عملکرد دیتابیس اصلی نمیگذارند.
این حالت، حفاظت دادهی کمتری را نسبت به حالت حداکثر دسترسپذیری فراهم مینماید و حداقل تاثیر را بر عملکرد دیتابیس اصلی دارد.
حداکثر حفاظت
روش حفاظتی Maximum Protection، تضمین مینماید که در صورت خرابی دیتابیس اصلی، هیچ دادهای از دست نخواهد رفت. برای فراهم کردن این سطح از حفاظت، دادههای Redo مورد نیاز برای بازیابی یک تراکنش، باید پیش از اینکه تراکنش انجام شود هم در Redo Log آنلاین و هم در Standby Redo Log روی حداقل یک دیتابیس Standby هماهنگ، نوشته شوند. برای اطمینان حاصل نمودن از اینکه دادهای از دست نمیرود، دیتابیس اصلی اگر نتواند Redo Stream خود را بر روی حداقل یک دیتابیس Standby هماهنگ بنویسد، به جای ادامه دادن پردازش، تراکنشها خاموش میشود.
هر سه حالت حفاظتی نیازمند این امر هستند که قابلیتهای انتقال Redo خاص برای فرستادن دادههای Redo به حداقل یک دیتابیس Standby، مورد استفاده قرار گیرند.
ـــــــــــــــــــــ
همه چیز درباره Oracle Data Guard – قسمت اول
همه چیز درباره Oracle Data Guard – قسمت دوم
همه چیز درباره Oracle Data Guard – قسمت سوم (پایانی)