پیش نیازها، محدودیت ها و پیشنهادات لازم برای قرینه سازی پایگاه داده (Database Mirroring)
این مبحث پیش نیازها و شرایط لازم برای راه اندازی و پیکربندی قرینه سازی از پایگاه داده (database mirroring) را تشریح می کند.
فرمت ذخیره ی بر روی دیسک SQL Server در هر دو محیط 64 و 32 بیتی یکسان است. بنابراین، یک session قرینه سازی از پایگاه داده این امکان را دارد که نمونه های سرور مستقر در محیط 32 بیتی و 64 بیتی را با هم ترکیب کند.
در این درس همچنین به مباحث زیر خواهیم پرداخت:
- پیش نیازها
- محدودیت ها
- پیشنهاداتی برای پیکربندی سرورهای همراه (partner)
- پیشنهادات لازم برای نصب و متسقر کردن database mirroring
پیش نیازها
برای اینکه یک session قرینه سازی برقرار و راه اندازی شود، سرویس دهنده های همراه (partner) و نیز سرور witness ،البته در صورت موجود بودن آن، باید بر روی نسخه ی یکسان از SQL Server اجرا شوند.
دو سرویس دهنده ی همراه نام برده در مبحث پیشین (mirror که قرینه یا جانشین خوانده می شود و principal یا اصلی) باید از ویرایش یکسان SQL Server بهره بگیرند. سرور witness (در صورت وجود)، می تواند از هر نسخه ای از SQL Server که از قابلیت database
mirroring (قرینه سازی و گرفت رونوشت از پایگاه داده) پشتیبانی می کند، استفاده کند.
شما می توانید نمونه های سرور خود را که در یک session با هم partner هستند (مکمل یکدیگر می باشند)، به یک نسخه ی جدیدتر از SQL Server بروز رسانی کنید.
پایگاه داده ی مورد نظر باید از مدل full-recovery (بازیابی کامل) استفاده کند. مدل های bulk-logged recovery از قابلیت قرینه سازی (mirroring) پشتیبانی نمی کنند. بنابراین عملیات انبوه و دسته جمعی (bulk operation:یک امکان که اجازه ی تایید ثبت یک مجموعه ی بزرگ برای مثال تا 1000 سطر را در تنها یک تراکنش به شما می دهد) همیشه به طور کامل برای پایگاه داده ی قرینه (mirror) ثبت می شوند.
از وجود فضای کافی بر روی دیسک سرور جانشین (mirror) ویژه ی پایگاه داده ی قرینه اطمینان حاصل کنید.
به هنگام ایجاد پایگاه داده ی قرینه بر روی سرور جانشین، مطمئن شوید که فایل پشتیبان (backup) از پایگاه داده ی اصلی (principal) را با همان اسم پایگاه داده و با WITH NORECOVERY تعریف کرده و بازیابی (restore) کنید. همچنین تمامی فایل های پشتیبانی که از گزارشات (log) پس از گرفتن backup از پایگاه داده تهیه کرده اید باید باز با همان WITH NORECOVERY اعمال شوند.
بسیار مهم *
چنانچه قرینه سازی از پایگاه داده (database mirroring) پیش از اینکه شما بتوانید آن را بازآغازی (restart) کنید به هر دلیلی متوقف شد، در آن صورت هر log backup ای که پس از آن از پایگاه داده ی اصلی تهیه کرده اید باید به پایگاه داده ی قرینه (mirror) نیز اعمال کنید.
محدودیت ها
توجه داشته باشید که تنها قرینه سازی از پایگاه های داده ی user امکان پذیر می باشد. بنابراین نمی توان از پایگاه های داده ی master، msdb، tempdb یا model قرینه ساخت (رونوشت یا mirror گرفت).
امکان تغییر اسم یا نام گذاری مجدد پایگاه داده ی قرینه در طی session database mirroring (قرینه سازی از پایگاه داده) وجود ندارد. نمی توان یک فایل گروهی (groupfile) FILESTREAM بر روی سرور اصلی (principal) وجود ندارد. امکان پیکربندی database mirroring
برای پایگاه های داده ای که دربردارنده ی فایل های گروهی FILESTREAM هستند وجود ندارد.
در یک سیستم 32 بیتی، قرینه سازی پایگاه داده این توانایی را دارد که تا سقف 10 پایگاه داده به ازای هر نمونه ی سرور (server instance) را پشتیبانی کند. این امر به خاطر تعداد worker thread هایی است که توسط هر session مورد استفاده قرار می گیرد.
تراکنش های cross-database (پایگاه داده ی ضرب در یا متقابل) و distributed (توزیع شده) هیچ یک از قابلیت قرینه سازی (mirroring) پشتیبانی نمی کنند.
پیشنهاداتی برای پیکربندی سرورهای همراه (partner)
Partner ها باید بر روی سیستم هایی که قابل مقایسه (comparable) بوده و نیز می توانند بار های کاری همسان را مدیریت کنند، اجرا (run) شوند.
نکته: چنانچه قصد دارید از حالت high-safety همراه با automatic failover استفاده کنید، باید دقت داشته باشید که بار کاری (load) معمول بر روی هر failover partner کمتر از 50 درصد پردازنده (cpu) را درگیر کند. چنانچه بار کاری (work load) در دست بیش از
حد از پردازنده کار بکشد (آن را overload کند)، failover partner (سروری که قرار است جانشین باشد) دیگر قادر نخواهد بود از دیگر نمونه های سرور که در session مشارکت دارند، ping بگیرد. این امر خود منجر به رخداد یک failover کاملا غیر ضروری می شود. اگر نمی توانید
میزان استفاده از پردازنده را کمتر از 50 درصد نگه دارید، به شما توصیه می کنیم یا از حالت امنیت بهینه (high-safety mode) بدون automatic failover و یا از حالت کارایی بهینه (high-performance) استفاده کنید.
در صورت امکان، مسیر (path) قرار گیری پایگاه داده ی قرینه باید با مسیر قرارگیری پایگاه داده ی اصلی یکسان باشد. اگر لازم است که file layout ها متفاوت باشند، در آن صورت باید گزینه ی MOVE را در دستور RESTORE بگنجانید. به عنوان مثال، می توان به زمانی اشاره کرد که پایگاه داده ی
اصلی بر روی درایو 'F:' قرار دارد، اما در اصل درایوی به نام F: در سیستم جانشین (mirror system) وجود ندارد.
بسیار مهم *
چنانچه که فایل های پایگاه داده را به هنگام ایجاد پایگاه داده ی قرینه انتقال دهید، ممکن است دیگر در آینده نتوانید بدون اینکه mirroring یا قرینه سازی به حالت تعلیق درآید، فایل های جدید به پایگاه داده اضافه کنید.
تمامی نمونه های سرور که در یک session مشارکت دارند باید از یک صفحه ی کد الگو (master code page) و collationاستفاده کنند. وجود هر گونه تفاوت ممکن است در راه اندازی قرینه سازی (mirroring) اخلال ایجاد کند.
در صورت تمایل، می توانید مدت زمانی که طول می کشد یک سیستم را failover کنید (همان پایگاه داده را در سیستم جانشین بالا بیاوریم) را برآورد کرده تا مطمئن شوید پیکر بندی جاری سیستم قادر به ارائه ی کارایی مطلوب و دلخواه است یا خیر.
به منظور دستیابی به کارایی بهینه، کافی است از یک آداپتور شبکه اختصاصی (کارت رابط شبکه) برای قرینه سازی (mirroring) بهره بگیرید.
ما در رابطه با استفاده از امنیت و قابل اعتماد بودن شبکه ی گسترده (WAN) برای قرینه سازی در حالت امنیت بهینه (high-safety mode) هیچ پیشنهادی نداریم. چنانچه قصد دارید از حالت امنیت بهینه در یک شبکه ی گسترده استفاده کنید، توصیه می شود به نحوه ی افزودن witness به session
مورد نظر دقت لازم را داشته باشید زیرا که در چنین شرایطی احتمال رخداد automatic failover ناخواسته بسیار بالا است.
پیشنهادات لازم برای نصب و متسقر کردن database mirroring
دستیابی به کارایی بهینه در قرینه سازی پایگاه داده، با بهره گیری از عملیات ناهمزمان (asynch operations) امکان پذیر می باشد. session ای که از عملیات همزمان استفاده می کند ممکن است در مواردی که بار کاری آن (workload) حجم زیادی از اطلاعات گزارش تراکنش ایجاد می کند، با
سرعت پایین و کارایی نسبتا ضعیف مواجه شود.
در محیط های آزمایشی، بهترین گزینه امتحان کردن تمامی حالات عملیاتی است تا از این طریق دریابیم در کدام حالت قرینه سازی بهترین کارایی را از خود ارائه می دهد. با این حال، پیش از اینکه قرینه سازی (mirroring) را در یک محیطproduction مستقر (deploy) کنید، توصیه می کنیم با نحوه ی
کارکرد شبکه در دنیای واقع آشنایی کسب کنید.
حالت امنیت بهینه به همراه automatic failover تنها ویژه ی شبکه های high-service تعبیه شده که یا دارای اتصال اختصاصی هستند و یا از پیکربندی شبکه ی نسبتا ساده ای بهره می گیرند که در نتیجه احتمال رخداد خرابی و از کار افتادگی شبکه را به حداقل می رساند. چنین محیط با کیفیتی برای
حالت امنیت بهینه به همراه automatic failover ضروری بوده و برای تمامی session های قرینه سازی اکیدا توصیه می شود. لازم به ذکر است که هر دو حالت عملیاتی (high-safety و high-performance) بدون automatic failure در مقایسه بسیار کمتر از قابلیت اطمینان
شبکه (network reliability) تاثیر می پذیرند.
از این رو، توصیه می کنیم ویژه ی محیط های تولیدی (production environment) از رهنمودهای زیر برای مستقر ساختن و نصب mirroring پیروی کنید:
سیستم را در حالت اجرایی ناهمزمان و کارایی بهینه (high-performance) بالا بیاورید. این حالت کمترین حساسیت را به محیط شبکه نشان داده و بهترین گزینه ی پیکربندی را برای کاوش و آشنایی با چگونگی عملکرد قرینه سازی فراهم می کند. توصیه می کنیم سیستم خود را در حالت ناهمزمان بالا آورده و تا
زمانی که مطمئن نشدید پهنای باند شما قابلیت پشتیبانی از قرینه سازی را داشته و با نحوه ی راه اندازی و پیکربندی آن آشنا نشده اید و از میزان کارایی حالت ناهمزمان در محیط خود آگاهی پیدا نکرده اید، همواره از همین حالت استفاده کنید.
بسیار مهم *
در طول فرایند تست، توصیه می کنیم که همیشه بر session های خود نظارت کافی را داشته تا بدین وسیله تمام خطاهایی را که ممکن است منجر به خرابی و ایجاد اخلال در قرینه سازی شود، پیدا کرده و رفع سازید.
پس از اینکه مطمئن شدید عملیات ناهمزمان تمامی نیازهای مربوط به لایه ی business را برطرف می سازد، می توانید از عملیات همزمان برای بهبود امنیت و نیز محافظت از داده های خود بهره بگیرید. هنگامی که می خواهید بررسی کنید آیا قرینه سازی همزمان (synchronous mirroring) در محیط
مورد نظر شما چگونه عمل می کند، توصیه می کنیم ابتدا حالت امنیت بهینه را بدون automatic failover امتحان کنید. هدف اصلی از اجرای این تست، پی بردن به میزان و نحوه تاثیرگذاری عملیات همزمان بر کارایی پایگاه داده است.
توصیه می کنیم تا زمانی که مطمئن نشده اید حالت امنیت بهینه بدون automatic failover نیازهای مربوط به لایه ی business را بر طرف ساخته و نیز خطاهای مرتبط با شبکه باعث ایجاد خرابی نمی شود، automatic failure را فعال نسازید.