آموزش SQL Server Always On

SQL Server Always On Availability Groups

در دنیای امروز Data و داده ها که در قالب بانک های اطلاعاتی و یا فایل های گوناگون ذخیره می شوند از اهمیت ویژه ای برخوردار است. انواع DBMS ها و بانک های اطلاعاتی با روش های گوناگون در رقابتی نزدیک سعی در ارائه بهترین قابلیت ها و ربودن گوی سبقت از سایر رقبا هستند. یکی از نیازمندی های بسیار مهم DB Admin ها، قابلیت هایی است که جزء راهکارهای HA (High Availability Solutions) محسوب می شوند. به طور کلی در دسترس بودن همیشکی اطلاعات از نیازهای همه سازمان های کوچک و بزرگ است که شرکت های ازائه دهنده این محصولات راهکارهای متفاوتی را جهت پاسخ به این نیاز فراهم کرده اند. در این مقاله قصد داریم به یکی از قابلیت های بسیار کاربردی Sql Server  با عنوان Always On Availability Groups پرداخته و تا حد امکان به آموزش SQL Server Always On  و روش راه اندازی آن بپردازیم.

از  این پس و جهت سهولت در نگارش به جای ذکر کامل عنوان Always On Availability Groups از واژه معادل و خلاصه شده AOAG استفاده خواهیم کرد.

جهت آشنایی هرچه بیشتر با AOAG توجه شما را به گزیده ای از مقاله ارائه شده توسط Microsoft و ترجمه آن با ذکر لینک مطلب جلب می کنم.

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?view=sql-server-2017

The Always On availability groups feature is a high-availability and disaster-recovery solution that provides an enterprise-level alternative to database mirroring. Introduced in SQL Server 2012 (11.x), Always On availability groups maximizes the availability of a set of user databases for an enterprise. An availability group supports a failover environment for a discrete set of user databases, known as availability databases, that fail over together. An availability group supports a set of read-write primary databases and one to eight sets of corresponding secondary databases. Optionally, secondary databases can be made available for read-only access and/or some backup operations.

An availability group fails over at the level of an availability replica. Failovers are not caused by database issues such as a database becoming suspect due to a loss of a data file, deletion of a database, or corruption of a transaction log.

AOAG قابلیتی در high-availability و راهکار بازیابی فاجعه که ترجمه تحت الفظی disaster-recovery است – که جایگزین مناسبی در سطح enterprise برای database mirroring است. این قابلیت در SQL Server 2012 معرفی شد. AOAG دسترسی کاربران به مجموعه بانک های اطلاعاتی را در شرکت به حداکثر می رساند. AOAG از محیط های failover برای دیتابیس های کاربران به صورت مجزا پشتیانی می کند که به عنوان دیتابیس های دردسترس شناخته شده که همزمان دچار مشکل شده اند. AG از مجموعه ای از پایگاه داده های اصلی به صورت خواندن و نوشتن و همچنین یک به هشت مجموعه از پایگاه داده های ثانوی مرتبط پشتیبانی می کند. به صورت اختیاری، پایگاه داده های ثانویه می تواند به صورت فقط خواندنی و یا برای برخی از عملیات پشتیبان گیری در دسترس باشد.

AG در سطح availability replica ناموفق است. اتفاقاتی که از مشکلات پایگاه داده باشد مانند suspect شدن بانک اطلاعاتی و از دست رفتن اطلاعات در آن زمان، از دست رفتن فایل بانک اطلاعاتی و یا حذف کل پایگاه داده و یا صدمه خوردن log file شامل AG نمی شوند.

مزایا Always On Availability Groups :

AOAG شامل مجموعه ای از امکانات و مزایا است که در مجموع باعث بهینه شدن در دسترس بودن بانک های اطلاعاتی و استفاده بهینه از منابع است. موارد کلیدی عبارتند از :

  • به طور همزمان از بیش از 9 Availability Replica پشتیبانی می کند. Availability Replica یا همان نسخه قابل دسترس نمونه ای از availability group است که توسط یک instance از SQL Server میزبانی می شود و از هریک از پایگاه های داده در دسترس یا availability database که متعلق به AG باشند کپی تهیه می گردد.
  • از دو شیوه جایگزین زیر پشتیبانی می کند:
    1. Asynchronous-commit mode
    2. Synchronous-commit mode

برای کسب اطلاعات بیشتر در این خصوص به مقاله Microsoft با عنوان  Availability Modes (Always On Availability Groups) مراجعه کنید.

  • از انواع مختلفی از availability-group failover پشتیبانی می کند که بدلیل ترجمه نامناسب به ذکر نام اصلی آنها توجه نمایید:

automatic failover, planned manual failover (generally referred as simply “manual failover”), and forced manual failover (generally referred as simply “forced failover”). For more information, see Failover and Failover Modes (Always On Availability Groups).

  • شما را قادر می سازد یک ماکت موجود در دسترس را برای پشتیبانی از هر دو یا یکی از ویژگی های ثانویه فعال زیر تنظیم کنید:
    1. دسترسی به اتصال فقط خواندنی که ارتباطات فقط خواندنی را به ماکت وصل می کند برای دسترسی و خواندن پایگاه داده ها زمانی که آن را به عنوان یک کپی ثانویه اجرا می کند.
    2. انجام عملیات پشتیبان گیری در پایگاه داده های خود هنگامی که آن را به عنوان یک کپی ثانویه اجرا می کند.
  • پشتیبانی از تعمیر خودکار page جهت محافظت در مقابل خرابی های page ها.
  • پشتیبانی از رمزگذاری و فشرده سازی، که امکان انتقال امن و با کارایی بالای اطلاعات را فراهم می کند.
  • مجموعه ای از ابزارهای یکپارچه برای ساده سازی استقرار و مدیریت availability groups را فراهم می کند که عباتند از:
    1. T-SQL برای ساخت و مدیریت availability groups.
    2. ابزار SQL Server Management Studio مشتمل بر:
      1. Wizard ایجاد Availability Groups.
      2. Wizard اضافه کردن یک پایگاه داده به Availability Groups.
    3. امکان استفاده از PowerShell

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

همانطور که می دانید SQL Server  گزینه های بسیار خوبی را در زمینه HA ارائه می دهد. ولی ما به دنبال گزینه ای هستیم که برای ما این امکان را فراهم نماید که بتوانیم از پایگاه داده ثانویه (Secondary database) استفاده کنیم بدون آن که Read-only و یا در restoring mode باشد. برای رسیدن به این موضوع راه حال استفاده از قابلیت SQL Server Always On High Availability Groups است.

قابلیت های جدید Always On قابلیت های clustering و mirroring را با هم ادغام کرده است، ولی همچنان به شما اجازه می دهد که با پایگاه داده ثانویه در تعامل باشید و این قابلیتی است که clustering و mirroring به شما اجازه این کار را نمی دادند.

 نصب و راه اندازی قدم به قدم:

  • پیش نیازهای راه اندازی SQL Server Always On Availability Group عبارتند از:
  • حصول اطمینان از این که سیستم Domain Controller نباشد.
  • مطمئن باشیم سیستم عامل که هرکدام از کامپیوترها Windows Server 2012 و یا بالاتر باشد.
  • حصول اطمینان از این که هر کامپیوتر شاخه ای از WSFC یا Windows Server Failover Clustering باشد.
  • محیط نصب مورد نیاز :
  • OS – Windows 2012 R2
  • SQL Server – SQL Server 2016 Enterprise Edition
  • نصب SQL Server

برای راه اندازی این سرویس نیاز به نصب نسخه Standard برای کیه نودها داریم. و می بایست در هنگام نصب SQL Server از گزینه  “New SQL Server stand-alone installation…”  استفاده شود.

  • نصب و راه اندازی Failover Cluster

برای شروع نیاز داریم قابلیت های Windows Failover Cluster را به همه نودها اضافه کنیم. جهت انجام این مهم مراحل زیر را انجام می دهیم:

نحوه نصب سرویس Fail-over Cluster  بر روی ویندوز سرور:

Open the Server Manager  => select Add roles and features.

پس از زدن دکه install سرویس fail over cluster نصب میشود و پس از آن به سراغ تنظیمات این سرویس خواهیم رفت:

 

توجه: انتظار می رود که Cluster Validation Wizard پیام های هشدار متعددی را نمایش دهد، خصوصا در صورتی که از Shared Storage استفاده نگردد. به غیر از این حالت در صورتی که با پیغام خطای دیگری مواجه شدید نیاز به رفع آنها قبل از ایجاد Windows Server Cluster Failover خورده دارید.

در مرحله بعد نوبت به پیکربندی تنظیمات Cluster Quorum می باشد

یکربندی تنظیمات Cluster Quorum

Quorum یک دیتابیس برای تنظیمات cluster است و در محل ذخیره سازی مشترک و یا همان Shared Storage قرار می گیرد و می بایست در دسترس کلیه نود ها باشد.

تنظیم کردن SQL Server 2016 AlwaysOn Availability Groups

3 دیدگاه در “آموزش SQL Server Always On

  • مهندس سلام.
    من این تنظیمات رو انجام دادم. فقط یه سوالی پیش میاد
    ما باید در نهایت دسترسی اپلیکیشنی که قراره از دیتابیس استفاده کنه رو به کدوم نود فعال کنیم؟
    من دسترسی رو به آی پی کلاستر دادم ولی ارور read only بودن دیتابیس رو میده

  • درود
    خوبین
    سناریو زیر رو در نظر بگیرید : ( تو این سناریو always on مشکل منو حل میکنه ؟ )
    دوتا دیتابیس و سایت هست :
    -یه سایت و دیتابیس روی سیستم اموزشگاه هست
    -یه سایت و دیتابیس روی سرور هست
    1: حالا اگه اینترنت قطع شد سایتی که رو سیستم اموزشگاه هست باید با دیتابیس لوکال یا همون دیتابیس اموزشگاه کار کنه ( این رو من چجوری تو این شبکه محلی میتونم تنظیم کنم ؟؟)
    2: وقتی اینترنت وصل شد سایتی که روی سرور هست باید با دیتابیس سرور کار کنه (این رو من چجوری تو این شبکه محلی میتونم تنظیم کنم ؟؟) و البته باید دیتابیس لوکال بلافاصله با دیتابیس سرور سینک بشه
    3: این دیتابیس ها باید همیشه باهم سینک باشن مثلا هر 30 دقیقه یکبار باهم سینک بشن

  • بسیار عالی و کاربردی بود.
    سپاس از زحمات و وقتی که اختصاص دادید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *