Информация, которую я нашел в Интернете, показывает, что SQL Server 2008 не поддерживает истинную балансировку нагрузки.
Это правда? Я не могу найти достойную документацию на сайте MS, поэтому любые ссылки будут оценены.
Также отличия между активным / активным и активным / пассивным.
Я предполагаю, что у вас не может быть более одного экземпляра SQL Server, подключенного к одной базе данных, верно? Потому что это указывало бы на истинную балансировку нагрузки.
Итак, Active / Active - это когда у вас есть два отдельных экземпляра SQL Server, обращающихся к двум ПОЛНОСТЬЮ ОТДЕЛЬНЫМ базам данных? Если один выйдет из строя, он просто разделит нагрузку на один оставшийся экземпляр? Эта конфигурация действительно имеет смысл только в том случае, если у нас действительно две ПОЛНОСТЬЮ РАЗДЕЛЬНЫЕ базы данных?
Итак, в моем случае, когда у меня есть только один БД, мне нужно выбрать Активный / Пассивный в качестве параметра высокой доступности?
Это довольно простые вопросы, но я не смог найти достаточно простых ответов!
Спасибо Дункан
То, что вы в основном описываете, называется Кластеризация SQL Server. Он относится к группе из двух или более серверов (узлов), которые действуют вместе и видятся клиентам как один виртуальный сервер.
Кластеры SQL Server можно настроить как Активный / Активный или Активный пассивный в сценарии с двумя серверами. Либо оба узла кластера Microsoft SQL Server выделены для запуска хотя бы одного экземпляра SQL (Active-Active), либо хотя бы один из этих узлов зарезервирован как ожидание принять отказоустойчивый экземпляр SQL Server (активный-пассивный).
Вот несколько статей, которые вы можете прочитать:
Некоторая статья, описывающая другие варианты (хотя и на уровне приложения):
Простое добавление дополнительных узлов в кластер SQL не увеличивает вычислительную мощность, а просто увеличивает доступность, поскольку у вас есть больше узлов, которые можно оставаться в сети. Обработка запросов чтения / записи ограничена одним узлом, нет концепции циклической балансировки нагрузки.
Вот технический документ от Microsoft под названием SQL Server 2008 Performance and Scale. http://www.microsoft.com/sqlserver/2008/en/us/wp-sql-2008-performance-scale.aspx
В этом техническом документе обсуждаются различия между увеличением и уменьшением масштабирования SQL Server. Как указал Ремус, существует концепция масштабируемой общей базы данных для баз данных только для чтения (подумайте о больших хранилищах данных).
Вы можете использовать одноранговую репликацию для распределенной обработки, если это соответствует вашим потребностям. Конечно, это приводит к другим осложнениям.
Кластеризация - это решение высокой доступности, а не решение для масштабирования. Так называемый «активный / активный» в действительности представляет собой повторное использование резервных узлов для развертывания другого, полностью отдельного экземпляра.
Для запросов Transact-SQL для чтения и записи балансировка нагрузки ни в какой форме отсутствует. Для Transact-SQL, предназначенного только для rad (создание отчетов), есть опция 'Масштабируемая общая база данных'.
Единственная технология, которая поддерживает балансировку нагрузки «из коробки» в SQL 2005 и SQL 2008, - это Service Broker, посредством развертывания маршрутов балансировки нагрузки. Но я сомневаюсь, что это вас интересует.
Возможно, вы захотите прочитать о MySpace и о том, как они справляются с высокими нагрузками с помощью SQL Server. Это серия уловок, но нет балансировки нагрузки.
Во-первых: SQL Server не поддерживает балансировку нагрузки, если это поле, поэтому пусть операционная система Windows сделает всю работу. Вы можете установить 2 экземпляра SQL Server и настроить «одноранговую репликацию», чтобы у вас были согласованные данные на обоих серверах. Вы действительно тогда работаете с 2 (!) Разными базами данных. Но тогда могут возникнуть конфликты во время операторов DML для одной и той же записи от двух пользователей (один случайно находится на сервере 1, а другой - на сервере 2 ..). Ваша задача - избежать подобных конфликтов с помощью вашего планирования и внешнего программирования. К сожалению, SQL-сервер не может взять на себя эту задачу. С другой стороны, «отказоустойчивый кластер» возможен, если для всех участвующих узлов используется ОБЩИЙ ХРАНИЛИЩ. Таким образом, система работает с ОДНОЙ отдельной базой данных, и нет балансировки нагрузки (!), А только аварийное переключение. Подумайте, что это не то же самое! Если один узел выходит из строя, другой немедленно берет на себя его задачи. Пока я надеюсь, что это может вам помочь. Томас