Кластер базы данных и балансировка нагрузки

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

Ответ 1

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

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

  • Репликация master-master (или multi-master): любой сервер может обновлять базу данных. Обычно он заботится о другом модуле в базе данных (или в некоторых случаях используется другое программное обеспечение, работающее поверх них).

    Даунсайд - это очень сложно сделать хорошо, а некоторые системы теряют свойства ACID в этом режиме репликации.

    Потенциал роста - это гибкость, и вы можете поддерживать сбой любого сервера при обновлении базы данных.

  • Репликация master-slave: существует только одна копия авторитетных данных, которая выводится на подчиненные серверы.

    Даунсайд - это то, что он менее устойчив к отказам, если мастер умирает, никаких изменений в ведомых устройствах нет.

    Поверхность заключается в том, что это легче сделать, чем мультимастер и обычно сохраняет свойства ACID.

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

Ответ 2

С точки зрения SQL Server:

Кластеризация даст вам активную пассивную конфигурацию. Значение в кластере 2 node, один из них будет активным (обслуживающим), а другой будет пассивным (ожидание, которое произойдет, когда активный node завершится с ошибкой). Это высокая доступность с точки зрения аппаратного обеспечения.

У вас может быть активный активный кластер, но для каждого node потребуется несколько экземпляров SQL Server. (т.е. экземпляр 1 в node отказ от экземпляра 2 на node B и экземпляр 1 на node B, переходящий к экземпляру 2 на node A).

Балансировка нагрузки (по крайней мере, с точки зрения SQL Server) не существует (по крайней мере, в том же смысле, что и балансировка нагрузки на веб-сервер). Вы не можете сбалансировать нагрузку таким образом. Тем не менее, вы можете разделить приложение на работу в некоторой базе данных на сервере 1, а также запустить в некоторой базе данных на сервере 2 и т.д. Это основное средство "балансировки нагрузки" в мире SQL.

Ответ 3

Кластеризация использует разделяемое хранилище некоторого типа (например, каркас накопителя или SAN) и помещает на него два интерфейса базы данных. Передние серверы совместно используют IP-адрес и сетевое имя кластера, которое клиенты используют для подключения, и они решают между собой, кто в настоящее время отвечает за обслуживание клиентских запросов.

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

Ответ 4

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

Что касается сохранения синхронизации данных, то для этого требуется сервер управления, к которому все узлы данных подключены вместе с SQL node (говоря конкретно о MySQL).

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