Группы кластеризации и транзакций по сравнению с группами доступности

Предполагая, что вам нужно убедиться, что ваше приложение, которое полагается на SQL Server 2012 в качестве базы данных, доступно круглосуточно, даже если один серверный компьютер выходит из строя.

Как разработчик, а не администратор базы данных, я изо всех сил пытаюсь понять, когда использовать этот сценарий для моего отказа /высокой доступности:

  • Два (или более) сервера в отказоустойчивом кластере Windows, SQL Server как кластерный экземпляр
  • Два (или более) экземпляра SQL Server, которые постоянно обновляются с транзакционной репликацией
  • Два (или более) SQL-сервера в группе доступности SQL Server, настроенные в режиме синхронной фиксации

Какой из этих сценариев работает для какой рабочей нагрузки и какой отказ /отключение могут выполняться этими сценариями? Являются ли они даже сопоставимыми /обменными?

46 голосов | спросил marc_s 22 52013vEurope/Moscow11bEurope/MoscowFri, 22 Nov 2013 23:52:04 +0400 2013, 23:52:04

4 ответа


49

То, как мне всегда хочется визуализировать решения высокой доступности, выглядит следующим образом:

Экземпляр отказоустойчивого кластера SQL Server (FCI)

Что такое высокая доступность? Весь экземпляр. Это включает все серверные объекты (логины, задания агента SQL Server и т. Д.). Это также включает базы данных и их содержащие объекты. Это отличное решение для высокодоступных экземпляров SQL Server, потому что это будет уровень сдерживания с данным решением.

Как насчет отчетности? Нет, NULL, несуществующий. У экземпляра отказоустойчивого кластера есть активный узел, предоставляющий группу кластеров, содержащую экземпляр, VNN и т. Д., А все остальные узлы являются пассивными, сидят без дела (в отношении текущей группы кластеров) и ждут перехода на другой ресурс.

Что происходит при отказе? . Время простоя для FCI будет определяться количеством времени, которое занимает пассивный узел, чтобы захватить ресурс кластера и привести экземпляр SQL Server в . Это, как правило, минимальное время.

Любая абстракция клиента? Да, это будет врожденно встроено с именем виртуальной сети для экземпляра отказоустойчивого кластера. Это всегда укажет на активный узел, который в настоящее время предоставляет ресурс кластера SQL Server.

Группы доступности AlwaysOn

Что такое высокая доступность? Группа доступности будет логической защитой высокой доступности здесь, тогда как группа доступности состоит из нескольких баз данных и имени виртуальной сети (слушателя, дополнительный ресурс кластера). Стоит отметить, что серверные объекты, такие как логины и задания агента SQL Server, не будут частью решения HA, и необходимо принять особое соображение, чтобы убедиться, что они правильно реализованы в группе доступности. Не слишком сложное требование, но его нужно заботиться.

Что такое отчетность? Это отличное решение для отчетности, хотя я, вероятно, не буду использовать синхронную реплику в качестве моего экземпляра для отчетов. Существуют две связи фиксации, синхронные и асинхронные. По моему мнению и из того, что я видел на практике, заключается в том, что ваша синхронная вторичная копия ждет ожидание катастрофы. Подумайте об этом как о той реплике, которая готова принять отказ при отказе данных в случае сбоя. Тогда есть асинхронные реплики, которые могут обрабатывать эту нагрузку на отчетность. Вы не используете эту реплику в качестве вышеупомянутого решения, но moreso для таких вещей, как отчетность. Отчетные рабочие нагрузки можно указать на эту реплику (прямо или косвенно через маршрутизацию только для чтения через слушателя).

Что происходит, когда происходит переход на другой ресурс? . Для вторичной реплики синхронной фиксации, которая сопряжена с автоматическим переходом на другой ресурс, это будет изменение состояния роли реплики от SECONDARY_NORMAL до PRIMARY_NORMAL. Чтобы обеспечить автоматический переход на другой ресурс, вам необходимо иметь синхронную вторичную реплику, которая в настоящее время синхронизирована, и что реализовано Гибкая политика отказоустойчивости , чтобы определить, когда на самом деле должен произойти переход на другой ресурс. Эта политика действительно настраивается.

Любая абстракция клиента? Да, вы могли бы дополнительно настроить прослушиватель группы доступности AlwaysOn. Это в основном просто имя виртуальной сети (можно увидеть через WSFC в качестве ресурса кластера в группе кластеров AG), которая указывает на текущую первичную реплику. Это ключевая часть изменения рабочей нагрузки для отчетов, а также настройка списка маршрутов только для чтения на любых серверах, которые вы хотите перенаправить на трафик ReadOnly (это устанавливается через строку подключения с помощью поставщика .NET Framework для SQL Server, это будет параметр Application Intent , установленный в ReadOnly ). Вам также необходимо установить URL-адрес маршрутизации только для чтения для каждой реплики, в которой вы хотите получить эту рабочую нагрузку для отчетов, в то время как в роли вторичной реплики.

Транзакционная репликация

Что доступно? Это можно утверждать, но я ничего не скажу . Я не вижу репликации в качестве решения с высокой доступностью. Да, модификации данных распространяются на подписчиков, но мы говорим на уровне публикации /статьи. Это будет подмножество данных (может включать все данные, но это не будет соблюдаться. 1. Вы создаете новую таблицу в базе данных издателя, и это не будет автоматически передано подписчикам). Что касается HA, это нижняя часть ствола, и я не буду группировать ее там с помощью твердотельного HA-решения.

Как насчет отчетности? Отличное решение для отчетности по подмножеству данных, не говоря уже об этом. Если у вас есть база данных 1 ТБ, которая является очень транзакционной, и вы хотите сохранить эту нагрузку для отчетов с OLTPбаза данных, транзакционная репликация - отличный способ подтолкнуть подмножество данных подписчику (или подписчикам) для рабочей нагрузки. Что произойдет, если из 1 Тбайта данных ваша рабочая нагрузка составляет всего около 50 ГБ? Это интеллектуальное решение и относительно настраивается для удовлетворения потребностей вашего бизнеса.

Резюме

В чем дело, это несколько вопросов, на которые нужно ответить (частично от бизнеса):

  1. Что должно быть высокодоступным ?
  2. Что означает SLA для HA /DR?
  3. Какая отчетность будет иметь место и какие задержки приемлемы?
  4. Что нам нужно для обработки с помощью географически распределенной HA? (репликация хранилища является дорогостоящей, но обязательно с FCI. AG не требуют совместного использования хранилища из автономных экземпляров, и вы можете использовать свидетеля общего доступа к файлам для кворума, потенциально исключающего необходимость в общем хранилище).
ответил Thomas Stringer 23 62013vEurope/Moscow11bEurope/MoscowSat, 23 Nov 2013 00:07:53 +0400 2013, 00:07:53
22
  

два (или более) сервера в отказоустойчивом кластере Windows, SQL Server как   кластерный экземпляр

  1. Какая рабочая нагрузка? «Это зависит» - но серьезно, это полезно для онлайн-приложения, где вам нужно иметь локальный доступ в центре обработки данных высокой доступности. Вы защищены от сбоя одной машины или одной операционной системы. Все логины, задания, новые базы данных, обслуживание и т. Д. Автоматически синхронизируются тем фактом, что это кластер с двумя узлами, которые одинаково используют одно и то же хранилище, поэтому у них есть все те же системные базы данных. Очень быстрый переход на другой ресурс, но все же есть икота, которая выглядит как перезапуск SQL Server при сбое.

  2. Недостатки /проблемы . Единственной точкой отказа является ваше хранилище и все его компоненты. Поставщики SAN всегда говорят, что «SAN не терпят неудачу», но есть много движущихся частей в сети хранения данных, и, как я писал о здесь , они могут. Кроме того, вы платите за вторичный сервер, который ничего не может сделать, кроме как повесить и подождать. Теперь вы можете активировать Active /Active /Multi-Node и иметь два активных экземпляра, которые могут отказываться в любом направлении и использовать второй узел.

  3. Автоматический откат? «Самый автоматический». Никакого свидетеля не нужно, это кластер. Это задача кластера, чтобы сделать его максимально бесшовным. Теперь с любым из них, когда произойдет переход на другой ресурс, вы «почувствуете» это, потому что SQL должен запускаться или соединения должны указывать. Здесь, когда это происходит, вы будете в основном чувствовать себя как перезапуск SQL, базы данных возвращаются и запускают восстановление /etc.

Если у меня есть клиент, скажите «Я хочу полностью использовать все базы данных, все логины и т. д.» в среде высокой доступности в моем локальном центре обработки данных, потому что у меня невероятно низкая допустимость простоя, я бы рассмотрел экземпляры отказоустойчивого кластера (хотя последний вариант, о котором вы упоминаете, является сильным соперником, за исключением необходимости выполнять некоторые издержки управления). Я бы, вероятно, сделал локальный FCI и AG async, вторичный для защиты от сбоя сайта или отказа SAN.

  

два (или более) экземпляра SQL Server, которые постоянно обновляются   транзакционная репликация

  1. Какая рабочая нагрузка? Я, честно говоря, не поеду сюда для многих случаев необходимости высокой доступности или аварийного восстановления в качестве первого выбора. Не в SQL 2012 точно. Но в принципе это хорошо, если вам нужно было пойти в центр обработки данных, который был не близок, вы не могли использовать AG (возможно, проблема с доменом, препятствующая использованию кластера окон, необходимых для AG), возможно, вы хотели быть в стандарте SQL Server, который может выполнять репликацию, но не AG, но вы все еще хотели иметь возможность читать на вторичной стороне и быть асинхронными.
  2. Концы /проблемы - . Это репликация. У этого есть накладные расходы, он может выйти из синхронизации, вы можете создавать проблемы с производительностью на стороне источника и т. Д.
  3. Автоматическое отключение - Нет. Вы должны управлять им самостоятельно. Либо через CNAME, указывающие на тот или другой, и теоретически вы можете написать свой собственный процесс, чтобы сделать это, но из коробки? Обратите внимание:
  

два (или более) SQL-сервера в группе доступности SQL Server, настроены   в режиме синхронной фиксации

Это то, что я помогаю людям внедрять все больше и больше в последнее время, хотя иногда я все еще перехожу к кластеризации.

  1. Что такое рабочая нагрузка? Это здорово, когда у меня есть управляемый набор баз данных для синхронизации, а также ресурсы и время, чтобы убедиться, что задания, логины, новые базы данных и т. д. остаются в синхронизации (хотя команда SQL-навыки создали великолепную добавьте в , чтобы автоматизировать некоторые из них, чтобы вы сделали его еще более сильным вариантом). Мне нравится это, когда я хочу, чтобы вещи были полностью раздельными. Я защищаю от проблем с оборудованием, проблем ОС, проблем с установкой SQL, проблем с исправлениями и проблем с SAN /Storage. Я также получаю преимущество от возможности иметь вторичную (если я хочу заплатить за нее корпоративную лицензию), чтобы быть активной вторичной, из которой я могу читать, делать резервные копии и т. Д. Плюс в будущем я могу добавить третью вторичный, который является асинхронным на удаленном узле и имеет failover /DR.
  2. Недостатки /проблемы . Лицензирование, максимальное количество реплик, затраты на лицензирование, чтобы воспользоваться преимуществами одного из самых больших преимуществ (активных вторичных), требующих предприятия, требуют в два раза больше хранилища, чем кластеризация.
  3. Автоматическое отключение - Да. Это может произойти с установкой свидетеля, и ваши разработчики приложений могут подключаться к слушателю вместо узла, поэтому происходит переход на другой ресурс, когдаслушателей, и вы должны быть там хорошими. Так что да, вы можете сделать это здесь - и должны - но, конечно, вам следует хорошо его протестировать.

<сильный> Резюме

HA и DR различны. И эти технологии помогают обеспечить части. Высокая доступность означает (для меня), что вы можете быстро восстановиться, если с одной машиной произойдет что-то плохое, у вас есть краткая цель точки восстановления и время восстановления. Это кластеризация и синхронный AG.

«Аварийное восстановление» - «вы можете встать, когда у вас есть проблемы даже в вашем решении HA. Для меня это может быть AG, когда вы переходите в другой центр обработки данных, зеркалируете или даже реплицируете.

ответил Mike Walsh 23 62013vEurope/Moscow11bEurope/MoscowSat, 23 Nov 2013 00:11:20 +0400 2013, 00:11:20
9

Также важно рассмотреть, что такое shared .

Отказоустойчивая кластеризация использует два или более узлов сервера, разделяющих массив один . Если дисковый массив опускается, вы теряете обслуживание, независимо от количества узлов сервера. Если серверная комната, в которой находится этот дисковый массив, захватывает огонь или наводнения, вы теряете обслуживание.

Группы доступности AlwaysOn и зеркальное отображение базы данных - это технология кластеризации «ничего общего». База данных присутствует на нескольких дисковых массивах на нескольких серверах. Если у вас хорошие сетевые ссылки, то несколько сервисов могут быть в нескольких комнатах серверов, защищая вас от пожаров и наводнений.

ответил Greenstone Walker 26 22013vEurope/Moscow11bEurope/MoscowTue, 26 Nov 2013 05:50:06 +0400 2013, 05:50:06
6

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

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

ответил Max Vernon 23 62013vEurope/Moscow11bEurope/MoscowSat, 23 Nov 2013 03:52:00 +0400 2013, 03:52:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132