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

MSSQL — восстанавливаем работу зеркала

SQL

Часто бывает так, что после каких-то действий по обновлению или из-за перезагрузки сервера процесс зеркалирование базы может приостановиться. База висит в статусе SUSPENDED.

При этом БД не жмётся, лог транзакций постоянно растёт, что может привести к остановке БД. Бэкап тоже может перестать работать из-за разросшегося лога.

Можно разобрать зеркало и снова собрать. Однако, если БД большая, этот процесс может занять много времени. Более правильный способ — попытаться восстановить зеркалирование.

Классический метод прост, на основной БД нужно запустить:

ALTER DATABASE [имя_вашей_бд] SET PARTNER RESUME

Однако, как показывает практика, это не всегда работает. База переводится в режим SYNCHRONIZED, при этом ничего не происходит. Database Mirroring Monitor показывает, что данные не передаются.

В этом случае идём на зеркальную БД и тоже её пинаем:

ALTER DATABASE [имя_вашей_бд] SET PARTNER RESUME

Немного ждём.

mssql

Потекло. Мне обещают, что через час всё синхронизируется. Естественно, время не точное. Я вижу что отправка пошла, но приём пока медленный. Понаблюдаю.

sql

Прошло пол часа. Половина отстающих данных улетела, но не восстановилась.

sql

Ещё через пол часа данные улетели полностью, но на зеркальном сервере не восстанавливаются.

Передёргиваем зеркальную базу:

ALTER DATABASE [имя_вашей_бд] SET PARTNER SUSPEND
ALTER DATABASE [имя_вашей_бд] SET PARTNER RESUME
sql

Так же лучше. Дождусь синхронизации и запланирую перезагрузку сервера.

Однако, поведение зеркальной базы странное, синхронизации можно не дождаться. Иногда приходится разбирать зеркало, а потом собирать заново.

Теги

 

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

Seafile — установка на Ubuntu 18.04 LTS

Seafile — это личное облачное хранилище для хранения данных в стиле Dropbox. Сегодня мы развернём это хранилище на виртуальном сервере. В качестве гипервизора у нас ESXi 6.7 Update 1.