راه‌اندازی استندبای‌های محلی و راه دور با استفاده از Data Guard Broker و RedoRoutes در اوراکل

سلام. تو مقاله راه اندازی گارد یاد گرفتیم که چطور broker رو کانفیگ کنیم. در این مقاله، به بررسی نحوه راه‌اندازی و پیکربندی Data Guard در اوراکل با استفاده از Data Guard Broker می‌پردازیم. هدف این است که بار ارسال Redo Logs از دیتابیس اصلی به دیتابیس‌های استندبای راه دور را به حداقل برسانیم و عملیات ارسال داده‌ها را از طریق استندبای محلی انجام دهیم.

فرض کنیم سه دیتابیس داریم:

دیتابیس اصلی orcl

دیتابیس استندبای نزدیک orcl37

دیتابیس استندبای دیتاسنتر دیگر orcl38

تنظیمات broker در حال حاضر به این صورت است:

DGMGRL> show configuration;

Configuration - dg_config

  Protection Mode: MaxPerformance

  Members:

  orcl   - Primary database

    orcl37 - Physical standby database

    orcl38 - Physical standby database

Fast-Start Failover:  Disabled

Configuration Status:

SUCCESS   (status updated 14 seconds ago)

همانطور که می بینید استندبای ها کاملا در زیر هم قرار گرفته اند و این به معنی این است که ارسال از دیتابیس اصلی به هر دوی آنها صورت می گیرد.

در یک سناریوی معمول، شما یک دیتابیس اصلی دارید که به دو دیتابیس استندبای متصل است: یکی در همان دیتاسنتر محلی و دیگری در یک دیتاسنتر راه دور برای اهداف بازیابی در زمان فاجعه (Disaster Recovery). در این مقاله، ما از خاصیت RedoRoutes برای ایجاد یک مسیر انتقال Redo استفاده می‌کنیم که دیتابیس اصلی Redo Logs را به دیتابیس استندبای محلی ارسال کند و سپس دیتابیس استندبای محلی، داده‌ها را به دیتابیس استندبای راه دور ارسال کند.

مراحل پیاده‌سازی

1. تنظیم پارامترهای اولیه در Data Guard Broker

ابتدا با استفاده از Data Guard Broker، پارامترهای اولیه را تنظیم می‌کنیم:

دیتابیس اصلی (Primary Database):

DGMGRL> EDIT DATABASE 'orcl' SET PROPERTY 'RedoRoutes' = '(LOCAL : orcl37 SYNC)';

Property "RedoRoutes" updated

دقت کنیم که کلمه LOCAL یک کلمه رزرو شده هست.

این دستور باعث می‌شود که دیتابیس اصلی تنها به دیتابیس استندبای محلی Redo Logs را ارسال کند.

دیتابیس استندبای محلی (Local Standby Database):

DGMGRL> EDIT DATABASE 'orcl37' SET PROPERTY 'RedoRoutes' = '(orcl : orcl38 ASYNC)';

Property "RedoRoutes" updated

این دستور، دیتابیس استندبای محلی را پیکربندی می‌کند تا داده‌های Redo را که از دیتابیس اصلی دریافت می‌کند، به دیتابیس استندبای راه دور ارسال کند.

2. بررسی پیکربندی در زمان اجرا

پس از انجام پیکربندی، می‌توانید از دستور زیر برای مشاهده وضعیت پیکربندی و بررسی مسیرهای Redo استفاده کنید:

DGMGRL> show configuration;

Configuration - dg_config

  Protection Mode: MaxPerformance

  Members:

  orcl   - Primary database

    orcl37 - Physical standby database

      orcl38 - Physical standby database (receiving current redo)

Fast-Start Failover:  Disabled

Configuration Status:

SUCCESS   (status updated 51 seconds ago)

بر خلاف بار اولی که این دستور را زدیم، این بار بصورت آبشاری قرار گرفته که نشان دهنده روند ارسال redo ها می باشد.

تنظیمات پیشرفته برای گارد راه دور

1. پارامترهای مرتبط با Retry و Timeout

برای پایداری بیشتر انتقال داده‌ها به دیتابیس راه دور، می‌توانید پارامترهای زیر را تنظیم کنید:

تنظیم تعداد تکرار در صورت خطا (Retry):

DGMGRL> EDIT DATABASE 'orcl37' SET PROPERTY 'MaxFailure' = '3';

این پارامتر تعداد دفعاتی را تعیین می‌کند که در صورت بروز خطا در ارسال داده‌ها، سیستم تلاش خواهد کرد تا دوباره ارسال کند.

تنظیم زمان انتظار شبکه (Net Timeout):

DGMGRL> EDIT DATABASE 'orcl37' SET PROPERTY 'NetTimeout' = '30';

این پارامتر زمان انتظار برای یک تلاش ارسال را تعیین می‌کند.

2. استفاده از فشرده‌سازی (Compression)

اگر پهنای باند شبکه محدود است، استفاده از فشرده‌سازی برای کاهش حجم داده‌های ارسالی مفید خواهد بود:

DGMGRL> EDIT DATABASE 'orcl37' SET PROPERTY 'RedoCompression' = 'ENABLE';

این پارامتر فشرده‌سازی داده‌های Redo را در زمان ارسال فعال می‌کند.

نتیجه‌گیری

با استفاده از این تنظیمات، شما می‌توانید بار ارسال Redo Logs از دیتابیس اصلی به دیتابیس استندبای راه دور را به حداقل برسانید و عملیات را به صورت بهینه‌تری مدیریت کنید. این روش همچنین به افزایش پایداری و کاهش زمان تأخیر در ارسال داده‌ها کمک می‌کند.

این مقاله شما را با یکی از روش‌های پیشرفته در پیکربندی Data Guard آشنا کرد. با این تنظیمات، می‌توانید به سادگی بار انتقال داده‌ها را مدیریت کنید و از عملکرد بهتر سیستم خود اطمینان حاصل کنید.