MySQL повинен бути встановлений окремо


20

Я часто чую, як люди роблять заяви, такі як "наша серверна машина MySQL вийшла з ладу", що створює враження, що вони присвячують одну машину своєму серверу MySQL (я думаю, вони просто встановлюють ОС і лише MySQL на ній). Як розробник, а не sysadmin, я звик до встановлення MySQL у складі стека LAMP разом із веб-сервером та PHP.

Хтось може мені пояснити:

  • який сенс встановлювати MySQL на окремому сервері? звучить як витрата ресурсів, коли я можу додати туди весь стек ламп та додаткові сервери.
  • якщо база даних знаходиться на окремій машині, як додатки, які потрібно використовувати, підключаються до неї?

Відповіді:


30

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

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

Я б також сказав, що безпека відіграє велику роль у переході до окремих серверів, оскільки у вас може бути різна політика доступу до мережі для кожного сервера (наприклад, веб-сервер DMZ'ed з сервером баз даних у локальній мережі).

Доступ до сервера баз даних здійснюється через мережу. наприклад, коли ви зазвичай вказуєте "localhost" для свого хоста бази даних, ви будете вказувати хост / IP-адресу вашого сервера баз даних. Примітка: зазвичай вам потрібно змінити конфігурацію сервера вашої бази даних, щоб дозволити з'єднання / включити прослуховування в інтерфейсі, відмінному від інтерфейсу зворотного зв'язку.


Також спеціалізована машина дозволяє відповідним чином налаштувати конфігурацію диска. Веб-сервери дуже задоволені, коли дані живуть на RAID 6; сервери баз даних віддають перевагу RAID 1.
Саймон Ріхтер

12

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

Але в більш зайнятих послугах ізоляція послуг один від одного - це гарна річ. Якщо хтось DDoSses ваш веб-сервер і змушує його споживати всі ресурси, це зовсім не знущає сервер бази даних. У спільних середовищах більше ніж один веб-сервер, ймовірно, використовує сервер баз даних, тому, якщо сервер бази даних містить дані для 50 різних веб-сайтів, то лише один веб-сайт, який виходить з ладу через DDoS, краще, ніж знімати все.

Також з точки зору sysadmin зрозуміліше, чи існують спеціально виділені сервери, такі як "mysql-01.yourcompany.com" та "webserver-01.yourcompany.com". Коли вони отримують сповіщення, вони одразу бачать, що відбувається, принаймні в сенсі "ОК, з базою даних щось не так". Я знаю, що це слабкий аргумент, оскільки кілька імен DNS можуть вказувати на один сервер, але все-таки.

Ваші програми без проблем з'єднаються з віддаленим сервером баз даних. Aieeeeeee! Як ваш веб-браузер підключається до віддаленого сервера? Це магія! Ерм .... серйозніше, замість "localhost" ви просто надаєте адресу сервера в $ programs_language_of_your_choice, і все налаштовано.


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

5
  • Деякі веб-сайти / програми використовують таку базу даних, що їм потрібен один або більше серверів, присвячених самій базі даних.
  • По мережі.

3

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

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

В адміністративному плані також слід досягти ефективності. Уявіть, що ви керуєте своїм підприємством у додатках із відкритим кодом, які використовують MySQL як загальний сервер. Ви дійсно хочете мати розповсюдження сервера баз даних з кожним додатком? Це може бути кошмар DBA: "Гаразд, яка програма використовує цей БД?" У вас було б кілька версій, мулотипні конфігурації апаратного / програмного забезпечення, кілька стратегій збереження даних. Ви також, ймовірно, маєте дуже дифузні адміністративні навички. Натомість з’єднайте екземпляри з одним фізичним обладнанням, оптимізованим для ролі та призначте виділені ресурси для управління сервером та його даними.


2

MySQL запити можуть бути дуже ресурсомісткими, що може уповільнити ваш LAMP-сервер.

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

Веб-серверу просто потрібно підключитися до адреси сервера бази даних, а localhostне робити запити до бази даних.

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