ПКРПСиБД LAB9 Степная Е.В. (Лабораторная работа 9)
Описание файла
Файл "ПКРПСиБД LAB9 Степная Е.В." внутри архива находится в папке "Лабораторная работа 9". Документ из архива "Лабораторная работа 9", который расположен в категории "". Всё это находится в предмете "распределённые ис и базы данных" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "распределённые ис и базы данных" в общих файлах.
Онлайн просмотр документа "ПКРПСиБД LAB9 Степная Е.В."
Текст из документа "ПКРПСиБД LAB9 Степная Е.В."
Национальный исследовательский университет
«Московский Энергетический Институт»
Институт автоматики и вычислительной техники
Кафедра прикладной математики
Лабораторная работа №9
По дисциплине «Проектирование крупных программных систем и баз данных»
На тему «Настройка репликации в Microsoft SQL Server 2008 »
Выполнила студентка
Группы А-13-08
Степная Е.В.
Проверил
Куриленко И.Е.
Москва, 2012
Репликация представляет собой набор технологий копирования и распространения данных и объектов баз данных между базами данных, а также синхронизации баз данных для поддержания согласованности. Используя репликацию, можно распространять данные в различные расположения, а также удаленным или мобильным пользователям по локальным или глобальным сетям.
Существует три типа репликации:
1) репликация транзакций - обычно используется в сценариях «сервер-сервер»;
2) репликация сценариями;
3) репликация моментальных снимков используется для обеспечения начального набора данных для репликации транзакций и репликации слиянием.
Основные понятия распределенных баз данных и репликации баз данных
Распределённые базы данных (РБД) — совокупность логически взаимосвязанных баз данных, распределённых в компьютерной сети.
Репликация транзакций
Репликация транзакций реализуется агентом моментальных снимков, агентом чтения журналов и агентом распространителя SQL Server. Агент моментальных снимков готовит файлы моментальных снимков, содержащие схему, данные публикуемых таблиц и объекты базы данных, хранит файлы в папке моментальных снимков и записывает задания синхронизации в базу данных распространителя на распространителе.
Агент чтения журнала контролирует журнал транзакций всех баз данных, настроенных для репликации транзакций, и копирует транзакции, отмеченные для репликации, из журнала транзакций в базу данных распространителя, которая действует как надежная очередь с функциями хранения и переадресации данных. Агент распространителя копирует файлы исходного моментального снимка из папки моментальных снимков и транзакции, хранимые в таблицах базы данных распространителя, на подписчики.
Добавочные изменения, вносимые на издателе, поступают подписчикам согласно расписанию агента распространителя, который может выполняться непрерывно для достижения минимальной задержки либо в запланированные интервалы времени. Поскольку изменения данных должны вноситься на издателе (когда репликация транзакций используется без немедленного обновления и отложенного обновления), возникновение конфликтов обновления исключается. В конечном счете, для всех подписчиков устанавливаются такие же значения, как и на издателе. Если с репликацией транзакций используется немедленное или отложенное обновление, в этом случае обновления могут вноситься на подписчике, и для отложенного обновления возможно возникновение конфликтов. Дополнительные сведения см. в разделе Принципы работы обновляемых подписок.
На следующем рисунке показаны основные компоненты репликации транзакций.
Репликация сценариями
Предположим что существует 1 publisher и около 50 subscribers. В данном случае использование мастера подписки займет очень много времени при создании подписок на каждом подписчике.. Вместо этого администратор репликации может выполнить следующие шаги:
1. Настроить необходимые публикации слиянием с использованием секций, разделенных по представителям отдела продаж или их территориям.
2. Создать подписку по запросу для одного подписчика.
3. Создать сценарий на основе этой подписки по запросу.
4. Изменить сценарий, изменяя такие значения, как имя подписчика.
5. Выполнить сценарий на нескольких подписчиках для создания необходимых подписок по запросу.
Репликация моментальных снимков
Репликация моментальных снимков распространяет данные по мере их появления и не отслеживает их изменения. При синхронизации снимок создается полностью и затем рассылается подписчикам.
Отдельное использование репликации моментальных снимков уместно, если выполняется одно или несколько следующих условий.
Данные изменяются редко.
Допускается хранение в течение некоторого времени копий данных, устаревших по сравнению с данными издателя.
Реплицируются небольшие объемы данных.
За короткий промежуток времени происходит много изменений.
Репликация моментальных снимков уместна, если изменения данных значительные, но нечастые. Например, если торговая организация устанавливает прейскурант на продукты и все цены обновляются одновременно один-два раза в год, рекомендуется проводить репликацию всего снимка данных после его изменения. Более частые снимки уместны в случае получения данных определенного типа. Например, если относительно небольшая таблица у издателя обновляется днем, но допускается некоторая задержка, изменения могут быть доставлены ночью в виде снимка.
Репликация моментальных снимков создает меньшую непрерывную нагрузку на издателя, чем репликация транзакций, так как последующие изменения не отслеживаются. Однако если реплицируется очень большой набор данных, потребуются значительные ресурсы для того, чтобы создать и передать снимок. Рекомендуется обратить внимание на размер всего набора данных и частоту изменений данных перед использованием репликации моментальных снимков.
Настроить 2 виртуальные машины c SQL Server
В силу ограниченности ресурсов моего компьютера, репликация будет настраиваться между нетбуком и стационарным компьютером.
Настройка репликации транзакций
Репликация - это механизм распространения данных из основной базы данных(издатель) к базам данным- подписчикам.
При настройке репликации используются следующие термины:
Статья (article) — это объекты, которые мы будем реплицировать, такие как таблицы, процедуры, функции и т. д.
Публикация(publication) — это набор статей, или проще говоря окончательный набор объектов для репликации.
Фильтры — набор условий для статьи. В репликации возможно использовать фильтры на таблицы, что позволяет нам реплицировать только необходимые данные, благодаря этому уменьшается передаваемый трафик, уменьшается избыточность, уменьшается хранимый объем данных.
В репликации используются так же следующие роли:
Издатель(publisher) -хранит главную копию базы данных, на которой настроена публикация
Подписчик (subscriber) — база данных, которая получает реплицируемые данные.
Распространитель(distribution) - экземпляр MS SQL server настроенный для сбора транзакции с публикаций и их распространения на подписчики. Распространитель так же имеет базу данных для хранения реплицируемых транзакций.
-
Настройка распространителя
На объекте «Репликация» в контекстном меню выбираем настройка Распространиетеля (Configure Distribution)
Далее выбираем, что указанный сервер будет Издателем:
Затем указываем расположение моментального снимка, Моментальный снимок необходим для начальной инициализации репликации.
В следующем окне указываем название базы данных распространителя.
Нажимаем Finish
-
Настройка публикации
Выбираем на объекте MS SQL сервера Replication пункт меню новая публикация:
добавляем наш ранее настроенный сервер Распространителя
Выбираем Базу данных распространителя
Выбираем тип репликации
Далее указываем, что моментальный снимок создается сразу при инициализации подписчика:
В следующих окнах указываем учетную запись для моментального снимка, затем указываем имя публикации и создаем публикацию. После этого в разделе репликации появится наша публикация:
-
Настройка подписчика
На подписчике выбираем объект сервере репликация -> подписчики
Выбираем тип репликации:
На примере выбрана репликация с расположением агентов на подписчиках, т.е Pull репликация, образно говоря каждые подписчик «тянет» на себя транзакции с распространителя.
Выбираем базу данных, куда идет репликация:
Указываем инициализацию:
Таким образом, репликация транзакциями настроена.
Репликация с моментальными снимками настраивается аналогично.
Репликация сценариями
-- Enabling the replication database
use master
exec sp_replicationdboption @dbname = N't2', @optname = N'publish', @value = N'true'
GO
exec [t2].sys.sp_addlogreader_agent @job_login = null, @job_password = null, @publisher_security_mode = 1
GO
exec [t2].sys.sp_addqreader_agent @job_login = null, @job_password = null, @frompublisher = 1
GO
-- Adding the snapshot publication
use [t2]
exec sp_addpublication @publication = N'MyPublic1', @description = N'Snapshot publication of database ''t2'' from Publisher ''SONYP''.', @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'MyPublic1', @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'MyPublic1', @login = N'sa'
GO
exec sp_grant_publication_access @publication = N'MyPublic1', @login = N'NT AUTHORITY\SYSTEM'
GO
exec sp_grant_publication_access @publication = N'MyPublic1', @login = N'NT AUTHORITY\NETWORK SERVICE'
GO
exec sp_grant_publication_access @publication = N'MyPublic1', @login = N'SONYP\st'
GO
exec sp_grant_publication_access @publication = N'MyPublic1', @login = N'distributor_admin'
GO
-- Adding the snapshot articles
use [t2]
exec sp_addarticle @publication = N'MyPublic1', @article = N'Table_1', @source_owner = N'dbo', @source_object = N'Table_1', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509D, @identityrangemanagementoption = N'none', @destination_table = N'Table_1', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'SQL', @del_cmd = N'SQL', @upd_cmd = N'SQL'
GO
http://dbasimple.blogspot.ru/2012/06/step-by-step.html
http://msdn.microsoft.com/ru-ru/library/ms152536(v=sql.105).aspx