Балансування кластерів та балансування навантаження


149

Що таке кластеризація баз даних? Якщо ви дозволяєте одній базі даних знаходитися на двох різних серверах, як вони зберігають дані між синхронізованими. І чим це відрізняється від балансування навантаження з точки зору сервера бази даних?

Відповіді:


132

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

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

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

    Недоліком є ​​те, що це дуже важко зробити добре, і деякі системи втрачають властивості кислотних кислот, коли в цьому режимі реплікації.

    Стійким є те, що він є гнучким, і ви можете підтримувати вихід з ладу будь-якого сервера, продовжуючи оновлювати базу даних.

  • реплікація ведучого-підлеглого: Існує лише одна копія авторитетних даних, яка передається на ведені сервери.

    Недоліком є ​​те, що він менш вірогідний, якщо господар помирає, в рабах не буде подальших змін.

    Зверху в тому, що це зробити легше, ніж багатокористувацький, і він, як правило, зберігає властивості кислотних кислот.

Балансування навантаження - це інша концепція, вона полягає в розподілі запитів, що надсилаються на ці сервери, щоб навантаження було розподілено максимально рівномірно. Зазвичай це робиться на рівні програми (або з пулом з'єднань). Єдине пряме співвідношення між реплікацією та балансуванням навантаження - це те, що вам потрібна певна реплікація, щоб мати змогу завантажувати баланс, інакше у вас є один сервер.


1
Ах, забув про реплікацію :) Так, ви можете домогтися балансування навантаження таким чином у поєднанні з логікою рівня програми :). +1
Джиммі Чандра

1
Документи Postgresql посилаються на "кластер баз даних" по-різному: "Перш ніж щось робити, ви повинні ініціалізувати область зберігання бази даних на диску. Ми називаємо це кластером бази даних. (SQL використовує термін кластер каталогів.) Кластер бази даних - це сукупність бази даних, якими керує один екземпляр працюючого сервера баз даних. " postgresql.org/docs/8.3/static/creating-cluster.html
Донато,

1
Що означає властивості кислотних кислот, а точніше, що саме ви втрачаєте, якщо не зберігаєте їх?
TheStoryCoder

@TheStoryCoder В інформатиці ACID (Atomicity, Consistentcy, Isolation, Durability) - це набір властивостей транзакцій бази даних, призначених для гарантування дійсності навіть у випадку помилок, збоїв живлення тощо. У контексті баз даних послідовність баз даних Операції, що задовольняють властивості ACID (і їх можна сприймати як єдину логічну операцію над даними), називають транзакцією. Наприклад, переказ коштів з одного банківського рахунку на інший, навіть із залученням декількох змін, таких як списання одного рахунку та кредитування іншого, - це одна операція.
fizampou

17

З точки зору SQL Server:

Кластеризація надасть вам активно - пасивну конфігурацію. Значення в кластері 2 вузлів, один з них буде активним (обслуговуючим), а другий - пасивним (чекає на перехоплення, коли активний вузол вийде з ладу). Це висока доступність з апаратної точки зору.

Ви можете мати активно-активний кластер, але для цього буде потрібно кілька екземплярів SQL Server, що працює на кожному вузлі. .

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


9

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

Якщо ви запитуєте про певний сервер баз даних, додайте це до свого запитання, і ми можемо додати деталі щодо їх реалізації, але, по суті, це кластеризація.


6

Кластеризація баз даних насправді є режимом синхронної реплікації між двома або, можливо, більше вузлами з доданою функціональністю відмовостійкості, що додається до вашої системи, і теж у спільній архітектурі нічого. Якщо нічого не поділяти, це означає, що окремі вузли насправді не поділяють ніяких фізичних ресурсів, таких як диск або пам'ять.

Що стосується збереження синхронізованих даних, існує сервер управління, до якого всі вузли даних підключені разом із вузлом SQL для досягнення цього (мова йде конкретно про MySQL).

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.