Репликация

Ответить
Kogep
Сообщения: 13
Зарегистрирован: 20 июн 2013, 12:32

Репликация

Сообщение Kogep »

Настройка репликации:
1. На дистрибьютере выбираем "Configure Distribution". В паблишерах выбираем принципал и миррор, дистрибьютер удаляем.
Не забыть дать права на папку с репликационными данными.
2. На принципла и мирроре выбираем "Configure Distribution" и указываем дистрибьютер.
3. На принципале выбираем "New Publication" и настраиваем публикацию.
Тип: транзакционная
Snapshot Agent: Run under the SQL Server Agent
Connect to Publisher using sql server login
4. На дистрибьутере выполняем:

Код: Выделить всё

USE [master]

--exec sp_help_agent_profile
exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = <mirror_serv>
exec sp_add_agent_parameter @profile_id = 2, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = <mirror_serv>
exec sp_add_agent_parameter @profile_id = 9, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = <mirror_serv>
5. На подписчике выбираем "New subscription" и настраиваем.
Distribution Agent: Run under the SQL Server Agent
Connect to Subscriber using sql server login

6. Создать необходимые индексы на реплике.
Создать пользователей и выделить права.

Манипуляции с зеркалом:
1. При переключении ролей реплика работает.
2. При отключении вторичного сервера, реплика приостанавливается, журнал транзакций на принципале растет. Рекомендуется удалить зеркало.
3. При переключении ролей и удалении зеркалирования, если был удален сервер, на котором делался пункт 3 (New Publicaton) и в качестве принципала выступает бывший вторичный сервер, репликация ломается: она считает паблишером именно тот сервер, где делался пункт 3 (New Publicaton). Дальнейшие рассуждения не тестировались. Чтобы не настраивать репликацию заново, можно попробовать на субскрайбе удалить текущий паблишер и настроить новый, указав на текущий принципал.

Добавление новых статей:
1. exec sp_helppublication @publication = <publ_name>
Проверяем флаги Immediate_sync и Allow_anonymous.
При Immediate_sync = 1 добавление новой статьи приводит к созданию полного снимка а не только этой статьи. Чтобы этого избежать выполняем (порядок важен):

Код: Выделить всё

EXEC sp_changepublication @publication = <publ_name>,
		          @property = N'allow_anonymous',
			  @value = 'false'
GO

EXEC sp_changepublication @publication = <publ_name>,
			  @property = N'immediate_sync',
			  @value = 'false'
GO
2. На дистрибьютере запускаем Replication Monitor. В нем добавляем (если нет) текущий паблишер, выбираем публикацию, далее Agents и там запускаем Snapshot Agent.
Внимание: если не выполнить шаг 1 и флаги будут стоять в true, то запуск snapshot agent'а приведет к созданию полного снимка.
3. После отработки snapshot agent'а можно вернуть флаги в изначальное состояние (хотя не знаю зачем это делать) (порядок важен):

Код: Выделить всё

EXEC sp_changepublication @publication = <publ_name>,
			  @property = N'immediate_sync',
			  @value = 'true'
GO

EXEC sp_changepublication @publication = <publ_name>,
		          @property = N'allow_anonymous',
			  @value = 'true'
GO
Ссылки:
http://dbasimple.blogspot.com/2012/06/step-by-step.html
https://blog.pythian.com/how-to-configu ... -failover/
http://www.sqlservercentral.com/scripts ... ion/70508/
http://ansqldba.blogspot.com/2012/02/ad ... sting.html
Ответить