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

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
  • Повреждение файлов базы данных на зеркальном сервере

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

Теги

 

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