PDA

View Full Version : حرفه ای: update كردن ديتابيس سرور (1) از سرور (2) بدون Down كردن سرور(1)



chatpesar
یک شنبه 14 آذر 1389, 13:14 عصر
اگر بخواهيم بطور دائم ( مثلا با تناوب زماني 15 دقيقه ) سرور SQL شماره يك را كه در Domain-1 قرار دارد با اطلاعات سرور SQL شماره 2 كه در Domain-2 قرار دارد UPDATE كنيم به شرطي كه مجبور نباشيم سرور اول را DOWN كنيم ، چه روشي پيشنهاد مي كنيد ؟

حمیدرضاصادقیان
یک شنبه 14 آذر 1389, 13:50 عصر
سلام.
شما دوراه در پیش رو دارید
یکی استفاده از Log Shipping . یکی استفاده از Replication.
در بحث log shipping از دیتابیس اصلی به صورت log یک Backup تهیه میکنه و در بازه زمانی خاصی روی سرور دوم Restore میکنه.ولی در این حالت دیتابیس دوم همیشه در حالت Standby هست و برای اینکه بااون کار کنید باید از این حالت خارج بشه.
در Replication با توجه به ساختار اطلاعات شما و میزان تراکنشهای شما میشه نوع Replication رو انتخاب کرد و دیتابیس ها رو باهم بروز کرد.

chatpesar
یک شنبه 14 آذر 1389, 17:17 عصر
از توجه و پاسخ شما متشكرم
لطفاً با توجه به اطلاعات كم من در مورد هر كدام توضيح بيشتري بدهيد.
Log Shipping در سطح ديتابيس مي باشد كه اگر اشتباه نكنم وقتي بخواهيم ديتابيس دوم را UpDate كنيم كه از طريق آن ديتابيس اصلي با روش LogShipping بروز شود باز هم سرور مشترك بايد Down شود.
در مورد Replication هم اطلاعات زيادي ندارم و اميدوارم تعداد SqlServer هاي نصب شده و همچنين تعداد ديتابيس هاي روي هركدام را براي من تشريح كنيد تا متوجه روش پيشنهادي شما بشوم.
باز هم از توجه شما متشكرم.

حمیدرضاصادقیان
دوشنبه 15 آذر 1389, 07:57 صبح
سلام.
در بحث log Shipping شما یک job تعریف می کنید و یک سرور دارید که به عنوان سرور Standby هست.
در اون job هر 2 دقیقه یک بار از دیتابیس اصلی شما Log Backup میگیره و همون موقع روی سرور Standby اونو Restore میکنه. در این حالت هیچ نیازی به Down کردن سرور نیست.
فقط شما نمیتونید تا زمانی که سرور دوم فعال نکردید از اون استفاده کنید. در واقع به عنوان یک Database Standby تلقی میشه که هروقت دیتابیس اصلی شما از بین رفت میتونید از اون استفاده کنید.
در Replication شما دو تا دیتابیس روی دو تا سرور مختلف دارید و همزمان میتونید با هردوتا کار کنید.
فرض کنید یک دفتر تهران دارید و یک دفتر شیراز و یک دفتر اصفهان. همه اینها باید اطلاعاتشون باهم بروز باشه فرضا با یک روز اختلاف.
مثلا در دفتر مرکزی ما اطلاعات وارد میکنیم و در دفاتر شیراز و اصفهان ما بحث گزارش گیری داریم.
اینجا از Replication استفاده می کنیم.
در این حالت هم در بازه های خاصی از دیتابیس یک script خاص تهیه میشه و روی سرورهای مختلف اعمال میشه.
در این حالت هم نیازی به Down کردن سرور نیست.

حالا شما باید بفرمائید دقیقا میخواهید چه کاری انجام بدید تا بشه Solution مورد نظر رو انتخاب کرد.
آیا سرور دوم فقط نوعی حالت Standby داره که اگر اولی از کار افتاد بشه از دومی استفاده کرد یا همون حالت دومی هست که باید با هردو دیتابیس هم زمان کارکنند.

chatpesar
دوشنبه 15 آذر 1389, 13:03 عصر
از توضیح کاملتر شما سپاسگزارم . منظور من حالت دوم توضیح شما ، یعنی حالتی است که در آن سرور شماره یک بصورت کامل در شبکه دامین شماره یک مورد استفاده قرار بگیرد و در دامین شماره دو که سرور دیگری از SQL موجود می باشد بصورت 24 ساعته و بدون DOWN شدن از اطلاعات سرور اول در دامین اول UPDATE شود و همچنین بصورت فقط خواندنی برای گزارش گیری ها مورد استفاده قرار گیرد.ارتباط بین سرور اول و سرور دوم بصورت یکطرفه از سرور یک به سرور دو باشد و همچنین سرور دوم بدون DOWN شدن UPDATE شود.با این توضیحات کدام روش مناسب تر می باشد؟

حمیدرضاصادقیان
دوشنبه 15 آذر 1389, 13:12 عصر
خوب با این توضیحات شما باید از روش دوم استفاده کنید.
در اینجا یک دیتابیس شما اطلاعات رو ارسال میکنه و دیتابیس دیگر هم بروز میشه. که میتونند حتی چند دیتابیس در جاهای مختلف باشند.
فقط شما تاچقدر میخواهید اطلاعات بروز باشند؟؟ یعنی بازه بروز رسانی شما چقدر باشد؟ مثلا با 1 ساعت تاخیر یا 1 روز تاخیر و....

chatpesar
دوشنبه 15 آذر 1389, 15:35 عصر
با توجه به حجم دیتابیس موجود ( حدود 4.5 گیگابایت ) حدودا هر 15 دقیقه به نظر مناسب می آید.البته یک سوالی مطرح می شود و آن هم این است که در هر بار UPDATE کردن آیا کل دیتابیس Restore می شود و یا فقط تغییرات انتقال می یابد و Restore می شود که حالت دوم بسیار سریعتر خواهد بود .

حمیدرضاصادقیان
دوشنبه 15 آذر 1389, 16:27 عصر
نه .در هربار بروز رسانی فقط آخرین تغییرات اعمال خواهند شد که حجمش در حدود چند کیلوبایت بیشترنخواهد شد.