Мені завжди подобається візуалізувати рішення з високою доступністю:
Екземпляр кластерного відключення SQL Server (FCI)
Що є високодоступним? Весь екземпляр. Це включає всі серверні об’єкти (входи, завдання агента SQL Server тощо). Сюди також входять бази даних та їх сукупності. Це чудове рішення для високодоступних екземплярів SQL Server, оскільки це буде рівнем стримування цього рішення.
А як щодо звітування? Ні, NULL, не існує. Екземпляр кластерного відключення має активний вузол, який доставляє групу кластерів, що містить екземпляр, VNN тощо.
Що відбувається, коли відбувається аварійний перехід? Час простою для FCI визначається кількістю часу, яке потрібно пасивному вузлу, щоб захопити ресурс кластера та привести екземпляр SQL Server у робочий стан. Зазвичай це мінімально за часом.
Будь-яка клієнтська абстракція? Так, це буде внутрішньо вбудовано з назвою віртуальної мережі для екземпляра кластерного відключення. Це завжди вказуватиме на активний вузол, який наразі доставляє ресурс кластера SQL Server.
Завжди про групи доступності
Що є високодоступним? Група доступності буде логічним стримуванням високої доступності тут, тоді як група доступності складається з ряду баз даних та імені віртуальної мережі (слухач, необов'язковий ресурс кластера). Варто зауважити, що серверні об’єкти, такі як входи в систему та завдання SQL Server Agent, не будуть частиною рішення HA, і слід звернути особливу увагу на забезпечення їх належної реалізації з групою доступності. Це не надто обтяжлива вимога, але її потрібно доглядати.
А як щодо звітування? Це чудове рішення для звітування, хоча я, мабуть, не використовував би синхронну репліку як мій екземпляр звітування. Є два взаємозв'язки, синхронні та асинхронні. На мою думку, і з того, що я бачив на практиці, це те, що ваша синхронна вторинна копія там чекає катастрофи. Подумайте про це як про таку репліку, яка готова прийняти помилку про втрату даних у разі виникнення проблеми. Потім з'являються асинхронні репліки, які можуть обробляти це навантаження звітності. Ви не використовуєте цю репліку як вищезгадане рішення, але більше для таких речей, як звітність. Звіт про навантаження може бути вказаний на цю репліку (безпосередньо чи опосередковано шляхом маршрутизації лише для читання через слухача).
Що відбувається, коли відбувається аварійний перехід? Для вторинної репліки синхронної фіксації, яка поєднується з автоматичним відмовою, це буде зміна стану ролі репліка з SECONDARY_NORMAL на PRIMARY_NORMAL. Для того, щоб не було автоматичного відмови, вам потрібно мати синхронну вторинну репліку, яка в даний час синхронізована, і що реалізується - це гнучка політика відмови, щоб визначити, коли насправді цей випадок повинен відбутися. Ця політика справді може бути налаштована.
Будь-яка клієнтська абстракція? Так, ви необов’язково можете налаштувати слухач групи доступності AlwaysOn. Це в основному лише назва віртуальної мережі (може розглядатися через WSFC як ресурс кластера в групі кластерів AG), який вказує на поточну первинну репліку. Це ключова частина переміщення вашої звітної навантаження навколо, а також встановлення списку маршрутів лише для читання на будь-яких серверах, на які ви хочете перенаправляти трафік ReadOnly (це встановлюється через рядок підключення, за допомогою постачальника .NET Framework для SQL Сервер, це буде параметр Намір програми , встановлений на ReadOnly ). Вам також потрібно встановити URL-адресу маршрутизації, доступну лише для читання, для кожної репліки, на яку ви хочете отримати це навантаження звітності, перебуваючи в ролі вторинної реплікації.
Транзакційна реплікація
Що є високодоступним? Це сперечається, але я нічого не кажу . Я не бачу реплікації як рішення високої доступності. Так, зміни даних підштовхуються до передплатників, але ми говоримо на рівні публікацій / статей. Це буде підмножина даних (може включати всі дані, але це не буде примусово виконуватись. Тобто ви створюєте нову таблицю в базі даних видавця, і вона автоматично не буде висунута підписникам). Що стосується HA, це нижня стовбур, і я не згрупуватиму його там із твердим розчином HA.
А як щодо звітування? Прекрасне рішення для звітування про підмножину даних, про це не виникає сумнівів. Якщо у вас є база даних на 1 ТБ, яка є дуже транзакційною, і ви хочете, щоб це навантаження звітності не було в базі даних OLTP, транзакційна реплікація - це чудовий спосіб підштовхувати підмножину даних до абонента (або передплатників) для завантаження звітності. Що станеться, якщо з цього 1 ТБ даних завантаженість вашої звітності становить близько 50 ГБ? Це розумне рішення та відносно налаштоване для задоволення потреб вашого бізнесу.
Підсумок
Що зводиться до цього - це кілька питань, на які потрібно відповісти (частково бізнес):
- Що має бути високодоступним ?
- Що диктує SLA для HA / DR?
- Яка звітність буде мати місце та які затримки прийнятні?
- Що нам потрібно впоратися з географічно розсіяною НА? (реплікація пам’яті дорога, але обов'язкова з FCI. АГ не вимагають спільного зберігання в окремих автономних екземплярах, і ви можете використовувати свідчення спільного доступу до файлів для кворуму, що потенційно позбавляє від необхідності спільного зберігання)