Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2769.0 (X64) Jun 24 2011 13:09:43 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Всем добрый день!

Описание ситуации:
Есть 2 SQL-сервера (полностью идентичные), между ними было поднято зеркало, почему было, чуть позже. Зеркало работало, но во время установки SP2, сам SP2 упал и сервер пришлось реанимировать, после переустановки SQL-сервера были подняты из бэкапов базы master и msdb. Сервер поднялся. Сейчас ситуация выглядит следующим образом:
Сервер А: базы находятся в состоянии Principal, Disconnected
Сервер Б: базы находятся в состоянии In Recovery
Сервер Б: Нет слушателя на порту 5022, этот порт используется для зеркалирования. В связи с чем сервер А и Б не могут установить TCP\IP сессию для синхронизации зеркал.

Запрос на сервере Б: select * from sys.tcp_endpoints where name = 'Mirroring'

name endpoint_id principal_id protocol protocol_desc type type_desc state state_desc is_admin_endpoint port is_dynamic_port ip_address
Mirroring 65544 261 2 TCP 4 DATABASE_MIRRORING 0 STARTED 0 5022 0 NULL


Запрос на сервере Б: select * from sys.database_mirroring_endpoints

name endpoint_id principal_id protocol protocol_desc type type_desc state state_desc is_admin_endpoint role role_desc is_encryption_enabled connection_auth connection_auth_desc certificate_id encryption_algorithm encryption_algorithm_desc
Mirroring 65544 261 2 TCP 4 DATABASE_MIRRORING 0 STARTED 0 3 ALL 0 3 NEGOTIATE 0 0 NONE



Что пробовал:
1. Перезагрузка сервера\SQL-сервера - не помогает.

2. Выполнение команд
ALTER ENDPOINT Mirroring STATE = STOPPED
ALTER ENDPOINT Mirroring STATE = STARTED

3. Удалить Endpoint и заново его создать
IF EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N'Mirroring')
DROP ENDPOINT [Mirroring]
GO
CREATE ENDPOINT [Mirroring]
AUTHORIZATION [domain\useradmin]
STATE=STARTE
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL, AUTHENTICATION = WINDOWS NEGOTIATE
, ENCRYPTION = DISABLED)
GO

Результат одинаков, у сервера Б, слушатель на порту не появляется.
Проверял: netstat -ano

Переустановка SQL-сервера не помогает, т.к. это вариант уже был опробован, с восстановлением из бэкапа баз master и msdb


Буду рад любым идеям с вашей стороны, т.к. сам уже 3 сутки не могу понять как с этим бороться и что можно сделать.
9 сен 12, 15:01    [13136175]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
P.S. Ни каких ошибок в логах системы и SQL-сервера нет.
9 сен 12, 15:04    [13136180]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
Часто это проблемы с авторизацией. Попробуйте AUTHENTICATION = WINDOWS NTLM
10 сен 12, 13:56    [13140086]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Здравствуйте Александр.
Спасибо за совет, обязательно попробую. Т.к. это боевые сервера, то смогу сделать только ночью в регламентные часы.

Хочу также сделать update темы.
Выяснил почему падала установка SP2 for SQL2008R2.
При апдейте не мог выполниться скрипт по обновлению базы msdb, т.к. база была заблокирована внешними конектами от Principal сервера.
Нашел статью в которой описывается подобная проблема. http://tekctrl.blog.com/2011/06/sql-server-not-starting-after-an-update/

Для себя сделал пометку, что обновления лучше ставить при отключенных внешних соединениях.
10 сен 12, 18:39    [13142174]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко,

Поменял тип авторизации не помогло.
10 сен 12, 20:43    [13142564]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
В логах не появляются записи:

Message
Server is listening on [ 'any' <ipv4> 5022].
Message
Server is listening on [ 'any' <ipv6> 5022].

Почему не понятно.
Есть у кого-то еще идеи в чем может быть проблема?
10 сен 12, 22:45    [13142938]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
IDimas
P.S. Ни каких ошибок в логах системы и SQL-сервера нет.

в логах может и нет, т.к зеркалирование то не включено.
Когда в графическом представление, нажимаете кнопку начать зеркалирование , что говорит студия?
В логах монитора зеркалирования так же ничего нет?! не может быть.
10 сен 12, 23:27    [13143084]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Slava_Nik
IDimas
P.S. Ни каких ошибок в логах системы и SQL-сервера нет.

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



Зеркалирование включено, в противном случае, я не знаю ни одного способа как перевести базу в состояние Principal, Disconnected.

В GUI No connection: cannot connect to the mirror or witness server instances

Что такое логи мониторинга зеркалирования? Вы имеете ввиду Database mirroring monitor наверно.
Там сообщение о невозможности получить данные с зеркала. И это так и есть, т.к. на зеркале нет слушателя зарегестрированного на порту 5022 (этот порт используется для зеркалирования)

К сообщению приложен файл. Размер - 73Kb
11 сен 12, 01:56    [13143371]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41


К сообщению приложен файл. Размер - 19Kb
11 сен 12, 02:00    [13143372]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
IDimas
Александр Гладченко,

Поменял тип авторизации не помогло.


Поменять нужно на всех трёх серверах.
Попробуйте для начала настроить без свидетеля и асинхронно.
Отключите IPv6
11 сен 12, 13:13    [13145453]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко
IDimas
Александр Гладченко,

Поменял тип авторизации не помогло.


Поменять нужно на всех трёх серверах.
Попробуйте для начала настроить без свидетеля и асинхронно.


Это не поможет, т.к. при выполнение команды:
IF EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N'Mirroring')
DROP ENDPOINT [Mirroring]
GO
CREATE ENDPOINT [Mirroring]
AUTHORIZATION [domain\username]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL, AUTHENTICATION = WINDOWS NTLM
, ENCRYPTION = DISABLED)
GO

должен подниматься слушатель на порту 5022, а этого не происходит, поэтому и настройка зеркалирования бессмысленна, т.к. при установке зеркала, до начала авторизации будет выполнено подключение к порту 5022.
Пользователь domain\username является локальным администратором на сервере.

Александр Гладченко
Отключите IPv6

IPv6 выключено на всех серверах: Principal, Mirror, Witness
Пользовался статьей: http://support.microsoft.com/kb/929852
11 сен 12, 18:01    [13147876]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
IDimas,

что показывает netstat -p TCP?
11 сен 12, 18:09    [13147926]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко
IDimas,

что показывает netstat -p TCP?


Proto Local Address
TCP 127.0.0.1:34572
TCP 127.0.0.1:38364
TCP 172.27.246.195:135
TCP 172.27.246.195:135
TCP 172.27.246.195:1027
TCP 172.27.246.195:1027
TCP 172.27.246.195:1027
TCP 172.27.246.195:1433
TCP 172.27.246.195:1433
TCP 172.27.246.195:1433
TCP 172.27.246.195:1433
TCP 172.27.246.195:1433
TCP 172.27.246.195:1433
TCP 172.27.246.195:1433
TCP 172.27.246.195:1704
TCP 172.27.246.195:1953
TCP 172.27.246.195:2425
TCP 172.27.246.195:3389
TCP 172.27.246.195:38365
TCP 172.27.246.195:38373
TCP 172.27.246.195:38374
TCP 172.27.246.195:38548
TCP 172.27.246.195:38558
TCP 172.27.246.195:38560
TCP 172.27.246.195:38562
TCP 172.27.246.195:38563
TCP 172.27.246.195:60863
11 сен 12, 18:29    [13148052]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
[quot IDimas]
Александр Гладченко
IDimas,

что показывает netstat -p TCP?


О чем я и говорил, что служба SQL-сервера стартанула, а слушатель на порту 5022 не поднялся.
Различные варианты с удаление\созданием\стопом\стартом endpoint-а ни каких результатов не приносят.
11 сен 12, 18:33    [13148076]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
IDimas,

Попробуйте сменить порт, например, на 7022.

Сообщение было отредактировано: 11 сен 12, 18:33
11 сен 12, 18:33    [13148078]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко
IDimas,

Попробуйте сменить порт, например, на 7022.


Попробовал, безрезультатно.
11 сен 12, 18:37    [13148108]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
IDimas,

Убедитесь, что службы стартуют от доменных учёток и им даны гранты на конечные точки.
http://msdn.microsoft.com/ru-ru/library/87D3801B-DC52-419E-9316-8B1F1490946C.aspx
11 сен 12, 18:45    [13148144]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко
IDimas,

Убедитесь, что службы стартуют от доменных учёток и им даны гранты на конечные точки.
http://msdn.microsoft.com/ru-ru/library/87D3801B-DC52-419E-9316-8B1F1490946C.aspx


Службы стартую от доменной учетки, эта учетка включена в группу локал админ на сервере и роль sysadmin на SQL-сервере.
Принудительно выдал гранты:

use [master]
GO
GRANT ALTER ON ENDPOINT::[Mirroring] TO [domain\user]
GO
use [master]
GO
GRANT CONNECT ON ENDPOINT::[Mirroring] TO [domain\user]
GO
use [master]
GO
GRANT CONTROL ON ENDPOINT::[Mirroring] TO [domain\user]
GO
use [master]
GO
GRANT TAKE OWNERSHIP ON ENDPOINT::[Mirroring] TO [Idomain\user]
GO
use [master]
GO
GRANT VIEW DEFINITION ON ENDPOINT::[Mirroring] TO [domain\user]
GO
11 сен 12, 18:58    [13148194]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко
IDimas,

Убедитесь, что службы стартуют от доменных учёток и им даны гранты на конечные точки.
http://msdn.microsoft.com/ru-ru/library/87D3801B-DC52-419E-9316-8B1F1490946C.aspx


Результат не изменен: слушатель не стартует.
11 сен 12, 19:00    [13148198]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
IDimas,

У вас каждая учётка службы имеет GRANT CONNECT ON ENDPOINT на всех серверах?
...если так, попробуйте включить все эти учётки в локальные админы на всех серверах (для пробы).
11 сен 12, 19:03    [13148212]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
Есть в логах скуля: "Service Broker manager has started" ?
11 сен 12, 19:05    [13148220]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
В общем нашел способ запустить слушателя на зеркале, но это из ряда фантастики и работает до первой перезагрузки sql-сервера.

Шаги которые предпринял:
1. Поднял на другом сервере чистый SQL-сервер с билдом 10.50.4000, что соответствует SQL Server 2008 R2 SP2
2. Поднял Endpoint с портом 5022. Слушатель появился и после старт\стоп SQL-сервера поднимается бех проблем.
3. Стоп SQL-сервер.
4. Скопировал базы master и msdb, с чистой установки, в отдельный каталог.
5. Подложил свои продакшен базы master и msdb.
6. Старт SQL-сервер.
7. Удалил и создал Endpoint.
8. Выполнил команды:
alter endpoint mirroring state=stopped
go
alter endpoint mirroring state=started
go

И о чудо слушатель поднялся!
Но не долго я радовался, после перезагрузки сервер опять не может поднять слушатель на порту.
Но, если проделать все операции, указанные выше, то опять случается чудо.

Кто-нибудь может пояснить, что за магия с подключением\отключением баз?
И как сделать так, чтобы слушатель ни куда не пропадал после перезагрузки?
11 сен 12, 19:15    [13148288]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко
Есть в логах скуля: "Service Broker manager has started" ?

Точно!
Когда порт не поднимается записи "Service Broker manager has started" в логах нет!
Правда как нет и ошибок о при его старте.
11 сен 12, 19:28    [13148333]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко
IDimas,

У вас каждая учётка службы имеет GRANT CONNECT ON ENDPOINT на всех серверах?
...если так, попробуйте включить все эти учётки в локальные админы на всех серверах (для пробы).

Да каждая учетка имеет гранты.
Уже были включены в локал админы на всех серверах.
11 сен 12, 19:30    [13148337]     Ответить | Цитировать Сообщить модератору
 Re: Зеркалирование. Не поднимается порт.  [new]
IDimas
Member

Откуда:
Сообщений: 41
Александр Гладченко
Есть в логах скуля: "Service Broker manager has started" ?

Запрос
SELECT is_broker_enabled, name FROM sys.databases
WHERE name = 'msdb'
Возвращает:
is_broker_enabled name
1 msdb

А вот запись о старте "Service Broker manager has started" в логах не появляется.
11 сен 12, 19:42    [13148386]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить