Лабораторная работа 9 (ПКРПCиБД LAB9 Бычков А.С.)

Посмотреть архив целиком

Национальный исследовательский институт

Московский Энергетический Институт(Технический Университет)

Институт автоматики и вычислительной техники

Кафедра Прикладной математики





Лабораторная работа №9

по дисциплине:

Проектирование крупных распределенных программных систем и баз данных

тема: «Настройка репликации в Microsoft SQL Server 2008»











Выполнил:

Бычков А.С.







Москва

2012 г.



Введение

Репликация представляет собой набор технологий копирования и распространения данных и объектов баз данных между базами данных, а также синхронизации баз данных для поддержания согласованности. Используя репликацию, можно распространять данные в различные расположения, а также удаленным или мобильным пользователям по локальным или глобальным сетям.

Репликация моментальных снимков



По умолчанию все три типа репликации для инициализации подписчиков используют моментальный снимок. Агент моментальных снимков SQL Server всегда создает файлы моментальных снимков, но агент, доставляющий файлы, меняется в зависимости от используемого типа репликации. Репликация моментальных снимков и репликация транзакций используют для доставки этих файлов агент распространителя, в то время как репликация слиянием использует агент слияния SQL Server. Агент моментальных снимков выполняется на распространителе. Агент распространителя и агент слияния выполняются на распространителе для принудительных подписок и на подписчиках для подписок по запросу. Моментальные снимки могут создаваться и применяться или непосредственно после создания подписки, или в соответствии с расписанием, установленным при создании публикации. Агент моментальных снимков подготавливает файлы моментального снимка, содержащие схему и данные опубликованных таблиц и объектов базы данных, сохраняет эти файлы в папке моментальных снимков для издателя и записывает данные слежения в базу данных распространителя на распространителе. При настройке распространителя указывается папка моментальных снимков по умолчанию, но можно указать и другое расположение публикации вместо или дополнительно к расположению по умолчанию.

Репликация транзакциями



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

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

Добавочные изменения, вносимые на издателе, поступают подписчикам согласно расписанию агента распространителя, который может выполняться непрерывно для достижения минимальной задержки либо в запланированные интервалы времени. Поскольку изменения данных должны вноситься на издателе (когда репликация транзакций используется без немедленного обновления и отложенного обновления), возникновение конфликтов обновления исключается. В конечном счете, для всех подписчиков устанавливаются такие же значения, как и на издателе. Если с репликацией транзакций используется немедленное или отложенное обновление, в этом случае обновления могут вноситься на подписчике, и для отложенного обновления возможно возникновение конфликтов. 



Сценарии репликации

Предположим что существует 1 publisher и около 50 subscribers. В данном случае использование мастера подписки займет очень много времени при создании подписок на каждом подписчике.. Вместо этого администратор репликации может выполнить следующие шаги:

  1. Настроить необходимые публикации слиянием с использованием секций, разделенных по представителям отдела продаж или их территориям.

  2. Создать подписку по запросу для одного подписчика.

  3. Создать сценарий на основе этой подписки по запросу.

  4. Изменить сценарий, изменяя такие значения, как имя подписчика.

  5. Выполнить сценарий на нескольких подписчиках для создания необходимых подписок по запросу.





Настройка репликации в SQL с помощью моментальных снимков.





Далее создаем subsription

Далее выбираем базу куда реплицировать или же создаем новую.

В итоге наша база среплицируется на удаленный сервер. Необходимо не забыть разрешить удаленное подключение в настройка SQL CONFIGURATION MANAGEMENT TOOLS



В итоге имеем

Настройка репликации транзакциями производится аналогично.



Генерация сценариев.

-- Enabling the replication database

use master

exec sp_replicationdboption @dbname = N'NEW_DB', @optname = N'publish', @value = N'true'

GO


exec [NEW_DB].sys.sp_addlogreader_agent @job_login = null, @job_password = null, @publisher_security_mode = 1

GO

exec [NEW_DB].sys.sp_addqreader_agent @job_login = null, @job_password = null, @frompublisher = 1

GO

-- Adding the snapshot publication

use [NEW_DB]

exec sp_addpublication @publication = N'LR9_SNAPSHOT_PUBLICATION', @description = N'Snapshot publication of database ''NEW_DB'' from Publisher ''JOXER-PC\KURILENKO_SQL''.', @sync_method = N'native', @retention = 0, @allow_push = N'true', @allow_pull = N'true', @allow_anonymous = N'true', @enabled_for_internet = N'false', @snapshot_in_defaultfolder = N'true', @compress_snapshot = N'false', @ftp_port = 21, @ftp_login = N'anonymous', @allow_subscription_copy = N'false', @add_to_active_directory = N'false', @repl_freq = N'snapshot', @status = N'active', @independent_agent = N'true', @immediate_sync = N'true', @allow_sync_tran = N'false', @autogen_sync_procs = N'false', @allow_queued_tran = N'false', @allow_dts = N'false', @replicate_ddl = 1

GO



exec sp_addpublication_snapshot @publication = N'LR9_SNAPSHOT_PUBLICATION', @frequency_type = 1, @frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, @frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 0, @active_end_date = 0, @job_login = null, @job_password = null, @publisher_security_mode = 1

exec sp_grant_publication_access @publication = N'LR9_SNAPSHOT_PUBLICATION', @login = N'sa'

GO

exec sp_grant_publication_access @publication = N'LR9_SNAPSHOT_PUBLICATION', @login = N'NT AUTHORITY\ñèñòåìà'

GO

exec sp_grant_publication_access @publication = N'LR9_SNAPSHOT_PUBLICATION', @login = N'JOXER-PC\JOXER'

GO

exec sp_grant_publication_access @publication = N'LR9_SNAPSHOT_PUBLICATION', @login = N'NT SERVICE\SQLAgent$KURILENKO_SQL'

GO

exec sp_grant_publication_access @publication = N'LR9_SNAPSHOT_PUBLICATION', @login = N'NT SERVICE\MSSQL$KURILENKO_SQL'

GO

exec sp_grant_publication_access @publication = N'LR9_SNAPSHOT_PUBLICATION', @login = N'distributor_admin'

GO


-- Adding the snapshot articles

use [NEW_DB]

exec sp_addarticle @publication = N'LR9_SNAPSHOT_PUBLICATION', @article = N'Users', @source_owner = N'dbo', @source_object = N'Users', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509D, @identityrangemanagementoption = N'none', @destination_table = N'Users', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'true', @ins_cmd = N'SQL', @del_cmd = N'SQL', @upd_cmd = N'SQL'


-- Adding the article's partition column(s)

exec sp_articlecolumn @publication = N'LR9_SNAPSHOT_PUBLICATION', @article = N'Users', @column = N'id', @operation = N'add', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1

exec sp_articlecolumn @publication = N'LR9_SNAPSHOT_PUBLICATION', @article = N'Users', @column = N'username', @operation = N'add', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1


-- Adding the article synchronization object

exec sp_articleview @publication = N'LR9_SNAPSHOT_PUBLICATION', @article = N'Users', @view_name = N'SYNC_Users_1__56', @filter_clause = N'', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1

GO


-- Adding the snapshot subscriptions

use [NEW_DB]

exec sp_addsubscription @publication = N'LR9_SNAPSHOT_PUBLICATION', @subscriber = N'LAPTOP\LAPTOP_SQL', @destination_db = N'SNAPSHOT_REPLICATED_DB', @subscription_type = N'Push', @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0

exec sp_addpushsubscription_agent @publication = N'LR9_SNAPSHOT_PUBLICATION', @subscriber = N'LAPTOP\LAPTOP_SQL', @subscriber_db = N'SNAPSHOT_REPLICATED_DB', @job_login = null, @job_password = null, @subscriber_security_mode = 0, @subscriber_login = N'owner', @subscriber_password = null, @frequency_type = 64, @frequency_interval = 1, @frequency_relative_interval = 1, @frequency_recurrence_factor = 0, @frequency_subday = 4, @frequency_subday_interval = 5, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 0, @active_end_date = 0, @dts_package_location = N'Distributor'

GO




Настройка виртуальной машины в VIRTUALBOX



После установки Windows на вм имеем