در قسمت اول مقالهی SQL Server Replication، ضمن شرح مزایا، اهداف و ویژگیهای SQL Server Replication، مقدمهای از اجزای این تکنولوژی ارائه شد. در این قسمت اجزای تشکیلدهندهی SQL Server Replication از جمله Articleها، Publicationها، دیتابیس Publication، Publisher، Distributor، دیتابیسهای Distribution، Subscriber، Subscriptionها، دیتابیسهای Subscription و Agentهای Replication به صورت کامل مورد بررسی قرار خواهند گرفت.
مفهوم Article در SQL Server Replication
برای هر SQL Serverی که قرار است Replicate شود میباید یک Article تعریف گردد. هر Article با یکSQL Server Object مطابقت دارد. Objectهایی که Replicate میگردند، معمولا جداول، نماها و فرایندهای ذخیره شده هستند.
مشخصات و ویژگیهای یک Article تعیین میکند که آن Article حاوی Object کامل و یا تنها زیرمجموعهی فیلترشده از اجزای آن Object باشد. برای مثال، میتوان یک Article را به صورتی پیکربندی نمود که تنها شامل بعضی از ستونهای یک جدول شود، لازم به ذکر است که با اعمال برخی محدودیتها، میتوان چندین Article را روی یک Object ایجاد نمود.
بررسی مفهوم Publication
یک Publication، مجموعهای از Articleهاست که بعنوان یک واحد کنار هم قرار گرفتهاند. هر Article طوری تعریف شده که دقیقا بخشی از یک Publication باشد. اما میتوان Articleهای متفاوتی را روی یک Object واحد در Publicationهای مجزا تعریف نمود. یک Publication از چندین گزینهی قابلپیکربندی پشتیبانی میکند که این گزینهها به همهی Articleهایش اعمال میشوند. شاید مهمترین گزینه، موردی باشد که به کاربر اجازه میدهد Replication مورد نظر خود را جهت استفاده تعیین نماید.
دیتابیس Publication
هر دیتابیسی که حاوی Objectهای اختصاص دادهشدهای به عنوان Article باشند، یک دیتابیس Publication نامیده میشود. هنگامی که یک Publication روی دیتابیسی راهاندازی میگردد، SQL Server کارهای داخلی آن دیتابیس را اصلاح و چندین Object مرتبط به Replication ایجاد مینماید. یک Publication تنها میتواند حاوی Articleهایی از یک دیتابیس Publication واحد باشد.
Publisher چیست؟
SQL Server Instance که Publication را برای Replication قابلدسترس مینماید، Publisher محسوب میگردد، هرچند خود Publisher نقش فعالی در نصب Replication ندارد. پس از تعریف Publication، تمامی کارهای سنگین و دشوار توسط Distributor و گاهی اوقات Subscriber انجام خواهد شد.
Distributor چیست؟
هر Publisher به یک Distributor واحد متصل است. Distributor یک SQL Server Instance بوده که تغییرات Articleها را روی هر یک از Publisherهای خود شناسایی مینماید. با توجه به نصب Replication، ممکن است Distributor مسئولیت اطلاعرسانی این که یک Article تغییر کرده است را به Subscriberهایی که مشترک یک Publication شدهاند برعهده داشته باشد. اطلاعات در مورد این تغییرات در دیتابیس Distribution ذخیره میشوند، تا وقتی که همهی Subscriberها مطلع شوند یا اینکه دورهی نگهداری (Retention) منقضی گردد. میتوان Distributor را روی یک SQL Server Instance مجزا از Publisher پیکربندی نمود، اما معمولا همان Instance نقش Publisher و Distributor را ایفا مینماید.
دیتابیسهای Distribution
هر Distributor دارای حداقل یک دیتابیس Distribution است. دیتابیس Distribution حاوی چندین Object است که Metadata Replication و همچنین دادههای Replicate شده را ذخیره مینماید. یک Distributor میتواند بیش از یک دیتابیس Distribution را نگه دارد اما تمام Publicationهایی که روی یک Publisher واحد تعریف شدهاند باید از دیتابیس Distribution یکسانی استفاده نمایند.
Subscriber
هر SQL Server Instance که مشترکِ یک Publication است، Subscriber نامیده میشود. Subscriber از طریق آن Publication تغییرات رخ داده بر روی یک Article منتشر شده را دریافت مینماید. یک Subscriber لزوما نقش فعالی در فرایند Replication ایفا نمیکند و با توجه به تنظیماتی که در طول راهاندازی Replication انتخاب میشود، ممکن است Subscriber دادهها را منفعلانه دریافت کند.
Subscriptionها
Subscription همتای Publication است. هر Subscription پیوندی میان یک Publication و یک Subscriber ایجاد مینماید. Subscription شامل دو نوع میگردد:
- Push Subscription
- Pull Subscription
در نوع اول، Distributor به طور مستقیم، دادهها را در دیتابیس Subscriber بروزرسانی میکند اما در مورد دوم، Subscriber مرتبا از Distributor درخواست تایید مینماید که آیا تغییر تازهای در دسترس است یا خیر و سپس دادهها را در خود دیتابیس Subscription بروزرسانی مینماید.
دیتابیسهای Subscription
دیتابیسی که مقصد Subscription Replication است، دیتابیس Subscription نامیده میشود. همانند دیتابیس Publication، SQL Server، دیتابیس Subscription را در طول اولین راهاندازی اصلاح مینماید. آشکارترین تغییر، اضافه شدن چند Object مرتبط با Replication است. هرچند برخلاف دیتابیسهای Publication، از Drop شدن دیتابیس Subscription جلوگیری نمیکند.
Agentهای Replication
فرایندهای Replication توسط مجموعهای از Agentهای Replication انجام میشوند. هر Agent یک برنامهی قابلاجرای مستقل ویندوزی است که مسئولیت بخشی از فرایند انتقال داده را بر عهده دارد. در یک نصب Replication پیشفرض، هر Agent توسط SQL Server Agent Job مختص به خود اجرا میگردد. اکثر این Agentها معمولا روی Distributor اجرا میشوند، هرچند ممکن است بعضی از آنها روی Subscriber اجرا گردند. Publisher تنها زمانی Agentهای Replication را مستقر مینماید که Publisher و Distributor روی Instance یکسانی باشند.
میتوان به جای متکی بودن به SQL Server Agent، هر Agent Replication را به صورت دستی و یا با روش برنامهریزی دیگری اجرا نمود. با این حال، اکثر این رویکردها مزایای اندکی دارند و معمولا عیبیابی را پیچیدهتر میکنند. بخشهای زیر به طور خلاصه هرکدام از انواع Agentهای Replication را معرفی مینمایند.
Snapshot Agent
Snapshot Agent در تمام توپولوژیهای Replication، دادههایی را فراهم مینماید که برای انجام همسانسازیِ ابتدایی دیتابیس Publication با دیتابیس Subscription، مورد استفاده قرار میگیرند. Transactional Replication و Merge Replication، پس از Sync شدن اولیه، برای Sync نگه داشتن دادهها، از Agentهای دیگری استفاده میکنند. برای هر دو توپولوژی، تنها زمانی که همسانسازیِ مجدد درخواست داده شود، Replication دوباره (پس از Sync شدن اولیه) از Snapshot Agent استفاده میکند. اماSnapshot Replication ، از Snapshot Agent به طور اختصاصی برای Replicate کردن دادهها استفاده مینماید. این روش با هر بار کپی کردن تمام دادهها از دیتابیس Publication به دیتابیس Subscription کار میکند.
Log Reader Agent
Log Reader Agent، قادر به خواندن Transaction Log دیتابیس Publication میباشد و اگر تغییراتی در رابطه با Objectهای منتشر شده پیدا کند، آن تغییرات را در دیتابیس Distribution ثبت مینماید و فقطTransactional Replication از Log Reader Agent استفاده میکند.
Distribution Agent
Distribution Agent تغییرات ثبت شده در دیتابیس Distribution را به دیتابیس Subscription اعمال میکند. همانند Log Reader Agent، تنها Transactional Replication است که از Distribution Agent استفاده مینماید.
Merge Agent
Merge Agent تغییرات بین دیتابیس Publication و دیتابیس Subscription را Sync میکند. این Agent هم از پس تغییرات دیتابیس Publication و هم دیتابیس Subscription برمیآید و میتواند آن تغییرات را به صورت Bi-Directionally، همسانسازی نماید. مجموعهای از Triggerها در هر دو دیتابیس از این فرایند پشتیبانی میکنند و تنها Merge Replication از Merge Agent استفاده مینماید.
Queue Reader Agent
Queue Reader Agent برای Replication تراکنشی Bi-Directional مورد استفاده قرار میگیرد.
Jobهای نگهداری Replication
علاوه بر Jobهای SQL Server که Agentهای Replication را اجرا میکنند، یک نصب Replication شامل چند Job اضافه نیز میشود که مسئولیت پاکسازی دادههای قدیمی و Taskهای مانیتورینگ و نگهداری را برعهده دارند.
ـــــــــــــــــــــــــــ
اجزای تشکیل دهنده SQL Server Replication – قسمت اول
اجزای تشکیل دهنده SQL Server Replication – قسمت دوم (پایانی)