Soll MySQL alleine installiert werden?

20

Ich höre oft Leute, die Aussagen wie "Unsere MySQL-Server-Maschine ist ausgefallen" machen, was den Eindruck erweckt, dass sie eine einzelne Maschine als MySQL-Server verwenden (ich vermute, sie installieren nur das Betriebssystem und nur MySQL darauf). Als Entwickler und nicht als Systemadministrator bin ich es gewohnt, dass MySQL zusammen mit dem Webserver und PHP als Teil eines LAMP-Stacks installiert wird.

Kann mir jemand erklären:

  • Was bringt es, MySQL auf einem separaten Server zu installieren? klingt wie eine Verschwendung von Ressourcen, wenn ich den gesamten Lampenstapel und zusätzliche Server hinzufügen kann.
  • Wenn sich die Datenbank auf einem separaten Computer befindet, wie stellen die zu verwendenden Apps eine Verbindung her?
gleichalt
quelle

Antworten:

30

Wenn Ihre Anwendungsplattform und Ihre Datenbank um Ressourcen konkurrieren, ist dies normalerweise der erste Hinweis darauf, dass Sie für einen dedizierten Datenbankserver bereit sind.

Zweitens Hochverfügbarkeit: Einrichten eines Datenbankclusters (und normalerweise auch eines Web- / Anwendungsserverclusters mit Lastenausgleich).

Ich würde auch sagen, dass Sicherheit eine große Rolle bei der Verlagerung auf separate Server spielt, da Sie für jeden Server unterschiedliche Richtlinien für den Netzwerkzugriff festlegen können (z. B. einen DMZ-Webserver mit einem Datenbankserver im LAN).

Der Zugriff auf den Datenbankserver erfolgt über das Netzwerk. Wenn Sie also normalerweise "localhost" für Ihren Datenbankhost angeben, geben Sie die Host- / IP-Adresse Ihres Datenbankservers an. Hinweis: In der Regel müssen Sie die Konfiguration Ihres Datenbankservers ändern, um Verbindungen zuzulassen / das Abhören auf einer anderen Schnittstelle als der Loopback-Schnittstelle zu ermöglichen.

Soßengesicht
quelle
Ein dedizierter Computer ermöglicht auch das Anpassen der Festplattenkonfiguration. Webserver freuen sich sehr, wenn die Daten auf einem RAID 6-System gespeichert sind. Datenbankserver bevorzugen RAID 1.
Simon Richter
12

Ein separater Datenbankserver ist nur ein Teil eines guten, skalierbaren Designs. Dies spielt keine Rolle, wenn Ihr Datenverkehr nicht sehr hoch ist und ein einziger Server wirklich ausreicht.

Bei geschäftigeren Diensten ist es jedoch eine gute Sache, die Dienste voneinander zu trennen. Wenn jemand Ihren Webserver DDoSses und macht es alle Ressourcen verbrauchen, schikaniert das den Datenbankserver überhaupt nicht. In gemeinsam genutzten Umgebungen wird der Datenbankserver wahrscheinlich von mehr als einem Webserver verwendet. Wenn der Datenbankserver also Daten für 50 verschiedene Websites enthält, ist es besser, wenn nur eine Website aufgrund von DDoS ausfällt, als alles herunterzufahren.

Aus sysadmin-Sicht ist es auch klarer, ob es dedizierte Server gibt, die sinnvoll benannt sind, wie "mysql-01.yourcompany.com" und "webserver-01.yourcompany.com". Wenn sie Benachrichtigungen erhalten, sehen sie sofort, was los ist, zumindest im Sinne von "OK, es stimmt etwas nicht mit der Datenbank". Ich weiß, das ist ein schwaches Argument, da mehrere DNS-Namen auf einen einzelnen Server verweisen könnten, aber immer noch.

Ihre Anwendungen würden sich ohne Probleme über das Netzwerk mit einem entfernten Datenbankserver verbinden. Aieeeeeee! Wie stellt Ihr Webbrowser eine Verbindung zu einem Remote-Server her? Es ist Magie! Ähm ... im Ernst, anstelle von 'localhost' gibst du einfach die Serveradresse in $ programming_language_of_your_choice an und schon bist du fertig.

Janne Pikkarainen
quelle
2
Weiter zu Jannes Kommentar zu: sysadmin point of view ... Wenn Sie Leistungsprobleme haben oder die Anwendung auf andere Weise debuggen müssen, ist es sehr viel einfacher, wenn sich der Webserver und der Datenbankserver auf getrennten Computern befinden.
HTTP500
5
  • Einige Websites / Anwendungen verwenden eine Datenbank so häufig, dass ein oder mehrere Server für die Datenbank selbst erforderlich sind.
  • Über das Netzwerk.
Ignacio Vazquez-Abrams
quelle
3

LAMP ist der Anwendungsstapel, es müssen jedoch nicht alle auf demselben Host installiert sein. Wie andere aus Gründen der Leistung, Sicherheit oder Skalierbarkeit angemerkt haben, werden diese häufig nicht auf demselben Host installiert. Sie können auch feststellen, dass Hardware, die für einen Teil der Architektur optimal ist, möglicherweise nicht für einen anderen Teil der Architektur geeignet ist.

Bei Datenbanken dreht sich beispielsweise alles um Speicherverwaltung. Je schneller ich Informationen von der Festplatte abrufen kann, desto schneller kann ich sie an den Anforderer senden. Wenn ich ein Festplattensubsystem mit mehreren anderen Mitgliedern des Anwendungsstapels, z. B. einem Webserver, gemeinsam verwende, kann der Konflikt, dem ich mit der freigegebenen Ressource der Lese- und Schreib-IDs der Festplattenlaufwerke gegenüberstehe, meine Leistung beeinträchtigen. Wenn der RAM auf einem bestimmten Host zwischen Webserver und Datenbankserver aufgeteilt ist, wird möglicherweise nicht genügend Ressourcenpool zur Verfügung gestellt, um auf die effizienteste Weise ausgeführt zu werden. Dadurch können so viele Informationen im RAM zwischengespeichert werden, ohne auf die Festplatte zugreifen zu müssen ein Bild, eine Seite oder eine Abfrage-Ergebnismenge.

Auch in administrativer Hinsicht sind Effizienzsteigerungen zu erzielen. Stellen Sie sich vor, Sie betreiben Ihr Unternehmen mit Open Source-Anwendungen, die MySQL als gemeinsames Backend nutzen. Möchten Sie wirklich, dass der Datenbankserver mit jeder App erweitert wird? Dies könnte ein DBA-Albtraum sein. "OK, welche Anwendung verwendet diese DB?" Sie hätten mehrere Versionen, mehrere Konfigurationen von Hardware / Software und mehrere Strategien zur Datenaufbewahrung. Sie würden wahrscheinlich auch sehr diffuse administrative Fähigkeiten haben. Fassen Sie stattdessen die Instanzen zu einer physischen Hardware zusammen, die für die Rolle optimiert ist, und weisen Sie dedizierte Ressourcen zu, um den Server und seine Daten zu verwalten.

James Pulley
quelle
2

MySQL-Abfragen können sehr ressourcenintensiv sein, was Ihren LAMP-Server verlangsamen kann.

Wenn Sie eine große, komplizierte und ressourcenintensive Website betreiben, empfiehlt es sich, die Datenbank auf einen anderen dedizierten Server zu verschieben. Auf diese Weise haben Sie zwei Server, einen für das Web und einen für das Datenbank-Crunching. Dies hat das Potenzial, Ressourcen freizusetzen und sowohl die Website- als auch die Datenbankabfragen zu beschleunigen.

Der Webserver muss lediglich eine Verbindung zur Datenbankserveradresse herstellen, anstatt localhostDatenbankabfragen durchzuführen.

Jake Wilson
quelle