Перейти к основному содержанию

MSSQL — зеркальная база в процессе восстановления

SQL

Имеется парочка MSSQL серверов с настроенным зеркалированием. После перезагрузки зеркальная база находится в состоянии "В процессе восстановления" (In Recovery). При этом на основном сервере база "Отключена" (Disconnected).

Ошибок в логах не видно. Восстановление баз после перезагрузки прошло штатно, о чем свидетельствует запись в логах:

Recovery is complete. This is an informational message only. No user action is required.

Общее восстановление всех баз данных (кроме tempdb) полностью завершено. Это основное сообщение о том, что SQL Server закончил применять транзакции к базам данных при старте.

Скорее всего проблема с эндпоинтами зеркалирования.

Определите имя эндпоинта зеркалирования на зеркальном сервере:

SELECT name FROM sys.database_mirroring_endpoints;

Обычно эндпоинт называется Mirroring или имеет похожее имя.

Перезапустите эндпоинт на зеркальном сервере:

-- 1. Останавливаем эндпоинт
ALTER ENDPOINT [Имя_Эндпоинта] STATE = STOPPED;
GO
-- 2. Запускаем эндпоинт заново
ALTER ENDPOINT [Имя_Эндпоинта] STATE = STARTED;
GO

После этого подождите 10-30 секунд и обновите список баз (F5 в SSMS).

Обычно это помогает. Если не помогло, повторите операцию на основном сервере.

Если после всех действий базы остаются в RECOVERING, это может указывать на:

  • Проблемы с сетью или доступом между серверами
  • Различия в журналах транзакций между principal и mirror
  • Повреждение файлов базы данных на зеркальном сервере

В этом случае потребуется полная перенастройка зеркалирования с нуля.

Теги

 

Похожие материалы

Включаем Database Mail в Microsoft SQL Server 2014

Для того чтобы MSSQL сервер мог слать уведомления на почту, необходимо настроить Database Mail фичу. Для чего нужны уведомления? Я, например, хочу получать письмо, когда заканчивается бэкап. Функционал этой фичи на самом деле гораздо богаче. При сноровке можно по почте слать SQL запросы и получать результаты. В моём случае это не требуется.

Теги