Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Настройка и конфигуриране на репликация на SQL Server

Репликацията на SQL Server е една от функциите за синхронизиране на данни, която се използва за копиране и разпространение на обекти на база данни на SQL Server и данни между базите данни, разположени в същия екземпляр на SQL Server или в различни екземпляри и да ги синхронизира между тези бази данни, за да ги поддържа в последователен състояние.

Компоненти за репликация на SQL сървър

Репликацията на SQL Server се състои от следните основни компоненти:

  • Статии :Таблицата на базата данни, съхранените процедури или изгледи, които се считат за основна единица на репликацията на SQL Server.
  • Дистрибутор :Екземплярът на SQL Server, който съдържа Разпространение база данни, която съхранява метаданните и историята на репликацията. Имайте предвид, че Издателят може да бъде възложен само на един Дистрибутор, но Дистрибуторът може да обслужва множество Издатели.
  • Издател :Екземплярът на SQL Server, който съдържа изходната база данни и прави данните достъпни за разпространение до другите местоположения.
  • Абонат :Инстанцията на SQL Server, която получава данните за репликация на SQL от издателя(ите) и ги прилага към целевата база данни и предава промените в данните обратно на издателя в някои типове репликация.
  • Агент за моментна снимка на репликация :Този агент е отговорен за първоначалната синхронизация във всички типове репликация, която предоставя на абоната пълно копие на статиите от базата данни на издателя.
  • Агент за четене на журнали :Този агент се използва за непрекъснато репликиране на транзакциите от издателя към абоната в транзакционната репликация, като чете регистъра на транзакциите на изходната база данни.
  • Агент по разпространение :Този агент се използва за прилагане на първоначалната моментна снимка към целевата база данни и проследяване и прилагане на непрекъснатите промени в данните към целевата база данни. Този агент се използва само с репликации на транзакции и моментни снимки.
  • Агент за сливане :Този агент е отговорен за копирането на промените от абоната към издателя, след което копира всички промени от издателя към абоната и по двата начина. Този агент се използва само с репликация за сливане.

Типове репликация на SQL сървър

SQL Server ни предоставя различни типове репликация, които могат да се използват за разпространение на данни, въз основа на изискванията за синхронизиране на данни. Всички типове SQL репликация започват първоначалната синхронизация между издателя и абоната чрез копиране на моментна снимка на целите данни от издателя към абоната. Тези типове репликация на SQL Server включват:

  • Репликация на транзакции :При този тип репликация всички промени, които се извършват от страната на издателя, ще бъдат доставени и приложени директно към страната на абоната. Пример за репликация на транзакции е сценарият за интегриране на данни между различни сайтове.
  • Репликация на моментна снимка :При този тип репликация, моментна снимка се взема от издателя и се прилага към абоната веднъж, без да се разпределят непрекъснатите промени след моментната снимка, до настъпване на следващото синхронизиране, при което нова моментна снимка ще бъде копирана и приложена към абоната отново.
  • Репликация при сливане :При този тип репликация промените могат да се извършват и синхронизират както от страната на издателя, така и от страната на абоната и да се синхронизират, когато абонатът е свързан към мрежата. Пример за използването на Merge Replication е обменът на данни между потребителите на приложението Point of Sale.
  • Репликация от партньор към партньор :Специален тип репликация на транзакции, при която издателят разпределя промените в данните на множество абонати едновременно.
  • Двупосочна репликация :Друг специален тип транзакционна репликация, при която и двата сървъра действат като издател и абонат и обменят данни помежду си.

Изисквания за репликация на SQL сървър

Преди да настроим и конфигурираме сайта за репликация на SQL, трябва да се уверим, че са проверени следните точки:

  • Компонентът за репликация на SQL Server е инсталиран във всички участващи сървъри, издател, абонат и дистрибутор. Това трябва да бъде инсталирано по време на инсталирането на екземпляр на SQL Server или добавено към съществуващия екземпляр на SQL по-късно, като се използва съветника за инсталиране на SQL Server, както е посочено по-долу:
  • Има достатъчно място на сървърите за създаване на моментна снимка, публикуваните данни на базата данни в абоната и нарастването на регистрационния файл на транзакциите на базата данни на издателя.
  • Агентът на SQL Server е готов и работи, за да могат агентите за репликации на SQL сървър да могат да създават свързаните задачи на SQL агент и заданията да се изпълняват без проблем.
  • Има достатъчна мрежова честотна лента между участващите екземпляри на SQL Server.
  • Екземплярите издател, дистрибутор и абонат могат да се свързват един с друг и TCP портовете, които тези SQL екземпляри слушат, се отварят в правилата на защитната стена. С други думи, ние можем да се свържем с всеки SQL екземпляр от другите екземпляри без проблем с мрежата или свързаността.
  • Статиите в базата данни на издателите, които ще бъдат репликирани, трябва да имат предварително дефинирано ограничение за първичен ключ, за да се поддържа уникалността на данните.
  • Акаунтът, който ще бъде използван за създаване на сайта за репликация и стартиране на агентите за репликация, трябва да бъде поне член на ролята на фиксираната база данни db_owner както в базите данни издател, дистрибутор и абонат, в допълнение към разрешението за четене и запис на папката за моментни снимки.

Първи стъпки

В тази статия ще покажем как да използваме типа Transactional Replication, за да репликирате таблиците на база данни AdventureWorks2017 между две инстанции на SQL Server; SQL1 екземпляр, който ще действа като дистрибутор и издател, и SQL2 екземпляр, който ще действа като абонат.

Транзакционната репликация на SQL Server ще бъде конфигурирана в три стъпки:

  • Конфигуриране на дистрибутора.
  • Конфигуриране на издателя.
  • Конфигуриране на абоната

Нека обсъдим тези стъпки подробно.

Конфигуриране на дистрибутора

За да конфигурирате дистрибутора, свържете се с „SQL1 ” Екземпляр на SQL Server, който ще действа като дистрибутор, който е същият екземпляр на издател в нашия пример тук, прегледайте възела за репликация в SSMS Object Explorer, щракнете с десния бутон върху Репликация възел и изберете Конфигуриране на разпространение … опция, както е показано по-долу:

Първият прозорец, който ще се покаже в съветника за конфигуриране на разпространение, е началният съветник, който ще обобщи списъка с действия, които ще бъдат извършени в този съветник. Кликнете върху Напред за да продължите:

В следващия прозорец ще бъдете помолени да изберете коя инстанция на SQL Server ще действа като дистрибутор. Той ви предоставя опцията да изберете текущия екземпляр на SQL Server като дистрибутор и да създадете базата данни на системата за разпространение на този екземпляр или да посочите друг екземпляр на SQL Server, който да се използва като дистрибутор. В този сценарий ще използваме текущия SQL1 екземпляр като дистрибутор. Изберете опцията, която отговаря на вашия план за проектиране, след което щракнете върху Напред за да продължите:

Тъй като услугата SQL Server Agent играе жизненоважна роля в процеса на репликация на SQL Server, където ще бъде създадено задание за агент на SQL Server за всеки агент за репликация, се препоръчва да промените режима на стартиране, ако услугата SQL Server Agent от Ръчно (по подразбиране ) да бъде Автоматично. Така че ще работи автоматично при рестартиране на SQL Server, без да има риск да забравите да го стартирате ръчно. Този съветник ви предоставя възможността да променяте автоматично режима на стартиране на услугата на агент на SQL Server, като се има предвид, че акаунтът на услугата на SQL Server има администраторски права на този сървър, за да извърши това действие. В нашия случай ще извършим тази промяна ръчно. Кликнете върху Напред за да продължите:

След това съветникът ще ви помоли да посочите папката, където ще бъде създадена първоначалната моментна снимка за синхронизиране. Посочете папка в дисковото устройство, в която има достатъчно място, след което щракнете върху Напред за да продължите:

В следващия прозорец ще бъдете помолени да посочите името на базата данни за разпространение и местоположението, където да съхранявате данните и регистрационните файлове за тази база данни. Посочете вашето персонализирано име и местоположение или запазете настройките по подразбиране, след което щракнете върху Напред за да продължите:

След това трябва да изберете списъка с екземпляри на SQL Server, които ще действат като издатели и ще съхраняват метаданните му в тази база данни за разпространение. Ако имате предварително дефинирана топология, добавете всички кандидати за издатели, след което щракнете върху Напред за да продължите:

В следващия прозорец изберете действията, които ще бъдат извършени от този съветник, дали да конфигурирате директно дистрибуцията, да генерирате скрипт файл за споменатите стъпки за конфигуриране или и двете. В нашия сценарий ще конфигурираме разпределението директно. Кликнете върху Напред за да продължите:

В прозореца Завършване на съветника прегледайте всички селекции, които сте извършили по-рано, и се уверете, че не трябва да се извършва промяна на тези селекции, след което щракнете върху Край за да стартирате процеса на конфигуриране:

Когато процесът на конфигуриране на разпространение завърши успешно, съветникът ще ви уведоми със зелена отметка до всяко действие. Ако възникне някакъв проблем, ще се покаже смислено съобщение за грешка, за да го поправите и да повторите конфигурацията отново. Тъй като всички действия са извършени успешно, Затваряне съветника за конфигурация:

Ако разширите възела System Databases, в SSMS Object Explorer, ще видите, че е създадена нова база данни на системата за разпространение, която ще се използва за съхраняване на метаданните за репликация на SQL Server, както е показано по-долу:

Конфигуриране на издателя

След конфигуриране на дистрибутора, следващата стъпка е конфигуриране на издателя, който действа като източник на данни за другите сайтове.

За да конфигурирате издателя, свържете се с екземпляра на SQL Server, който съдържа базата данни за публикуване, прегледайте възела за репликация на SQL Server под Object Explorer, след което щракнете с десния бутон върху възела Local Publications и изберете Нова публикация... опция, както е по-долу:

Първият прозорец в съветника за нова публикация е началната страница, която показва списъка с действия, които ще бъдат извършени под този съветник. След като прочетете как този съветник ще ви помогне да кликнете върху Напред за да продължите:

На следващата страница ще бъдете помолени да изберете базата данни, която ще бъде публикувана на абонатите, която е базата данни AdventureWorks2017 в нашата демонстрация тук. Кликнете върху Напред за да продължите:

След това ще бъдете помолени да изберете типа публикация, която успеете да използвате. Обсъдихме по-рано в тази статия списъка с типове репликация на SQL Server, които се предоставят в SQL Server. В тази демонстрация ще използваме транзакционната публикация Тип. Кликнете върху Напред за да продължите:

В страницата Статии можете да изберете списъка с обекти на базата данни, които планирате да репликирате на абонатите. Имате избор да изберете всички налични обекти за всеки тип или да разширите типа на обекта и да изберете списъка с обекти, които да бъдат репликирани. В тази демонстрация ще репликираме всички таблици на базата данни на абонатите. След като прегледате селекцията на обекта, щракнете върху Напред за да продължите:

SQL Server ви позволява също да добавяте филтри за избраните обекти на базата данни и да репликирате само данните, които отговарят на критериите за добавени филтри. Ако планирате да репликирате редовете на цялата таблица, пропуснете тази страница, като щракнете върху Напред бутон:

На страницата Snapshot Agent посочете дали планирате незабавно да създадете първоначалната моментна снимка за синхронизиране, да планирате тя да бъде стартирана по-късно или да я стартирате ръчно, когато завършите настройката на репликацията. В тази демонстрация ще създам моментна снимка след завършване на настройката за репликация на SQL Server. Кликнете върху Напред за да продължите:

След това ще бъдете помолени да конфигурирате акаунта, който ще се използва за стартиране на Snapshot Agent и Log Reader Agents. Този потребител трябва да има най-малко разрешение db_owner в базата данни на издателя, дистрибутора и абоната, в допълнение към разрешенията за четене и запис в папката за моментни снимки. Можете също да използвате акаунта на SQL Agent Service, за да стартирате тези агенти за репликация на SQL Server, което не се препоръчва от гледна точка на сигурността. Предоставете оторизирания акаунт и кликнете върху Напред за да продължите:

В страницата Действия на съветника изберете действията, които ще бъдат извършени след завършване на този съветник, което включва създаването на публикация и генериране на скриптов файл, за да създадете публикацията по-късно или да използвате този скрипт като шаблон за други сървъри. В тази демонстрация ще изберем Създаване на публикацията , след което щракнете върху Напред за да продължите:

Последната страница е Завършете съветника, в която трябва да посочите името на публикацията и да прегледате избора си в този съветник, след което щракнете върху Край за да продължите със създаването на публикацията:

След като съветникът за създаване на публикация приключи, той ще покаже резултата от процеса на създаване на публикация и дали процесът е завършен успешно със зелени проверки или неуспешен на конкретна стъпка със смислено съобщение за грешка. В тази демонстрация публикацията е създадена успешно без проблем, както е показано по-долу:

За да проверите дали публикацията е създадена успешно, разгънете възела Локални публикации под възела за репликация на SQL Server на SSMS Object Explorer и проверете новосъздадената публикация. Можете също да прегледате и промените настройките за публикация от тази страница със свойства на публикацията. Публикацията ще бъде като:

Конфигуриране на абоната

Засега издателят и дистрибуторът са конфигурирани успешно, време е да конфигурираме абоната, който действа като цел за данни и получава данните от абоната.

За да конфигурирате абоната, от същия екземпляр на издателя, разширете възела за репликация на SQL Server под SSMS Object Explorer, щракнете с десния бутон върху възела Локални абонаменти и изберете Нови абонаменти … опция, както е показано по-долу:

Първият прозорец, показан в съветника за нов абонамент, е началната страница, която показва как този съветник ще ви помогне при конфигурирането на абоната. Кликнете върху Напред за да продължите:

Първата стъпка в конфигурирането на абоната е изборът на издателя, за който ще бъде създаден абоната, и базата данни за публикации, която ще действа като източник на данни за този абонат. Изберете базата данни за публикации от изброените бази данни, след което щракнете върху Напред за да продължите:

След това ще бъдете помолени да посочите дали да стартирате всички агенти от страната на дистрибутора и да изпратите промените към абоната, като осигурите централизирано администриране за процеса на синхронизиране на репликация или да стартирате всеки агент на свой собствен абонат, който ще изтегли промените от издателя , намалявайки разходите за обработка от страна на дистрибутора и позволявайки синхронизирането на всеки абонат да се администрира отделно. В тази демонстрация ще изберем push абонамент и ще щракнем върху Напред за да продължите:

В следващия прозорец трябва да добавите екземпляра на SQL Server за абонати и целевата база данни за абонамент, с възможността да създадете тази база данни, ако не съществува, както е показано по-долу:

В страницата Защита на агента на разпространение посочете акаунта, под който агентът за разпространение ще работи, за да извърши процеса на синхронизация, и акаунта, който ще се използва за свързване както към екземпляра на SQL Server на дистрибутора, така и към абоната. Препоръчително е да предоставите оторизиран акаунт на домейн, който има разрешение както за дистрибутора, така и за абоната, с възможност за използване на акаунта за услугата на SQL агент за свързване с дистрибутора и абоната, което не се препоръчва от гледна точка на сигурността. След като предоставите упълномощения акаунт за защита, кликнете върху Напред за да продължите:

На следващата страница на съветника за нов абонамент посочете графика за синхронизиране за всеки агент. Запазете настройката по подразбиране, ако искате синхронизирането да работи непрекъснато, след което щракнете върху Напред за да продължите:

След това можете да посочите дали да инициализирате абонаментите със моментна снимка от публикацията и кога да извършите този процес на инициализация. В тази демонстрация избираме да инициализираме абонамента при първото синхронизиране, както е показано по-долу:

В прозореца Действия на съветника можете да изберете какви действия да се извършват в края на този съветник. Например, този съветник ви предоставя опцията да създадете конфигурирания(и) абонамент(и) и да генерирате скриптов файл за създаване на абонаментите по-късно или в друг екземпляр на SQL Server, както следва:

След това съветникът ще ви предостави обобщение на всички конфигурации, които сте избрали в този съветник, за да го проверите, преди да започнете конфигурацията на абонамента. Ако всички селекции са наред, щракнете върху Край за да стартирате процеса на конфигуриране:

Ако операцията по създаване на абонамента завърши успешно, съветникът ще ни уведоми със зелена отметка за всяко завършено действие или ще ни предостави смислено съобщение за грешка в случай на неуспех, както е показано по-долу:

За да проверите дали абонаментът е създаден успешно, под възела за репликация на SSMS Object Explorer, разгънете създадената по-рано публикация и ще видите всички абонаменти, свързани с този издател и ще получите данни от него, както е показано по-долу:

Създаване на първоначална моментна снимка за синхронизация

Ако не сте избрали да създадете първоначална моментна снимка за синхронизиране по време на създаването на Publisher, все още можете да създадете моментната снимка след конфигуриране на компонентите за репликация.

За да създадете първоначална моментна снимка за синхронизиране, щракнете с десния бутон върху създадената публикация и изберете Преглед на състоянието на агента за моментна снимка опция. От отворения прозорец щракнете върху бутона Старт, за да стартирате агента за моментни снимки и да създадете първоначалната моментна снимка за синхронизиране. Можете също така да наблюдавате напредъка на процеса на създаване на моментна снимка, докато моментната снимка на всички статии не бъде създадена успешно, както е по-долу:

Наблюдавайте синхронизацията

След като бъде създадена моментната снимка на реплицираните статии, процесът на синхронизиране с абоната ще започне автоматично, като всички статии от тази моментна снимка ще бъдат записани на абоната. За да наблюдавате процеса на синхронизиране, щракнете с десния бутон върху абонамента под Репликация на SQL Server възел на SSMS Object Explorer и изберете Преглед на състоянието на синхронизиране опция, където ще ви покаже броя на транзакциите и командите, извършени на абоната, както е показано по-долу:

Освен това можете да наблюдавате състоянието на всички агенти за репликация и броя на командите, които чакат от страната на дистрибутора и не се прилагат към страната на абоната, като щракнете с десния бутон върху името на публикацията и изберете прозореца Стартиране на монитора на репликация, както е показано по-долу:

За да проверим дали сайтът за репликация работи добре, нека добавим нов запис към една от репликираните статии, таблица „Служител“, от страната на издателя, който не е наличен от страната на абоната, след което ще видите от монитора за репликация прозорец, в който се доставя нов запис от Издателя на Дистрибутора, след това на Абоната. След това ще видите, че новият запис е наличен в таблицата на служителите от страната на абоната, както е показано ясно по-долу:

С ясни и лесни стъпки изградихме пълен сайт за репликация на транзакции, който е синхронизиран и работи добре. В следващата статия ще видим как да отстраним неизправности в съществуващ сайт за репликация на SQL Server. Останете на линия.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете информация за колона за таблица или изглед в SQL Server (T-SQL:sp_columns)

  2. Дефиниране на връзка един към един в SQL Server

  3. Възстановяване на достъпа до екземпляра на SQL Server без рестартиране

  4. Създайте изглед с клауза ORDER BY

  5. Предотвратяване на SQL инжектиране в ASP.Net