ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 822
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
301 моментального снимка обычно используется для формирования схе- мы статей и связанных с ней данных у подписчика для репликации транзакций и репликации слиянием.
Репликация слиянием позволяет подписчику напрямую моди- фицировать данные подписки (статьи) и затем синхронизировать мо- дифицированные строки с издателем. Подписчики могут быть неко- торое время отключены от коммуникаций, периодически подклю- чаться и синхронизировать данные по запросу. В этот момент их из- менения синхронизируются с издателем и наоборот. Это может при- вести к конфликту данных, когда издатель и один или более подпис- чиков пытаются модифицировать одни и те же данные.
Последний тип репликации - тот, который мы рассмотрим, - ре- пликация транзакций. При правильном проектировании репликация транзакций может обеспечивать потоковое изменение данных с низ- ким уровнем задержек, выполняемое издателем для одного или более подписчиков. Реплицируемые данные, как правило, обрабатываются подписчиком в режиме "только чтение". Модификация данных у под- писчика может привести к нарушению синхронизации всего набора данных с данными издателя.
Подготовка MS SQL Server для репликации
1. Необходимые компоненты
Для выполнения репликации необходимы SQL Server, Среда
SQL
Server
Management
Studio
(SSMS) и база данных
AdventureWorks:
На сервере издателя (source) установите: o
Любой выпуск SQL Server, кроме SQL Server Express или
SQL Server Compact. Эти выпуски не могут быть издателями репли- кации. o
В данных AdventureWorks2012 образец базы данных. Для повышения безопасности образцы баз данных по умолчанию не уста- навливаются.
302
•
На сервере подписчика (destination) установите любой вы- пуск SQL Server, кроме SQL Server Compact. SQL Server Compact не может быть подписчиком в репликации транзакций.
•
Установите SQL Server Management Studio.
•
Установите SQL Server 2017 Developer edition.
•
Скачайте образец базы данных AdventureWorks.
Важно!
Репликация не поддерживается в экземплярах SQL Server с более чем двумя версиями.
В
SQL Server
Management
Studio необхо- димо подключиться к издателю и подписчику с помощью имени вхо- да, которые являются членами предопределенной роли сервера sysadmin.
2. Создание учетных записей Windows для репликации
В этом разделе создаются учетные записи Windows для запуска агентов репликации.
Создайте отдельную учетную запись Windows на локальном сервере для следующих агентов:
Таблица 14. Требуемые учетные записи
Agent
Location
Account name
Snapshot Agent
Publisher
<machine_name>\repl_snapshot
Log Reader
Agent
Publisher
<machine_name>\repl_logreader
Distribution
Agent
Publisher and subscriber
<machine_name>\repl_distribution
Merge Agent
Publisher and subscriber
<machine_name>\repl_merge
303
Важно!
В репликации Publisher и Distributor используют один и тот же объект
(NODE1\SQL2016)
SQL
Server.
Объект subscriber
(NODE2\SQL2016) является удаленным. Publisher и Subscriber могут использовать один и тот же объект SQL Server, но это не является обязательным. В нашем случае Publisher и Subscriber используют один и тот же объект.
Создадим локальные учетные записи Windows для агентов ре- пликации Publisher
1.
Для Publisher, откройте Computer Management из Ad-
ministrative Tools на панели управления.
2.
В System Tools, раскройте Local Users and Groups.
3.
Щелкните правой кнопкой мыши по пункту Users и выбе- рите New User.
4.
Введите в поле User name значение repl_snapshot, введите пароль и другую необходимую информацию, а затем нажмите кнопку
Создать, чтобы создать repl_snapshot агента:
Рис. 6.1. Создание repl_snapshot агента
304 5.
Повторите предыдущий шаг, чтобы создать учетные запи- си repl_logreader, repl_distribution и repl_merge:
Рис. 6.2. Создание дополнительных учетных записей.
6.
Закройте окно.
3. Подготовка snapshot folder
В этом разделе настроим snapshot folder, используемая для со- здания и хранения моментального снимка публикации.
Создадим общую папку для snapshot folder и назначим права до- ступа
1.
В проводнике перейдите к папке SQL Server date, распо- ложенная по адресу:
C:\Program
Files\Microsoft
SQL
Server\MSSQL.X\MSSQL\Data.
2.
Создайте новую папку с именем repldata.
3.
Нажмите правой кнопкой мыши по созданной папке и вы- берите Свойства. а. Во вкладке Sharing диалогового окна repldata Properties вы- берите Advanced Sharing. б. В диалоговом окне Advanced Sharing выберите Share this
Folder, а затем выберите Permissions.
305
Рис. 6.3. Создание новой папки repldata
4.
В диалоговом окне Permissions for repldata выберите До-
бавить. В Select User, Computers, Service Account, or Groups введи- те имя снимка учетной записи агента, созданной ранее, как
er_Machine_Name>\repl_snapshot. Выберите Check Names, а затем выберите ОК.
306
Рис. 6.4. Работа с диалоговыми окнами из пункта 4.
5.
Повторите шаг 4, чтобы добавить две другие учетные за- писи, которые вы создали ранее:
<Publisher_Machine_Name>\repl_merge
и
<Publisher_Machine_Name>\repl_distribution.
6.
После добавления трех учетных записей назначьте следу- ющие права доступа:
repl_distribution: Read
repl_merge: Read
repl_snapshot: Full Control
Рис. 6.5. Назначение прав доступа
7.
После предоставления прав доступа, выберите ОК, чтобы закрыть диалоговое окно Permissions for repldata. Нажмите ОК, что- бы закрыть диалоговое окно Advanced Sharing.
8.
В диалоговом окне repldata Properties, выберите вкладку
Security, затем выберите Edit:
307
Рис. 6.6. Работа с диалоговым окном из пункта 8 9.
В диалоговом окне Permissions for repldata выберите До- бавить. В диалоговом окне Select Users, Computers, Service Ac-
counts, or Groups введите имя Snapshot Agent account, созданное ранее, как
\repl_snapshot. Выберите
Check Names, а затем выберите ОК.
Рис. 6.7. Работа с диалоговыми окнами из пункта 9.
308 10.
Повторите предыдущий шаг, чтобы добавить разрешения для агента распределения, как
<Publisher_Machine_Name>\repl_distribution, и для агента слияния как <Publisher_Machine_Name>\repl_merge.
11.
Убедитесь, что следующие разрешения разрешены:
repl_distribution: Read
repl_merge: Read
repl_snapshot: Full Control
Рис. 6.8. Определение расрешений для агента
12.
Перейдите на вкладку Sharing снова и обратите внимание на Network Path для доступа. Этот путь понадобится позже при настройке snapshot folder.
309
Рис. 6.9. Определение пути папки
13.
Выберите ОК , чтобы закрыть диалоговое окно repldata
Properties.
4 Настройка distribution
В этом разделе настраивается distribution для издателей, и уста- навливаются необходимые разрешения publication и distribution для баз данных. Если distributor уже настроен, тогда необходимо перед началом работы с этим разделом отключить публикацию и распро- странение. Не делайте этого, если необходимо сохранить существу- ющую топологию репликации, особенно в рабочей среде.
Настройка distribution на publisher
1.
Подключитесь к publisher в среде Среда SQL Server
Management Studio и разверните узел сервера.
2.
Щелкните правой кнопкой мыши на папку Replication и выберите Configure Distribution:
310
Рис. 6.10. Работа с контекстным меню из пункта 2.
Важно!
Если у вас есть подключение к SQL Server с помощью имени
localhost, а не фактическое имя сервера, вам высветится диалоговое окно с предупреждением, что SQL Server не удается подключиться к серверу localhost. Выберите ОК в диалоговом окне предупреждения.
В диалоговом окне Connect to Server, измените Server name со зна- чения localhost на имя вашего сервера. Затем выберите подключить-
ся.
Запустится The Distribution Configuration Wizard.
3.
На странице Distributor, выберите <'ServerName'>, кото- рое будет выступать в качестве своего собственного Distributor; SQL
Server создаст дистрибутив базы данных и журнала. Затем выберите
Next.
311
Рис. 6.11. Создание дистрибутива базы данных и журнала.
4.
Если SQL Server Agent не работает, на стартовой страни- це SQL Server Agent установите Да, настройка SQL Server Agent за- пускается автоматически. Выберите Next.
5.
Введите путь \\<Publisher_Machine_Name>\repldata в
Snapshot folder , а затем выберите Далее. Этот путь должен совпа- дать с тем, что вы запомнили ранее под Network Path для вашего
repldata.
312
Рис. 6.12. Ввод пути папки.
6.
Примите значения по умолчанию на оставшихся страницах мастера настроек.
Рис. 6.13. Выставляем значения настроек
7.
Выберите Готово, чтобы включить distribution.
При настройке распространителя может появиться следующая ошибка. Это означает, что учетная запись, используемая для запуска учетной записи SQL Server Agent, не является администратором в си- стеме. Необходимо либо запустить SQL Server Agent вручную, предо-
313 ставить эти разрешения существующей учетной записи, или изменить учетную запись, используемую SQL Server Agent.
Рис. 6.14. Учетная запись не является администратором в системе
Если экземпляр SQL Server Management Studio работает с пра- вами администратора, можно запустить SQL Agent вручную из SSMS.
Рис. 6.15. Запуск прав администратора вручную.
314
Важно!
Если SQL Agent не запуститься, щелкните правой кнопкой мы- ши SQL Agent в SSMS и выберите Обновить. Если он все еще нахо- дится в остановленном состоянии, запустите его вручную из SQL
Server Configuration Manager.
5. Настройка прав доступа базы данных на publisher
1.
В SQL Server Management Studio, разверните узел
Security, щелкните правой кнопкой мыши по папке Logins и выбери- те New Login:
Рис. 6.16. Настройка прав для пользователей
2.
На вкладке General, выберите Поиск.
Введите
\repl_snapshot в поле Enter the object
name to select, выберите Check Names, а затем выберите ОК.
315
Рис. 6.17. Работа с диалоговым окном из пункта 2.
3.
На вкладке User Mapping, в списке Users mapped to this
login выберите distribution и AdventureWorks2012 баз данных.
В списке database role membership, выберите роль db_owner для обеих баз данных.
Рис. 6.18. Настройка базы данных.
4.
Выберите ОК , чтобы создать Login.
316 5.
Повторите шаги 1-4, чтобы создать Login для других ло- кальных учетных записей (repl_distribution, repl_logreader и
repl_merge). Эти учетные записи должны быть сопоставлены пользо- вателям, которые являются членами фиксированной роли db_owner в
distribution и AdventureWorks базе данных.
Настройка транзакционной репликации меду двумя
постоянно действующими подключенными серверами
1 Настройка издателя для репликации транзакций
Создание публикации и определение статей
1.
Подключитесь к издателю в среде Среда SQL Server
Management Studio и разверните узел сервера.
2.
Щелкните правой кнопкой мыши по SQL Server Agent и выберите Start. SQL Server Agent должен быть запущен перед со- зданием публикации. Если SQL Server Agent не получается запу-
стить, это необходимо сделать вручную из диспетчера конфигурации
SQL Server.
3.
Раскройте папку Replication, щелкните правой кнопкой мыши на папку Local Publications и выберите New Publication. На этом шаге запускается Мастер создания публикации:
4.
На вкладке
Publication
Database выберите
AdventureWorks2012, а затем выберите Далее.
5.
На вкладке Publication Type выберите Transactional pub-
lication, а затем нажмите Далее:
6.
На вкладке Articles раскройте узел Tables и выберите флажок Product. Затем раскройте узел Product и снимите флажки ря- дом с ListPrice и StandardCost. Нажмите Next.
7.
На вкладке Filter Table Rows, выберите Add.
8.
В диалоговом окне Add Filter выберите SafetyStockLevel.
Нажмите на стрелку вправо, чтобы добавить в filter statement опера- тор WHERE. Затем вручную введите модификатор предложения
WHERE следующим образом:
317
WHERE [SafetyStockLevel] < 500
9.
Нажмите ОК, а затем нажмите Next.
10.
Выберите флажок Create a snapshot immediately and
keep the snapshot available to initialize subscriptions и нажмите Next:
11.
На вкладке Agent Security снимите флажок Use the securi-
ty settings from the Snapshot Agent.
Выберите Параметры безопасности для агента моментальных снимков. Введите <Publisher_Machine_Name>\repl_snapshot в про-
цесс счета окно, введите пароль для этой учетной записи, а затем вы- берите ОК.
12.
Повторите предыдущий шаг, чтобы устано- вить <Publisher_Machine_Name>\repl_logreader в качестве учетной записи для the Log Reader Agent. Затем нажмите ОК.
13.
На вкладке Complete the Wizard введите
AdvWorksProductTrans в поле Publication name и нажмите Finish:
14.
После создания публикации, нажмите Close для заверше- ния работы мастера.
Если SQL Server Agent не запущен при попытке создать публи- кацию, может возникнуть следующая ошибка. Эта ошибка указывает на то, что публикация была создана успешно, но Snapshot Agent не смог запустить ее. В этом случае необходимо запустить SQL Server
Agent, а затем вручную запустить Snapshot Agent.
2. Просмотр состояния создания моментальных снимков
1.
Подключитесь к издателю в SQL Server Management
Studio, раскройте узел сервера, а затем разверните папку Replication
2.
В папке Local Publications щелкните правой кнопкой мы- ши AdvWorksProductTrans, а затем выберите View Snapshot Agent
Status:
3.
Отобразится текущий статус Snapshot Agent. Перед пере- ходом к следующему разделу убедитесь, что моментальный снимок выполнен успешно.
318
Если SQL Server Agent не был запущен при создании публика- ции, вы увидите, что Snapshot Agent никогда не запускался. В этом случае нажмите Start , чтобы запустить Snapshot Agent :
3 Добавление логина Distribution Agent в PAL
1.
Подключитесь к издателю в SQL Server Management
Studio, раскройте узел сервера, а затем разверните папку Replication.
2.
В папке Local Publications, щелкните правой кнопкой мыши AdvWorksProductTrans, а затем выберите Properties. Появит- ся диалоговое окно Publication Properties. а. Выберите вкладку Publication Access List и нажмите Add. б. В диалоговом окне Add Publication Access выберите
<Publisher_Machine_Name>\repl_distribution, и нажмите ОК.
4 Создание подписки на публикацию транзакций
В этом разделе добавляется подписчик к ранее созданной пуб- ликации. В данной работе используется удаленный подписчик
(NODE2\SQL2016), но вы также можете добавить локальную подпис- ку на издателя.
Создание подписки
1.
Подключитесь к издателю в SQL Server Management
Studio, раскройте узел сервера, а затем разверните папку Replication.
2.
В папке Local Publications щелкните правой кнопкой мыши на AdvWorksProductTrans, а затем выберите New
Subscriptions. Запустится New Subscription Wizard:
3.
На
вкладке
Publication, выберите
AdvWorksProductTrans, а затем нажмите Next:
4.
На вкладке Distribution Agent Location, выберите Run all
agents at the Distributor, а затем нажмите Next.
5.
На вкладке Subscribers, если не отображается имя под- писчика экземпляра, выберите Add Subscriber, а затем выберите Add
SQL Server
Subscriber из раскрывающегося списка. Этот шаг открывает диалоговое окно Connect to Server. Введите имя экземпляра подпис- чика и затем нажмите Connect.