نمای AlwaysOn Clusters در بخش پایش پایگاه داده (Database Monitoring) به شما این امکان را میدهد که مشکلات همگامسازی دادهها را شناسایی کرده، رفتار گروههای دسترسی بالا را درک کنید و گلوگاههای کلاستر را در گروههای دسترسی بالا (Availability Groups) در SQL Server مشخص نمایید.
دسترسی به نمای AlwaysOn Clusters:
برای دسترسی به این بخش، به مسیر APM > Database Monitoring > Databases بروید و گزینه AlwaysOn Clusters را انتخاب کنید.
SQL Server Always On چیست؟
شرکتها همواره به دنبال روشهایی برای محافظت از دادههای خود در SQL Server و دستیابی به دسترسیپذیری بالا (High Availability) هستند. اینجاست که ویژگی Always On در SQL Server وارد عمل میشود.
SQL Server Always On راهکار دسترسیپذیری بالا و بازیابی پس از فاجعه (High Availability & Disaster Recovery) است که برای اولین بار در نسخهی ۲۰۱۲ SQL Server معرفی شد.
گروههای دسترسی بالا (Availability Groups) در Always On باعث افزایش دسترسیپذیری مجموعهای از پایگاههای داده کاربران برای سازمانها میشوند.
Always On بهعنوان جایگزینی برای Database Mirroring شناخته میشود و در واقع یک محیط failover برای پایگاههای داده فراهم میکند تا در صورت بروز خطا بهصورت گروهی جابهجا شوند.
چرا به SQL Server نیاز داریم و در کجا میتوان آن را پیادهسازی کرد؟
بسیاری از سازمانها برای تصمیمگیریهای آگاهانه به دادهها تکیه دارند، و برای اینکه این دادهها ارزشمند باشند، باید بهصورت امن و کارآمد ذخیره شوند.
SQL Server یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) قدرتمند، قابل اعتماد و ایمن است که در سطح وسیعی توسط سازمانها برای ذخیره و مدیریت دادهها مورد استفاده قرار میگیرد.
پس چه نیازی به SQL Server داریم و در کجا باید آن را بهکار برد؟
در گام اول، باید به نیاز به SQL Server نگاه کنیم:
SQL Server یک RDBMS قدرتمند و قابل اعتماد است که برای سازمانهایی در هر اندازه مناسب بوده و توانایی مقیاسپذیری برای حجمهای بالای داده را دارد. رابط کاربری ساده، امنیت داخلی، رمزنگاری، و قابلیتهای پشتیبانگیری و بازیابی از دادهها از دیگر ویژگیهای آن است. همچنین از زبانهای مختلفی از جمله T-SQL پشتیبانی میکند که آن را برای کاربردهای گوناگون مناسب میسازد.
حال بیایید بررسی کنیم SQL Server را کجا باید پیادهسازی کرد:
استقرار در سرور داخلی (On-Premises): رایجترین روش پیادهسازی، استفاده از سرور داخلی است که مدیریت دادهها را بهصورت درونسازمانی با انعطافپذیری و مقیاسپذیری مناسب فراهم میکند.
میزبانی در فضای ابری (Cloud): با توجه به صرفهجویی در هزینه و مقیاسپذیری بالا، میزبانی ابری محبوب شده است، بهویژه برای سازمانهایی که زیرساخت لازم برای سرور داخلی را ندارند.
محیط ترکیبی (Hybrid): ترکیب منابع داخلی و ابری، انعطافپذیری و امنیت بیشتری ارائه میدهد و مناسب کسبوکارهایی است که نیاز به میزبانی متنوع دارند.
در مجموع، SQL Server یک پایگاه داده انعطافپذیر است که قابلیت اجرا در محیط داخلی، ابری یا ترکیبی را دارد. قابلیتهای گسترده و ویژگیهای امنیتی آن را به گزینهای ایدهآل برای طیف وسیعی از کاربردها تبدیل کردهاند.
بررسی سلامت نودها (Nodes)
با استفاده از نمای AlwaysOn Clusters میتوانید سلامت گروههای دسترسی بالای SQL Server را ارزیابی کنید. در این صفحه، وضعیت فعلی نودهای اصلی (Primary – P) و ثانویه (Secondary – S) به صورت تصویری و با کدهای رنگی نمایش داده میشود.
برای شناسایی گروههایی که با مشکل مواجه هستند، میتوانید از فیلترهای وضعیت استفاده کنید تا گروههایی را که در حال «بازگشت به حالت قبل» (Reverting)، «عدم همگامسازی» (Not Synchronizing) و غیره هستند، مشاهده کنید. همچنین میتوانید با استفاده از نمودارهای سری زمانی، فعالیتهای غیرعادی عملکرد را بر اساس معیارهایی مانند لاگ (log)، زمان بازپخش (redo)، و تأخیر نود ثانویه (secondary lag time) شناسایی نمایید.

تحلیل معیارهای تاریخی
برای ارزیابی اینکه وضعیتهای همگامسازی نودها در طول زمان چگونه تغییر کردهاند، یک گروه دسترسی بالا (Availability Group) را انتخاب کنید تا پانل جزئیات در کنار صفحه باز شود. نمودار Historical Synchronization States در بالای این پانل، وضعیت هر نود را در بازه زمانی انتخابشده نمایش میدهد.
در تب Secondary Nodes میتوانید اطلاعات بیشتری درباره نودهای ثانویه و پایگاههای داده مرتبط با آنها مشاهده کنید. همچنین، با استفاده از نمودارهای سری زمانی در تب Metrics، میتوانید رفتارهای غیرعادی در نودها و پایگاههای داده را بر اساس معیارهایی مانند view send، redo و lag شناسایی کنید.

آیا SQL Server برای کاربران مزیت دارد؟
قطعاً بله. SQL Server مزایای بسیاری برای کاربران فراهم میکند که آن را به گزینهای جذاب برای کسبوکارهایی در هر اندازه تبدیل کرده است. بیایید برخی از مزایای کلیدی آن را بررسی کنیم:
ویژگیهای جامع پایگاه داده:
SQL Server از stored procedures، triggers و views پشتیبانی میکند که به کاربران امکان سفارشیسازی پایگاه داده را میدهد. همچنین از فناوریهای سنتی و مدرنی مانند XML پشتیبانی میکند که ذخیرهسازی و جستجوی دادهها را آسان میسازد.عملکرد بالا:
SQL Server برای ارائه نتایج سریع در پرسوجوها بهینهسازی شده است و دسترسی سریع و کارآمد به دادهها را تضمین میکند. پشتیبانی از فناوریهای مبتنی بر حافظه (in-memory) و دیسک، انعطافپذیری و مقیاسپذیری بالایی را ارائه میدهد.ویژگیهای امنیتی:
با امکانات امنیتی در سطح سازمانی مانند رمزنگاری، احراز هویت و کنترل دسترسی، محیطی امن برای دادهها فراهم میسازد. Database Mirroring نیز بهعنوان راهکاری برای پشتیبانگیری در مواقع بروز خرابی سیستم عمل میکند.مناسب برای توسعهدهندگان:
طراحی SQL Server بهگونهای است که کار را برای توسعهدهندگان آسان میسازد؛ ابزارها و امکاناتی برای ایجاد و نگهداری پایگاه داده در اختیار دارد و زبان پرسوجوی کاربرپسند آن روند توسعه را سادهتر میکند.مقرونبهصرفه:
SQL Server گزینههای قیمتگذاری مقرونبهصرفهای در نسخههای داخلی و مبتنی بر ابر ارائه میدهد. قابلیت مقیاسپذیری و انعطافپذیری آن به کسبوکارها این امکان را میدهد تا سیستم پایگاه داده خود را متناسب با نیاز ارتقا دهند.
گروه دسترسی بالا (SQL Server Always On Availability Group) چیست؟
Availability Group محیطی تکرارشده برای مجموعهای مشخص از پایگاههای داده کاربران فراهم میکند که به آنها Availability Databases گفته میشود. این محیط شامل یک مجموعه پایگاه داده اصلی (Primary) با قابلیت خواندن/نوشتن و مجموعههایی از پایگاه دادههای ثانویه (Secondary) است. یک Availability Group میتواند برای دسترسی بالا (HA) یا مقیاسپذیری در خواندن (read-scale) پیکربندی شود. در مدل HA، تمام پایگاههای داده بهصورت همزمان failover میشوند.
Always On Availability Group یکی از ویژگیهای دسترسیپذیری بالا و بازیابی پس از فاجعه است که نیازی به استفاده از فضای ذخیرهسازی مشترک (shared disk) ندارد. توجه داشته باشید که این قابلیت فقط در نسخه Enterprise SQL Server پشتیبانی میشود.
ذخیرهسازی نامتقارن (Asymmetric storage) به دیسکی اشاره دارد که فقط توسط بخشی از نودهای یک کلاستر به اشتراک گذاشته میشود. این قابلیت امکان راهاندازی disc witness را در سایتی فراهم میسازد که تنها توسط نودهای آن سایت، معمولاً سایت اصلی، قابل دسترسی است.
راهاندازی نمونه SQL Server برای فعالسازی Always On Availability Groups
فعالسازی قابلیت Always On
اطمینان حاصل کنید که ویژگی Always On برای تمام نمونههای SQL Server که قرار است عضو Availability Group شوند، فعال شده است. همچنین، سرور میزبان باید عضو یک کلاستر Windows Server Failover Clustering (WSFC) باشد.ایجاد Endpoint برای Mirroring
اگر قبلاً ایجاد نشده، یک mirroring endpoint ایجاد کنید. هر نمونه سرور باید دارای یک endpoint اختصاصی باشد تا بتواند با نمونههای دیگر SQL Server در Availability Group ارتباط برقرار کند
ایجاد و پیکربندی Availability Group جدید
ایجاد Availability Group:
آن را روی نمونه SQL Server میزبان پایگاههای داده موردنظر ایجاد کنید. در حداقل حالت، یک Replica اولیه روی همان سرور تعریف میشود. میتوان تا ۴ Replica ثانویه نیز مشخص کرد. پیشنهاد میشود یک Availability Group Listener نیز راهاندازی شود.
نکته: تمام نمونههای SQL Server میزبان Replicaهای یک Availability Group باید روی نودهای مجزای یک کلاستر WSFC قرار داشته باشند (مگر در حین مهاجرت که ممکن است بهطور موقت در دو کلاستر باشند).
مراحل تنظیم Replica ثانویه:
اتصال Replicaهای ثانویه:
به هر نمونه SQL Server میزبان Replica ثانویه متصل شوید و آن را به Availability Group اضافه کنید.پیکربندی پایگاههای داده ثانویه:
نسخه پشتیبان پایگاههای داده اصلی را در سرورهای میزبان Replica ثانویه بازیابی کنید. از گزینهRESTORE WITH NORECOVERYاستفاده کنید.اتصال پایگاههای داده ثانویه به گروه:
پایگاههای داده بازیابیشده را به Availability Group متصل کنید تا فرآیند همگامسازی با پایگاه داده اصلی آغاز شود.راهاندازی Availability Group Listener:
اگر هنگام ایجاد اولیه راهاندازی نشده، اکنون آن را پیکربندی کنید.ارائه DNS Listener به توسعهدهندگان:
توسعهدهندگان باید نام میزبان DNS مربوط به Listener را در رشته اتصال خود استفاده کنند تا درخواستها به Availability Group هدایت شوند.پیکربندی محل اجرای پشتیبانها:
برای فعالسازی پشتیبانگیری از پایگاههای داده ثانویه، اسکریپتی برای این کار تهیه کرده و بر اساس اولویتهای پشتیبانگیری، آن را اجرا کنید.
اجزای مختلف Always On Availability Group:
Availability Databases (پایگاههای داده در دسترس)
Availability Replicas (نسخههای تکراری)
Availability Modes (حالتهای در دسترس بودن)
Availability Databases
برای اینکه یک پایگاه داده قابل افزودن به Availability Group باشد، باید بهصورت آنلاین، قابلنوشتن، و روی نمونه SQL Server میزبان Replica اصلی قرار داشته باشد. پس از افزودن، پایگاه داده بهعنوان Primary شناخته میشود و در دسترس کاربران خواهد بود. پایگاههای داده ثانویه تا زمانی که نسخه پشتیبان از پایگاه اصلی روی سرور ثانویه بازیابی نشود، وجود ندارند. پایگاه داده ثانویه تا زمان اتصال به Availability Group در حالت RESTORING باقی میماند.
پس از اتصال پایگاه داده ثانویه به Availability Group، وضعیت آن به ONLINE تغییر کرده و فرآیند همگامسازی دادهها (Data Synchronization) با پایگاه داده اصلی آغاز میشود.
در این فرآیند، رکوردهای لاگ تراکنشها از Primary به Secondary منتقل میشوند تا نسخه ثانویه بهروزرسانی شود.
نسخههای تکراری در دسترس (Availability Replicas)
هر Availability Group شامل ۲ یا چند Replica (نسخهی تکراری) است.
این Replicaها باید روی نودهای جداگانه در یک WSFC (کلاستر ویندوز) قرار داشته باشند.
هر Replica میتواند Primary (خواندن/نوشتن) یا Secondary (فقط خواندنی) باشد.
هر SQL Server فقط یک Replica برای هر Availability Group میزبانی میکند، ولی میتواند عضو چند گروه باشد.
حالتهای در دسترس بودن (Availability Modes)
دو حالت اصلی وجود دارد:
Asynchronous-commit (ثبت ناهمگام)
Replica اصلی منتظر تایید Replica ثانویه نمیماند.
تأخیر کمتر، ولی احتمال از دست رفتن دادهها در صورت بروز failover وجود دارد.
Synchronous-commit (ثبت همگام) (در متن نبود اما برای کامل بودن اشاره میشود)
Replica اصلی فقط بعد از تأیید نوشتن لاگ روی Replica ثانویه، تراکنش را نهایی میکند.
امنتر ولی با تأخیر بیشتر در تراکنشها.
نتیجهگیری:
Always On SQL Server یک راهکار عالی برای دسترسپذیری بالا و بازیابی از بحران است که با ایجاد محیطهای Failover برای پایگاههای داده، اطمینان حاصل میکند که دادهها همیشه در دسترس باشند.
در دنیای مدرن که دادهها به طور گسترده در اپلیکیشنها و پایگاهدادهها پراکنده هستند، تجمیع و تجزیهوتحلیل دادهها برای ارزیابی عملکرد کسبوکار بسیار ضروری است. اما نظارت مستمر بر جریانهای داده میتواند منابع زیادی را مصرف کند.
برای حل این مشکل، میتوان از پلتفرمهای خودکار انتقال دادهها استفاده کرد که فرآیندهای ETL و انتقال داده را تسهیل میکند.












