mirroring روشی برای افزایش دسترس پذیری پایگاه داده های sql server میباشد. در این روش دو کپی از یک پایگاه داده بر روی دو سرور داده ی مستقل ایجاد و نشستی میان دو پایگاه داده از دو سرور داده مزبور برقرار می کند.
میرورینگ[1] روشی برای افزایش دسترس پذیری[2] پایگاه داده های sql server میباشد. در این روش دو کپی از یک پایگاه داده بر روی دو سرور داده ی مستقل ایجاد و نشستی میان دو پایگاه داده از دو سرور داده مزبور برقرار می کند. در میرورینگ دو پایگاه داده داریم که نقش های پایگاه داده اصلی و پایگاه داده میرور را بر عهده دارند. هر گاه خرابی در پایگاه داده اصلی رخ دهد، پایگاه داده میرور می تواند به عنوان پایگاه داده اصلی خدمت کند. به عبارتی با ایجاد هر مشکل در پایگاه داده سیستم، سیستم به پایگاه داده میرور انتقال خواهد یافت.
در هر لحظه یک پایگاه داده، اصلی است و دیگری میرور. هر یک از عملیات صورت گرفته در پایگاه اصلی، دوباره و در کوتاه ترین زمان ممکن بر روی پایگاه میرور انجام می گیرد. این عمل با ارسال استریمی از لاگ های تراکنش به پایگاه داده میرور و اعمال لاگ ها بر آن صورت می گیرد. در sql server 2008 لاگ ها قبل از ارسال به میرور فشرده می شوند.
مزیت های استفاده از mirroring
· افزایش دسترس پذیری پایگاه داده
در صورت رخداد حادثه، با استفاده از مود high-safety با امکان automatic failover ، نسخه Mirror پایگاه داده (بدون از دست رفتن داده) بالا می آید.
· افزایش حفاظت از داده
در هر کدام از مودهای high-safety و یا high-performance، Mirroring یک تکرار کامل و یا تقریبا کامل از نسخه اصلی پایگاه داده را فراهم می کند.
همچنین در صورتی که یک صفحه داده از پایگاه داده قابل خواندن نباشد، می توان آن را با صفحه متناظر از mirror جایگزین کرد. بدین منظور باید قابلیت ترمیم خودکار صفحه[3] فعال گردد.
مدهای عملیاتی
دو نوع نشست سنکرون و آسنکرون برای انجام میرورینگ برقرار می گردد. در حالت آسنکرون تراکنش های سمت پایگاه داده اصلی به سرعت و بدون اینکه منتظر نوشته شدن لاگ ها در سمت پایگاه داده میرور شوند، به اتمام می رسند. در حالت سنکرون تراکنش های سمت پایگاه داده اصلی وقتی به اتمام میرسند که تراکنش های سمت پایگاه داده میرور نیز به اتمام رسیده باشند. در این حالت تاخیر ناشی از انتظار برای اتمام تراکنش های پایگاه داده میرور وجود خواهد داشت.
با توجه به دو نوع نشست سنکرون و آسنکرون، در کل دو حالت عملیاتی high safety و high performance پشتیبانی میشوند. در مود high safety نشست سنکرون برقرار می گردد. پس از برقراری نشست و سنکرون شدن هر دو پایگاه داده، تراکنش در هر دو به اتمام می رسد. این مود با تاخیر ناشی از سنکرون شدن پایگاه های داده همراه است.
در مود high performance نشست آسنکرون برقرار می گردد. در این نشست پایگاه داده اصلی منتظر پایگاه داده میرور نمیماند. ممکن است میرور کمی از پایگاه داده اصلی عقب بماند. این مسئله هنگامی اهمیت پیدا خواهد کرد که بار پایگاه داده اصلی و یا میرور زیاد باشد، و ممکن است منجر به از دست رفتن داده ها و نابرابری دو پایگاه داده گردد.
بنابراین مود high safety اطمینان در درستی داده ها در ازای تاخیر در عملیات و مود high performance سرعت عملیات بالاتر در ازای ریسک از دست دادن داده ها را فراهم خواهند کرد. هر دو مود تنها دو سرور یکی شامل پایگاه داده اصلی و دیگری شامل پایگاه داده میرور را شامل می شوند.
مود high safety در دو نوع failoveer دستی و اتوماتیک پشتیبانی می گردد. در مورد failover اتوماتیک در صورت رخداد مشکل، امکان انتقال اتوماتیک از پایگاه داده اصلی به پایگاه داده میرور وجود خواهد داشت. پیاده سازی این مود نیازمند سرور داده سومی به نام witness می باشد. سرور witness فعال بودن پایگاه داده اصلی را بررسی می کند. و در صورت غیرفعال بودن آن، سیستم را به پایگاه داده میرور انتقال می دهد.
بنابراین سه مود high safety without automatic failover، high safety with automatic failover و high performance خواهیم داشت.
نشست های همزمان
در هر نمونه از سرور داده می توان چندین نشست میرورینگ همزمان داشت. به عنوان مثال یک نمونه می تواند در یک نشست نقش پایگاه داده اصلی و در نشستی دیگر نقش پایگاه داده میرور را داشته باشد.
[1] Mirroring
[2] High availability
[3] automatic page repair