SQL Server Mirroring-میرورینگ SQL-دسترس‌پذیری بالا-بازیابی فوری دیتابیس-High-Safety-High-Performance-Database Mirroring-Failover-ابزار مانیتورینگ SQL

SQL Server Mirroring مکانیزمی در سطح دیتابیس است که با نگهداری یک نسخه همگام یا ناهمگام از دیتابیس اصلی (Principal) روی سرور پشتیبان (Mirror)، امکان Failover سریع و کاهش downtime را فراهم می‌کند. در این مقاله، همه آنچه درباره Mirroring نیاز دارید از مفاهیم پایه تا پیاده‌سازی قدم‌به‌قدم، مسائل فنی، چالش‌ها و ابزارهای مانیتورینگ بررسی می‌شود.

انواع Mirroring

High-Safety Mode با Failover دستی

  • تراکنش‌ها به‌صورت همگام (Synchronous) روی هر دو سرور Principal و Mirror کامیت می‌شوند.
  • کارایی اندکی کاهش می‌یابد اما تضمین می‌شود هیچ داده‌ای از دست نرود.
  • Failover به‌صورت دستی با دستور ALTER DATABASE … SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS انجام می‌شود.

High-Safety Mode با Failover اتوماتیک

  • مشابه حالت قبلی با قابلیت همگام‌سازی کامل.
  • با اضافه کردن یک Witness، زمانی که Principal از دسترس خارج شود، Mirror به‌صورت خودکار جایگزین می‌شود.

High-Performance Mode (Asynchronous)

  • تراکنش پس از نوشتن در لاگ روی Principal کامیت می‌شود و لاگ‌ها به‌صورت ناهمگام به Mirror ارسال می‌شوند.
  • امکان از دست رفتن داده‌های نهایی وجود دارد اما تأثیر کمتری بر کارایی دارد.
  • فقط در نسخه Enterprise در دسترس است.

موارد استفاده و عدم استفاده

  • موارد استفاده
    • نیاز به حداقل downtime و بازیابی سریع
    • حفظ نسخه Hot Standby برای دیتابیس‌های حیاتی
    • انجام Rolling Upgrade با حداقل اختلال
  • موارد عدم استفاده
    • نیاز به Scale-Out خواندن روی نسخه پشتیبان
    • همزمان Mirror کردن چندین دیتابیس
    • محیط‌هایی که توصیه به استفاده از Always On Availability Groups است

مزایا و معایب

ویژگیمزایامعایب
افزایش دسترس‌پذیریFailover خودکار/دستی با حداقل downtimeفقط یک Mirror به ازای هر دیتابیس
یکپارچگی داده‌هاهمگام‌سازی کامل در High-Safetyافزایش حجم لاگ و نیاز به Full Recovery
امنیت در انتقالپشتیبانی از رمزنگاری و استفاده از Endpoint امناندکی تأخیر در حالت همگام (Latency)
سادگی پیاده‌سازی با SSMSراه‌اندازی و مانیتورینگ آسانمنسوخ شدن تدریجی؛ توصیه مایکروسافت: Availability Groups

تفاوت با سایر راهکارهای HA

راهکار HAسطح پشتیبانیهمگام بودن تراکنشFailover اتوماتیکمحدودیت‌ها
Failover ClusteringInstance-Levelندارددارداشتراک‌گذاری Storage، هزینه بالا
Log ShippingDatabase-Levelندارددستیتأخیر در ارسال لاگ
MirroringDatabase-Levelانتخابیاختیاری (Witness)یک Mirror، نیاز به Full Recovery
Always On Availability GroupDatabase-Levelداردداردفقط Enterprise، پیچیدگی پیکربندی

معماری داخلی و فرآیند همگام‌سازی

SQL Server Mirroring-میرورینگ SQL-دسترس‌پذیری بالا-بازیابی فوری دیتابیس-High-Safety-High-Performance-Database Mirroring-Failover-ابزار مانیتورینگ SQL

 

اجزای اصلی

  • Principal Server: دیتابیس اصلی
  • Mirror Server: نسخه پشتیبان با امکان NORECOVERY
  • Witness Server: فقط در High-Safety اتوماتیک برای تصمیم‌گیری در مورد Failover

جریان کار Mirroring

  1. کاربر تراکنش را روی Principal انجام می‌دهد.
  2. لاگ تراکنش پس از کامیت روی Principal به Mirror ارسال می‌شود.
  3. در حالت همگام، Mirror لاگ را روی دیسک ذخیره کرده و تأیید می‌کند.
  4. تراکنش در Principal تکمیل می‌شود و در Mirror آماده Apply است.

صف‌های همگام‌سازی

  • Send Queue: لاگ‌های در انتظار ارسال
  • Redo Queue: لاگ‌های دریافتی در انتظار Apply

امنیت در Mirroring

  • ارتباط از طریق Database Mirroring Endpoint و پورت TCP (پیش‌فرض ۵۰۲۲)
  • پشتیبانی از Encryption روی Endpoint
  • نیاز به ایجاد Login با دسترسی CONNECT روی هر Endpoint

پیاده‌سازی Mirroring: Step by Step

۱- ایجاد Endpoint روی Principal و Mirror

-- روی Principal
CREATE ENDPOINT [Mirroring]
  STATE = STARTED
  AS TCP (LISTENER_PORT = 5022)
  FOR DATABASE_MIRRORING (ROLE = PARTNER);
GO

-- روی Mirror
CREATE ENDPOINT [Mirroring]
  STATE = STARTED
  AS TCP (LISTENER_PORT = 5022)
  FOR DATABASE_MIRRORING (ROLE = PARTNER);
GO

۲- بکاپ و ری‌استور با NORECOVERY

-- روی Principal
ALTER DATABASE [TestDB] SET RECOVERY FULL;
BACKUP DATABASE [TestDB] TO DISK = N'\\Backup\TestDB.bak';
BACKUP LOG [TestDB] TO DISK = N'\\Backup\TestDB.trn';
GO

-- روی Mirror
RESTORE DATABASE [TestDB]
  FROM DISK = N'\\Backup\TestDB.bak'
  WITH NORECOVERY;

RESTORE LOG [TestDB]
  FROM DISK = N'\\Backup\TestDB.trn'
  WITH NORECOVERY;
GO

۳- تنظیم Partner و شروع Mirroring

-- روی Mirror
ALTER DATABASE [TestDB]
  SET PARTNER = 'TCP://PrincipalServer:5022';

-- روی Principal
ALTER DATABASE [TestDB]
  SET PARTNER = 'TCP://MirrorServer:5022';
GO

-- برای حالت Asynchronous
ALTER DATABASE [TestDB]
  SET PARTNER SAFETY OFF;
GO

چالش‌های رایج در پیاده‌سازی Mirroring

  • خطای اتصال (Error 1418): تنظیم اشتباه Endpoint یا مجوزهای ناقص
  • همگام‌سازی متوقف (SUSPENDED/DISCONNECTED): مشکلات شبکه یا فشار منابع
  • Latency بالا: Send Queue و Redo Queue طولانی
  • فشار منابع: افزایش CPU و I/O در حالت همگام
  • محدودیت Mirror تکی و نبود Read-Only
  • پیچیدگی در Failover دستی و خطر از دست رفتن داده
  • اشتباه در مراحل Backup/Restore اولیه

ابزارهای مانیتورینگ Mirroring

ابزارهای داخلی SQL Server

  • SQL Server Management Studio (SSMS): مشاهده وضعیت، Failover دستی
  • Activity Monitor: بررسی بار و قفل‌ها
  • DMVs (sys.database_mirroring): کوئری مانیتورینگ
  • Extended Events: ردیابی خطاها و قطع ارتباط

پیشنهاد مطالعه: SSMS ۲۲ چیست؟ بررسی کامل جدیدترین نسخه SQL Server Management Studio

دیگر ابزارهای موجود

ابزارویژگی‌ها
Redgate SQL Monitorداشبورد گرافیکی، هشدارهای لحظه‌ای
Idera SQL Diagnostic Managerتحلیل منابع، هشدارهای پیشگیرانه
SolarWinds Database Performanceیادگیری ماشینی برای ناهنجاری‌ها، میان‌پلتفرم
SentryOne SQL Sentryشناسایی گلوگاه‌ها، مدیریت منابع در محیط‌های بزرگ

سوالات متداول (FAQ)

۱. Mirroring چیست و چه تفاوتی با Replication دارد؟
Mirroring همگام‌سازی در سطح لاگ فیزیکی است و نسخه یکسانی از دیتابیس اصلی ارائه می‌دهد. Replication تغییرات منطقی را منتقل می‌کند.

۲. محدودیت‌های اصلی چیست؟
فقط یک Mirror به ازای هر دیتابیس، نیاز به Full Recovery، عدم پشتیبانی از خواندن روی Mirror.

۳. چه زمانی از Mirroring استفاده کنیم؟
دیتابیس‌های حیاتی که نیاز به بازیابی سریع دارند و Scale-Out خواندن اهمیت ندارد.

۴. اگر Principal قطع شود چه اتفاقی می‌افتد؟
در High-Safety اتوماتیک با Witness، Failover خودکار رخ می‌دهد. در دیگر حالات باید Failover دستی انجام شود.

تماس و مشاوره با لاندا

  • راه‌اندازی Database Mirroring بدون تجربه و دانش عمیق می‌تواند منجر به خطاهای پرهزینه شود.
    با خدمات لاندا می‌توانید:
  • Mirroring را به صورت ایمن و بهینه پیاده‌سازی کنید.
  • از ابزارهای مانیتورینگ  پیشرفته برای تشخیص مشکلات استفاده کنید.
  • در کنار Mirroring، گزینه‌های نوین مثل Always On را هم بررسی کنید.

برای شروع، همین الان با کارشناسان لاندا در تماس  باشید.

نظری داده نشده

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

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