Как пересобрать зеркалирование Microsoft SQL Server¶
При работе базы данных с технологией зеркалирования, может возникнуть ситуация, когда потребуется развалить зеркало и собрать его заново.
К примеру, настроенное зеркалирование очень долго находилось в состоянии "Приостановлено" и база данных с логом транзакций выросла до огромных размеров.
Перед началом этой процедуру, обязательно нужно убедится, что имеется достаточный объем свободного дискового пространства, желательно освободить его как можно больше.
Иначе каждый шаг может выполняться очень долгое время, а скрипт mdb_clean может выполняться до нескольких часов или даже выпадать в исключение.
Важно на время выполнения этих работ наложить мораторий для пользователей на работу с базой данных, новые элементы не создавать, старые не редактировать и т.д.
На активной, доступной базе данных останавливаем зеркалирование: "Свойства базы данных" - "Зеркальное отображение" - "Отключить отображения".
Теперь на резервном сервере можно удалить неактивную базу данных: "Удалить" - "Закрыть существующие соединения" - "ОК".
Для очистки и сжатия меняем у базы данных модель восстановления: "Свойства базы данных" - "Параметры" - "Модель восстановления" - "Простая" - "ОК".
Выполняем скрипт mdb_clean.
Выполняем сжатие базы данных: "Задачи" - "Сжать" - "База данных" - "ОК".
Возвращаем полную модель восстановления: "Свойства" - "Параметры" - "Модель восстановления" - "Полная" - "ОК".
Теперь база данных готова к настройке зеркалирования.
Создаем бэкап базы данных: "Задачи" - "Создать резервную копию" - "Тип резервной копии - Полная".
Восстанавливаем базу данных на резервном сервер из вновь созданного бэкапа: "Восстановить базу данных" - "В базу данных - указываем тоже имя что и на основном сервере" - "на вкладке "Параметры" выставляем параметр "Оставить базу данных в неработающим состоянии..."" - "выбираем созданный бэкап" - "ставим галочку "Восстановить"" - "ОК".
На основном сервере приступаем к настройке зеркалирования: "Свойства" - "Зеркальное отображение" - "Настройка безопасности":
- ВАЖНО настройку зеркалирования выполнять из под пользователя, который специально выделен для обслуживания SQL, так как через этого пользователя настраивается соединения между серверами и базами данных. Рекомендуем завести для этого отдельную учетную запись, которая не будет использоваться в повседневной работе. Для ГТРК это пользователь "SQLLogin"
- Для комплексов ГТРК используется конфигурация со следящим сервером, которым является "RETR-01".
- Экземпляр основного сервера по-умолчанию тот, на котором выполняется настройка зеркалирования. Для ГТРК это "DCSRV-01".
- Экземпляр зеркального сервера выбираем второй сервер. Для ГТРК это "DCSRV-02" с логином "SQLLogin".
- Экземпляр следящего сервера для ГТРК выбираем "RETR-01" так же с логином "SQLLogin".
- Для всех экземпляров порт прослушивания оставляем по-умолчанию "5022".
- Указываем учетные записи для запуска служб обязательно с указанием домена, для ГТРК так же "XXX\SQLLogin" (где XXX - домен в виде буквенного кода региона).
- После выполнения автоматической поверки точек, поверяем созданную конфигурацию и запускаем зеркалирование "Начать отображение".
Обновляем оба севера и проверяем статусы.
У основного должен быть "Участник, Синхронизирован", у зеркального - "Зеркальное отображение, Синхронизирован, Восстановление из копии".
Пробуем выполнить переход на резервный и обратно.
Для этого на основном: "Свойства" - "Зеркальное отображение" - "Отработка отказа" - "Да".
Статусы должны поменяться на противоположные.
Отрабатываем отказ уже на резервном сервере, чтобы переход выполнился обратно на основной.
Если никаких ошибок не возникло, статусы серверов корректные, можно считать что настройка прошла успешно и зеркалирование работает.