Знайомимося з реплікацією транзакцій в sql server - sql server, купити sql server - програмні
базове розгортання
Хоча процес вивчення реплікації може здаватися складним, для успішного використання реплікації досить розібратися в складових її компонентах. А це дозволяє зробити практичне розгортання базових конфігурацій і подальше вивчення супутніх модифікацій користувальницької схеми, об'єктів метаданих, завдань агента SQL Server Agent і пов'язаних з цим налаштувань агента. Щоб вам допомогти, спочатку я коротко пройдуся по термінології реплікації і покажу, як працюють різні компоненти. Потім ми виконаємо типове розгортання реплікації транзакцій, одного з найпоширеніших типів реплікації.
Базові поняття реплікації
Для реплікації необхідна окрема база даних для зберігання метаданих і даних, що пересилаються. Така база даних називається базою даних розповсюджувача (Distribution Database), а екземпляр SQL Server. на якому вона зберігається, - розповсюджувачем (Distributor). Розповсюджувач може бути тим же примірником SQL Server, що і видавець, окремими екземпляром чи примірником, на який пересилаються дані. Рішення про розміщення бази даних розповсюджувача зазвичай базується на розгляді таких моментів як завантаженість або доступність (наприклад, якщо реплікація транзакцій поєднується з дзеркалюванням баз даних).
Сервер, який одержує дані від видавця, називається передплатником (Subscriber). Передплатником може бути той же екземпляр SQL Server, що і видавець, екземпляр, який є розповсюджувачем, або окремий екземпляр SQL Server. Передплатник визначається за допомогою додавання підписки на певну публікацію. База даних передплатника може містити як реплікованих, так і нерепліцірованние об'єкти, і зберігати більше однієї передплати від різних публікацій.
Зовнішні виконавчі модулі, звані агентами реплікації, передають дані від видавця до розповсюджувача і потім до передплатника. Тип агента реплікації залежить від використовуваного типу реплікації.
Вибір типу реплікації
Існує три основних типи реплікації: реплікація моментального знімка, реплікація транзакцій і реплікація злиттям. Зустрічаються і базуються на цих типах різні варіації, наприклад одноранговая реплікація (peer-to-peer replication), але ми не будемо в цій статті їх обговорювати.
Реплікація моментального знімка дозволяє поширювати дані на певний момент часу. Знімок пересилається і більше не оновлюється процесом реплікації, поки не буде зроблено новий знімок, який буде відправлений передплатнику. Реплікація моментального знімка зазвичай використовується для формування схеми статей і пов'язаних з нею даних у передплатника для реплікації транзакцій і реплікації злиттям.
Реплікація злиттям дозволяє передплатнику безпосередньо модифікувати дані підписки (статті) і потім синхронізувати модифіковані рядки з видавцем. Як зазначалося раніше, передплатники можуть бути деякий час відключені від комунікацій, періодично підключатися і синхронізувати дані за запитом. У цей момент їх зміни синхронізуються з видавцем і навпаки. Це може привести до конфлікту даних, коли видавець і один або більше передплатників намагаються модифікувати одні й ті ж дані.
Розгортання реплікації транзакцій
Крім того, буде реплицироваться опис уявлення [HumanResources]. [VEmployee]. І хоча уявлення не містить даних, можна реплицировать опис цього об'єкта, за умови, що всі залежні об'єкти включені в публікацію.
Далі описані кроки по налаштуванню примірника SQL Server в якості видавця.
- У лівій панелі вікна консолі SSMS Object Explorer натисніть розкривний список Connect і виберіть екземпляр SQL Server, який буде налаштовуватися як видавця або розповсюджувача.
- У вікні Object Explorer розкрийте вузол потрібного примірника SQL Server. Клацніть правою кнопкою миші на папці Replication і виберіть пункт Configure Distribution.
- На екрані майстра Configure Distribution натисніть кнопку Next. Цей екран більше не буде з'являтися, якщо ви вимкніть його, поставивши галочку у поля Do not show this starting page again.
- На екрані Distributor, як показано на екрані 1, ви вказуєте, чи буде даний SQL Server функціонувати в якості розповсюджувача або розповсюджувачем для даного видавця буде інший сервер. Для нашого прикладу призначте видавця власним розповсюджувачем і натисніть Next.
- Екран SQL Server Agent Start дозволяє налаштувати автоматичний запуск служби SQL Server Agent. Виберіть автоматичний запуск Yes, configure the SQL Server Agent service to start automatically і натисніть Next.
- Екран Snapshot Folder задає розміщення сховища моментальних знімків. Ми в даному прикладі використовуємо стандартні параметри. Вибір локального сховища призводить до появи попередження про те, що така папка не підтримує реплікацію за запитом (для даного варіанту необхідний загальний мережевий ресурс). Запишіть шлях до обраної папці, так як він буде потрібно надалі. Натисніть Next.
- На екрані Distribution Database пропонуються варіанти настройки імені бази даних розповсюджувача (Distribution Database) і розміщення файлів бази даних. У виробничій базі даних файли бази даних розповсюджувача потрібно розміщувати так, щоб забезпечити максимальну пропускну здатність і мінімальні затримки, необхідні для вашої топології реплікації. Для тестового сценарію вибираємо налаштування за замовчуванням і натискаємо кнопку Next.
- На екрані Publishers визначаємо сервери, які будуть використовувати даного розповсюджувача для своїх публікацій. У нашому прикладі необхідний SQL Server вже обраний. Натискання кнопки із позначкою крапки (.) Праворуч від стовпчика Distribution Database відобразить додаткові настройки, такі як режим підключення агента (Agent Connection Mode), що задає спосіб підключення до видавця, і папку за замовчуванням для зберігання моментальних знімків (Default Snapshot Folder). Натискаємо Next.
- На екрані Wizard Actions ви або даєте майстру команду для автоматичної настройки поширення, або генеруєте сценарій, за допомогою якого можна налаштувати поширення, або робите і те й інше. У нашому прикладі залишаємо все за замовчуванням і натискаємо Next.
- На завершальному екрані Complete the Wizard натискаємо кнопку Finish. Далі ви будете спостерігати статус всіх виконуваних кроків. Коли майстер успішно завершить свою роботу, натисніть кнопку Close.
Екран 1. Призначення примірника SQL Server в якості власного розповсюджувача
Екран 2. Вибір бази даних для? Реплікації
Налаштування параметрів безпеки для агентів
Далі наведені кроки для підготовки мінімальних необхідних дозволів для трьох облікових записів служби агентів реплікації, використовуваних в даній демонстраційної топології.
Хоча ви в кількох місцях призначили дозволу db_owner, це офіційно оголошено мінімально необхідними дозволами. У порівнянні з дозволами sysadmin ви створили більш захищену конфігурацію.
Екран 3. Вибір таблиць для реплікації
Екран 5. Введення облікових даних агента моментальних знімків
Створення примусової передплати
Для створення нової примусової передплати необхідно виконати наступні дії.
- На сервері, що виконує роль видавця / розповсюджувача, в папці Replication розкрийте список Local Publications, клацніть правою кнопкою миші на [AdventureWorks]: Pub_AdventureWorks і виберіть для створення нової підписки пункт меню New Subscriptions.
- На екрані майстра створення нової підписки натисніть кнопку Next (за умови, що ви що раніше не відключили цей екран).
- На екрані Publication переконайтеся, що обрана нова публікація. Натисніть Next.
- Екран Distribution Agent Location задає тип підписки (примусова або за запитом). Залиште всі параметри без змін і натисніть Next.
- На екрані Subscribers натисніть кнопку Add Subscriber, потім Add SQL Server Subscriber. У діалогової панелі Connect to Server підключіться до примірника сервера-передплатника.
- На екрані Subscribers з'явиться ще один сервер. Виберіть для нього із списку базу даних підписки. Натисніть Next.
- На екрані Distribution Agent Security (екран 6) натисніть кнопку зі значком трьох крапок (.) Для запуску діалогової панелі налаштування параметрів безпеки агента розповсюджувача. Введіть на цій панелі ім'я облікового запису та пароль агента розповсюджувача. Натисніть OK.
- На екрані Distribution Agent Security натисніть Next.
- На екрані розкладу синхронізації Synchronization Schedule залиште значення за замовчуванням (працювати безперервно) і натисніть Next.
- На екрані Initialize Subscriptions залиште значення за замовчуванням для негайного запуску підписки. Натисніть Next.
- На наступному екрані майстра Actions залиште зазначений за замовчуванням прапорець Create the subscription (s) і натисніть Next.
- На завершальній сторінці майстра натисніть кнопку Finish. Після успішного виконання всіх етапів створення нової підписки натисніть Close.
Екран 6. Налаштування параметрів безпеки агента-розповсюджувача
тестування реплікації
Тепер необхідно протестувати налаштовану реплікацію і переконатися, що вона працює належним чином. Виконайте наступні дії.
INSERT [Person]. [Address] (AddressLine1, City, StateProvinceID, PostalCode) VALUES ( '2222 Test Drive', 'Minneapolis', 36, 55410);
2. Зачекайте секунд 10, потім виконайте операцію SELECT на сервері-передплатника:
SELECT AddressID FROM [Person]. [Address] WHERE AddressLine1 = '2222 Test Drive';
Якщо все було зроблено правильно, то будуть повернуті тільки що вставлені рядки.
3. Протестуйте реплікацію уявлення на сервер-передплатник за допомогою коду:
SELECT COUNT (*) FROM HumanResources.vEmployee;
У мене після виконання даного коду було видано 250 рядків і не було ніяких повідомлень про помилки, що вказує на те, що всі залежні об'єкти були реплікуються.
Вивчення на практиці
Дане введення в реплікацію транзакцій є лише верхній шар знань про розгортання і підтримки в середовищі реплікації транзакцій. І хоча обсяг матеріалу для вивчення може здатися страшним, найкращим способом підвищення кваліфікації в області реплікації є її практичне використання у вашій роботі, пов'язаної з обслуговуванням корпоративних додатків і бізнес-задач.
USE [master]; GO CREATE LOGIN [SQLskills \ SQLskillsSnapshotAGT] FROM WINDOWS; USE [distribution]; GO CREATE USER [SQLskills \ SQLskillsSnapshotAGT] FOR LOGIN [SQLskills \ SQLskillsSnapshotAGT]; EXEC sp_addrolemember N'db_owner ', N'SQLskills \ SQLskillsSnapshotAGT'; USE [AdventureWorks]; GO CREATE USER [SQLskills \ SQLskillsSnapshotAGT] FOR LOGIN [SQLskills \ SQLskillsSnapshotAGT]; EXEC sp_addrolemember N'db_owner ', N'SQLskills \ SQLskillsSnapshotAGT';
USE [master]; GO CREATE LOGIN [SQLskills \ SQLskillsLogReaderAG] FROM WINDOWS; USE [AdventureWorks]; GO CREATE USER [SQLSKILLS \ SQLskillsLogReaderAG] FOR LOGIN [SQLSKILLS \ SQLskillsLogReaderAG]; EXEC sp_addrolemember N'db_owner ', N'SQLskills \ SQLskillsLogReaderAG'; USE [distribution]; GO CREATE USER [SQLSKILLS \ SQLskillsLogReaderAG] FOR LOGIN [SQLSKILLS \ SQLskillsLogReaderAG]; EXEC sp_addrolemember N'db_owner ', N'SQLskills \ SQLskillsLogReaderAG';
Лістинг 3. Код для створення облікового запису агента розповсюджувача в базі даних розповсюджувача
USE [master]; GO CREATE LOGIN [SQLskills \ SQLskillsDistAGT] FROM WINDOWS; USE [distribution]; GO CREATE USER [SQLskills \ SQLskillsDistAGT] FOR LOGIN [SQLskills \ SQLskillsDistAGT] EXEC sp_addrolemember N'db_owner ', N'SQLskills \ SQLskillsDistAGT';
Лістинг 4. Код для створення облікового запису агента розповсюджувача в базі даних передплатника
USE [master]; GO CREATE LOGIN [SQLskills \ SQLskillsDistAGT] FROM WINDOWS; USE [AWReporting]; GO CREATE USER [SQLSKILLS \ SQLskillsDistAGT] FOR LOGIN [SQLSKILLS \ SQLskillsDistAGT] EXEC sp_addrolemember N'db_owner ', N'SQLskills \ SQLskillsDistAGT'
Майстри або сценарії?
Адміністратори баз даних можуть використовувати комбінацію майстрів SQL Server Management Studio (SSMS) і сценаріїв для розгортання та підтримки реплікації транзакцій. Якщо ви серйозно ставитеся до підтримки реплікації для критично важливих завдань, добре вивчіть обидва цих методу. Використовуйте майстра для швидкого попереднього створення сценаріїв, а потім тестируйте їх і вносите необхідні зміни. Використовуйте сценарії для автоматизації розгортання, перевірки необхідних налаштувань і швидкого відновлення. Наприклад, в процесі даного тестового розгортання реплікації я рекомендую паралельно використовувати сценарії на різних екранах майстра, щоб ви могли бачити, що відбувається "за кулісами" цього процесу.