Відразу зауважимо, що віддзеркалення не є єдиною технологією, яка застосовується для підвищеної відмовостійкості. Існує ще й публікація журналу транзакцій (логшіпінг) а також реплікація, але не кожна БД може підтримувати реплікацію, а логшіпінг вимагає публікацію журналу транзакцій на загальному ресурсі, що далеко не завжди типово. У дзеркального відображення теж є свої обмеження, наприклад не можна створювати дзеркала службові БД master, msdb, tempdb або model, але так вже вони потрібні? Досить копії master.
До переваг дзеркального відображення відносяться:
- захист даних:
- підвищена доступність даних;
- не потрібні загальні диски;
- обладнання серверів-партнерів може відрізнятися;
- доступність при оновленнях
Термінологія дзеркального відображення.
Основний сервер (Principal) - робочий сервер-джерело, на якому розміщується база даних, яка відправляє свої журнали транзакцій дзеркальному сервера і його базі даних.
Дзеркальний сервер (Mirror) - сервер-одержувач, на якому розміщується резервна копія бази даних. Дзеркальна копія постійно синхронізується з базою даних основного сервера.
Стежить сервер (Witness) - сервер, який спостерігає за роботою основного і дзеркального серверів, і може запустити процес автоматичного переходу на інший ресурс при збої (поміняти ролі основного і дзеркального сервера). Стежить сервер є необов'язковим компонентом і може бути відсутнім.
Як працює дзеркальне відображення.
Оснойной сервер обслуговує запити користувачів і відправляє журнал транзакцій дзеркальному сервера. Тобто дзеркальний сервер повторює всі операції вставки, оновлення та видалення, як і в основній базі. Як тільки дзеркальний сервер виконує і фіксує транзакції, він відправляє основному підтверджує повідомлення. У режимі високого рівня безпеки нові транзакції основним сервером виконуватися не будуть, до отримання підтвердження від дзеркального. Це нагадує йдуть поруч автомобілі, причому якщо один починає відставати, другий теж скидає швидкість. Повільно, але надійно. При збої на основному сервері необхідно переключитися на дзеркальний вручну (по суті поміняти ролі основний-дзеркальний). Режим високого рівня доступності схожий на описаний вище, за винятком того, що перемикання відбувається автоматично, доступність серверів контролює стежить сервер. Як тільки виходить з ладу основний сервер, що стежить змінює їх ролями з дзеркальним, коли відновиться основний, відбудеться зворотна заміна.
На противагу описаному, режим високої продуктивності (ще називають асинхронний) дозволяє основного сервера виконувати транзакції, не чекаючи підтвердження від дзеркального. Тобто порушується, так звана, транзакційна безпеку. Особливо це підходить, коли дзеркальний володіє менш потужними апаратними ресурсами. Тобто один з атвомобіль виривається вперед, другий намагається його наздогнати. Цей режим не вимагає наявності стежить сервера.
Дії після збою.
Припустимо, що в результаті збою пропав дзеркальний сервер, в такому випадку основний продовжує обслуговувати призначені для користувача підключення. Після відновлення дзеркального, резервна база автоматично підключиться і наздожене робочу.
Якщо зруйнована центральна база, необхідно виконати примусове відновлення:
ALTER DATABASE MIRROR_TEST SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
Частина даних може загубитися (не встигли потрапити в дзеркало), але тут доведеться миритися. Після примусового відновлення дзеркальна база стає основною, а основна - дзеркальною. Щоб запустити віддзеркалення, на новій дзеркальній виконуємо команду:
ALTER DATABASE MIRROR_TEST SET PARTNER RESUME
Щоб просто помінятися ролями виконуємо:
ALTER DATABASE MIRROR_TEST SET PARTNER FAILOVER
У підсумку основний стає дзеркальним, дзеркальний - основним.