Зеркальное отображение базы данных и сервисный брокер. Маршрут зеркала не работает - PullRequest
1 голос
/ 23 марта 2011

У нас уже давно работает сервисный брокер (работает на том же сервере).Теперь мы хотим добавить зеркалирование базы данных между двумя серверами.

Чтобы это работало, нам нужно было создать новые маршруты и новые конечные точки для сервисного посредника (для поддержки зеркалирования в случае сбоя).

Мы попробовали это в среде разработки, работающей с точно такой же версией Windows и SQL Server.Что такое:

Microsoft SQL Server 2008 R2 (окончательная первоначальная версия) - 10.50.1734.0 (X64) 11 августа 2010 г. 12:51:02 Авторское право (c) Microsoft Corporation Enterprise Edition (64-разрядная версия) в Windows NT 6.1 (Build 7600:)

Одно отличие состоит в том, что среда разработки работает в виртуальной системе.

Когда мы реализовали это в нашей производственной среде, у нас возникли проблемы, которых мы никогда не видели в среде разработки.

Обновления компонента Service Broker стали очень медленными, но мы могли видеть, что некоторые сообщения были получены.

Полученное нами сообщение об ошибке:

Зеркальный маршрут не работает .TCP: //server1.domain.local: 4022 действует как «Неизвестно» [].«TCP: //server2.domain.local: 4022» действует как «Неизвестно» [].

Зеркальный маршрут работает, но подключен только к принципалу.«TCP: //server1.domain.local: 4022» действует как «Принципал» [].«TCP: //server2.domain.local: 4022» действует как «Неизвестно» [].

На наших серверах разработки мы получили похожее сообщение:

Зеркальный маршрут находится в рабочем состоянии .TCP: //server1.devdomain.local: 4022 действует как 'Mirror' [].«TCP: //server2.devdomain.local: 4022» действует как «Принципал» [].

Зеркальный маршрут работает, но подключен только к принципалу.TCP: //server1.devdomain.local: 4022 действует как «Неизвестно» [].«TCP: //server2.devdomain.local: 4022» действует как «Принципал» [].

Как вы можете видеть, мы получаем сообщения о том, что зеркальный маршрут не работает на наших производственных серверах, но нена наших серверах разработки.

Зеркальное отображение базы данных настроено через порт 5022 и брокер служб для 4022.

Некоторые примеры создания маршрутов / конечных точек:

--created on booth principal and mirror
CREATE ENDPOINT [Mirroring] 
    AUTHORIZATION [domain\sqlservice]
    STATE=STARTED
    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
    FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = DISABLED)

--created on booth principal and mirror
CREATE ENDPOINT [BrokerEndpoint] 
    AUTHORIZATION [domain\sqlservice]
    STATE=STARTED
    AS TCP (LISTENER_PORT = 4022, LISTENER_IP = ALL)
    FOR SERVICE_BROKER (MESSAGE_FORWARDING = DISABLED, MESSAGE_FORWARD_SIZE = 10, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = DISABLED)

--created in DB1 (on principal)
CREATE ROUTE [RouteToDB2]  AUTHORIZATION [dbo]  WITH SERVICE_NAME = N'ExecSPReceiveService' , BROKER_INSTANCE = N'DF46452B-97F3-4924-AD2A-A130FDC2016F' , ADDRESS = N'TCP://server1.domain.local:4022' , MIRROR_ADDRESS = N'TCP://server2.domain.local:4022' 

--created in DB2 (on principal)
CREATE ROUTE [RouteToDB1]  AUTHORIZATION [dbo]  WITH SERVICE_NAME = N'ExecSPSendService' , BROKER_INSTANCE = N'91CBA730-48A2-47A8-95C8-0558706250AB' , ADDRESS = N'TCP://server1.domain.local:4022' , MIRROR_ADDRESS = N'TCP://server2.domain.local:4022' 

Когда мы удаляем конечную точку зеркального отображения базы данных, все снова начинает работать нормально.

Есть идеи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 августа 2012

Проблема заключалась в том, что у нас была настройка шаблона «запускай и забывай» для сервисного брокера.

http://rusanu.com/2006/04/06/fire-and-forget-good-for-the-military-but-not-for-service-broker-conversations/

Мы реализовали лучшее решение, которое продвигает rusanu, и все былоработая после этого.

Мы также использовали примеры «быстрой передачи данных», которые показаны здесь http://msftsbprodsamples.codeplex.com/

0 голосов
/ 23 марта 2011

Насколько я знаю, эти сообщения - не ошибки, а ожидаемые информационные сообщения, которые регистрируются, когда принципал устанавливает соединение с зеркальным сервером. Зеркальные соединения, которые не используются, теряются после 90 секунд бездействия, а затем повторно подключаются по требованию, поэтому в зависимости от схемы перемещения данных зеркального отображения вы можете видеть эти сообщения маршрутизации более или менее часто.

Когда вы говорите, что обновления компонента Service Broker стали действительно медленными, можете ли вы привести некоторые цифры, указывающие, насколько они медленнее по сравнению с базовым уровнем?

...