Что такое кластеризация базы данных? Если вы разрешите одной и той же базе данных находиться на 2 разных серверах, как они будут синхронизировать данные? И как это отличается от распределения нагрузки с точки зрения сервера базы данных?
Что такое кластеризация базы данных? Если вы разрешите одной и той же базе данных находиться на 2 разных серверах, как они будут синхронизировать данные? И как это отличается от распределения нагрузки с точки зрения сервера базы данных?
Ответы:
Кластеризация базы данных - это немного двусмысленный термин: некоторые поставщики считают кластер с двумя или более серверами общим хранилищем, другие называют кластер набором реплицированных серверов.
Репликация определяет метод, с помощью которого набор серверов остается синхронизированным без необходимости совместно использовать хранилище, которое может быть географически рассредоточено, есть два основных способа сделать это:
репликация master-master (или multi-master): любой сервер может обновить базу данных. Об этом обычно заботится другой модуль в базе данных (или в некоторых случаях совершенно другое программное обеспечение, работающее поверх них).
Недостатком является то, что это очень трудно сделать хорошо, и некоторые системы теряют свойства ACID в этом режиме репликации.
Плюс в том, что он гибкий, и вы можете поддерживать сбой любого сервера, при этом обновляя базу данных.
Репликация главный-подчиненный. Существует только одна копия достоверных данных, которая отправляется на подчиненные серверы.
Недостатком является то, что он менее отказоустойчив, если мастер умирает, дальнейшие изменения в ведомых устройствах отсутствуют.
Плюсом является то, что это легче сделать, чем мультимастер, и это обычно сохраняет свойства ACID.
Распределение нагрузки - это другая концепция, она состоит в распределении запросов, отправляемых на эти серверы, чтобы нагрузка распределялась как можно более равномерно. Обычно это делается на прикладном уровне (или с помощью пула соединений). Единственная прямая связь между репликацией и балансировкой нагрузки заключается в том, что для балансировки нагрузки требуется некоторая репликация, иначе у вас будет один сервер.
С точки зрения SQL Server:
Кластеризация даст вам активно-пассивную конфигурацию. Это означает, что в кластере с двумя узлами один из них будет активным (обслуживающим), а другой пассивным (ожидающим вступления во владение при сбое активного узла). Это высокая доступность с аппаратной точки зрения.
У вас может быть активно-активный кластер, но для этого потребуется несколько экземпляров SQL Server, работающих на каждом узле. (т. е. экземпляр 1 на узле A переключается на экземпляр 2 на узле B, а экземпляр 1 на узле B переключается на экземпляр 2 на узле A).
Балансировка нагрузки (по крайней мере, с точки зрения SQL Server) не существует (по крайней мере, в том же смысле, что и балансировка нагрузки веб-сервера). Вы не можете сбалансировать нагрузку таким образом. Тем не менее, вы можете разделить ваше приложение для запуска в какой-либо базе данных на сервере 1, а также в какой-либо базе данных на сервере 2 и т. Д. Это основное средство «балансировки нагрузки» в мире SQL.
Кластеризация использует общее хранилище какого-либо типа (например, отсек для дисков или SAN) и размещает на нем два интерфейса базы данных. Интерфейсные серверы совместно используют IP-адрес и сетевое имя кластера, которые клиенты используют для подключения, и они решают между собой, кто в настоящее время отвечает за обслуживание клиентских запросов.
Если вы спрашиваете об определенном сервере баз данных, добавьте это к своему вопросу, и мы можем добавить подробности об их реализации, но по сути это и есть кластеризация.
Кластеризация базы данных на самом деле представляет собой режим синхронной репликации между двумя или, возможно, несколькими узлами с добавленной функциональностью отказоустойчивости, добавленной в вашу систему, и это также в архитектуре без совместного использования ресурсов. Под ничем не подразумевается, что отдельные узлы фактически не разделяют какие-либо физические ресурсы, такие как диск или память.
Что касается синхронизации данных, существует сервер управления, к которому все узлы данных подключены вместе с узлом SQL для достижения этой цели (в частности, речь идет о MySQL).
Теперь о различиях: балансировка нагрузки - это только один результат, которого можно достичь с помощью кластеризации, другие включают высокую доступность, масштабируемость и отказоустойчивость.