PDA

View Full Version : همزمان کردن دو database



saeed_programer
سه شنبه 12 آبان 1383, 15:24 عصر
با سلام فرض کنید یک دیتابیس در داخل سرور وجود دارد که حاوی حجم بالائی از مقالات وتصاویر میباشد.
وهمچنین یک دیتابیس بروی کامپیوتر ماست که کپی از دیتابیس بروی سرور شیکه میباشد
چگونه میتوان به محض تغییرات بروی دیتابیس محلی دیتابیس بروی شبکه را به روز کرد
ویا اصطلاحا همزمان شوند؟

AminSobati
چهارشنبه 13 آبان 1383, 01:24 صبح
دوست عزیزم،
اگر سناریوی شما به همین سادگی باشه، Log Shipping بسیار ایده آل خواهد بود و نیازی ندارید درگیر Replication بشین.

hmm
چهارشنبه 13 آبان 1383, 08:52 صبح
میشه در این مورد هم بیشتر توضیح بدین

AminSobati
چهارشنبه 13 آبان 1383, 11:06 صبح
Log Shipping تشکیل شده از Backup و Restoreهای منظم بین دو SQL Server. به عنوان مثال، سرور A به عنوان سرور اصلی ما ازش استفاده میشه و میخواهیم سرور B به عنوان Stany-by Server آماده باشه تا هر زمان که برای سرور A اتفاقی افتاد، B بتونه در کمترین زمان ممکن به جای A فعال بشه و کارهای اون رو به عهده بگیره.
در مرتبه اول، از A یک Complete backup گرفته میشه و روی B باید Restore بشه. بعد هر مثلا 5 دقیقه یکبار از لوگ A به طور منظم Backup گرفته میشه و روی B هم Restore میشه. البته تمام این کارها رو Wizard از شما سوال میکنه و تنظیم میکنه.
اگر چه امکان Log Shipping به منظور بالا بردن Availability خیلی مورد توجه قرار میگیره، اما به هر حال چون یک سرور دیگه رو مرتبا Update نگه میداره، میتونیم از این سرور در صورت نیاز به جای سرور اصلی استفاده کنیم.
اما یک نکته مهم اینه که سرور B که روی اون Restore انجام میشه، در حالت Loading قرار میگیره و باید موقع Restore شدن، از Stand-by Mode استفاده کرد که سرور در حالت Read Only قرار میگیره و میتونیم اطلاعات داخلش رو ببینیم، در ضمن اینکه مرتبا تحت عمل Restore قرار داره. پس نمیشه اطلاعات رو روی B تغییر داد و فقط میتونیم بخونیم.
دیتابیسی که در سرور A هست، باید از Full Recovery Mode استفاده کنه (قابل تغییر در Database Properties).
برای شروع Wizard، در EM روی Database Maintenance Plan رایت کلیک کنین و New انجام بدین. زمانیکه نام دیتابیس رو انتخاب میکنین، دقت کنین که Ship the transaction logs تیک خورده باشه.
برای Log Shipping فقط یک Database رو در هر مرتبه میتونین انتخاب کنین.
موفق باشید

saeed_programer
چهارشنبه 13 آبان 1383, 12:55 عصر
باسلام
این سیتمی که شما میگید هر بار سربار فراوانی روی سرور اصلی بروی شبکه ایجاد میکنه زیرا در فواصل منظم back up گیری میکنه ولی من نیا دارم هربار که رکوردی وارد شد همان رکرد در server دوم تغییر کند نه کل database

AminSobati
چهارشنبه 13 آبان 1383, 17:46 عصر
سعید جان،
شما میتونین تنظیم کنین که در فواصل طولانی تر این کار انجام بشه. ضمنا چون فقط از Log عمل Backup گیری انجام میشه (نه از کل دیتابیس)، این کار خیلی سریع و بدون Overhead خواهد بود. هر چقدر سرور اصلی شما کمتر تحت ویرایش قرار بگیره، Log اون هم رشد کمتری خواهد داشت و در نتیجه Backup گیری سبک تر خواهد بود.
اگر برین سراغ Replication، به مراتب بار بیشتری روی Server قرار دادین.

vcldeveloper
پنج شنبه 14 آبان 1383, 02:14 صبح
آقای ثباتی،
اگر قرار باشه یه Database اصلی وجود داشته باشه که کل اطلاعات رو نگه داری می کنه و چندین database دیگه با ساختار مشابه روی کامپیوترهای دیگه قرار داشته باشند . ماهیانه اطلاعات سیستم های فرعی به database اصلی وارد بشه (بصورت insert یا update یا حتی delete) چه روشی پیشنهاد می کنید؟
database من 45 تا table داره.

AminSobati
پنج شنبه 14 آبان 1383, 08:36 صبح
علی جان،
در این حالت Replication تنها راه هست. چون چند سرور دارن روی یک منبع مشترک کار میکنند و این، نکات و توجهات بسیاری رو در بر خواهد داشت. Replication برای همین منظور طراحی شده.
به عنوان مثال دو سرور جدا ممکنه یک رکورد رو Update کنن(روی کامپیوتر خودشون). حالا این دو تغییر باید به سرور اصلی منعکس بشه. اینجا Conflict رخ میده که Replication دارای یک Conflict Resolver قدرتمند هست.
و بسیاری نکات دیگه که Replication برای همه اونها راه حلش رو داره...

vcldeveloper
پنج شنبه 14 آبان 1383, 16:09 عصر
مرسی از راهنمایی تون. اما آیا میشه از امکانات Replication با استفاده از کد هم استفاده کرد؟(مثلا با دلفی و دستورات Transact SQL ) یا اینکه این کار حتما باید در Enterprise Maneger خود SQL Server انجام بشه؟

AminSobati
پنج شنبه 14 آبان 1383, 16:37 عصر
برای تمام کارهایی که از طریق EM انجام میدین، Stored Procedure و دستوراتش وجود داره. ساختن Article، تعریف Distributor و غیره...

vcldeveloper
جمعه 15 آبان 1383, 03:26 صبح
مرسی :flower:

AminSobati
جمعه 15 آبان 1383, 19:09 عصر
موفق باشین :)

saeed_programer
یک شنبه 17 آبان 1383, 13:20 عصر
ممنون از نظرات شما