Frage Soll MySQL alleine installiert werden?


Ich höre oft Leute, die Aussagen machen wie "unsere MySQL-Server-Maschine ist gescheitert", was mir den Eindruck vermittelt, dass sie eine einzige Maschine als ihren MySQL-Server einsetzen (ich denke, sie installieren nur das Betriebssystem und nur MySQL). Als Entwickler, kein Systemadministrator, bin ich daran gewöhnt, dass MySQL zusammen mit dem Webserver und PHP als Teil eines LAMP-Stacks installiert wird.

Kann mir jemand erklären:

  • Warum installiere ich MySQL auf einem separaten Server? klingt wie eine Verschwendung von Ressourcen, wenn ich dort den gesamten Lampenstapel und weitere Server hinzufügen kann.
  • Wenn sich die Datenbank auf einem separaten Computer befindet, wie stellen die Apps, die verwendet werden müssen, eine Verbindung her?

20
2018-03-14 12:18


Ursprung




Antworten:


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 in der Regel wiederum ein Load-Balanced Web / Application Server Cluster).

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

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


30
2018-03-14 12:25



Eine dedizierte Maschine erlaubt auch, die Festplattenkonfiguration entsprechend anzupassen. Web-Server sind ziemlich glücklich, wenn die Daten auf einem RAID 6 leben; Datenbankserver bevorzugen RAID 1. - Simon Richter


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

Aber in belebteren Diensten ist es eine gute Sache, die Dienste voneinander zu isolieren. Wenn jemand Ihren Webserver mit DDoSes belastet und alle Ressourcen verbraucht, schikaniert das den Datenbankserver überhaupt nicht. In gemeinsam genutzten Umgebungen verwendet wahrscheinlich mehr als ein Webserver den Datenbankserver. Wenn also der Datenbankserver Daten für 50 verschiedene Websites enthält, ist nur eine Website aufgrund des DDoS besser als alles andere.

Auch aus Sicht von sysadmin wird es klarer, wenn es dedizierte Server gibt, die vernünftig benannt sind, wie zum Beispiel "mysql-01.IhreFirma.com" und "Webserver01.IhreFirma.com". Wenn sie Warnungen erhalten, sehen sie sofort, was vor sich geht, zumindest im Sinne von "OK, etwas stimmt nicht mit der Datenbank". Ich weiß, dass dies ein schwaches Argument ist, da mehrere DNS-Namen auf einen einzelnen Server verweisen können.

Ihre Anwendungen würden sich ohne Probleme über das Netzwerk mit einem entfernten Datenbankserver verbinden. Aeeeeeeee! Wie stellt Ihr Webbrowser eine Verbindung zu einem Remote-Server her? Es ist Magie! Ähm .... Ernsthafter, statt "localhost" gibst du einfach die Serveradresse in $ program- ming_language_of_your_choice an und schon hast du alles.


12
2018-03-14 12:27



Weiter zu Jannes Kommentar zu: sysadmin point of view ... Wenn Sie Leistungsprobleme haben oder die Anwendung auf andere Weise debuggen müssen, ist es viel einfacher zu tun, wenn sich der Webserver und der Datenbankserver auf separaten Rechnern befinden. - HTTP500


  • Einige Websites / Anwendungen verwenden eine Datenbank so stark, dass sie einen oder mehrere Server benötigen, die für die Datenbank selbst reserviert sind.
  • Über das Netzwerk.

5
2018-03-14 12:23





LAMP ist der Anwendungsstapel, der jedoch nicht auf demselben Host installiert sein muss. Wie andere aus Gründen der Leistung, Sicherheit oder Skalierbarkeit angemerkt haben, sind 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 eine andere ist.

In Datenbanken dreht sich alles um Speicherverwaltung. Je schneller ich Informationen von der Festplatte abrufen kann, desto schneller kann ich sie zum Anforderer bringen. Wenn ich ein Plattensubsystem mit mehreren anderen Anwendungsstapelelementen, wie einem Webserver, teile, kann die Konkurrenzsituation, mit der ich auf der gemeinsam genutzten Ressource der Lese- und Schreibvorgänge der Plattenlaufwerke konfrontiert bin, meine Leistung tatsächlich beeinträchtigen. Wenn RAM zwischen Web-Server und Datenbank-Server auf einem gegebenen Host aufgeteilt ist, kann kein ausreichend großer Ressourcen-Pool zur Verfügung stehen, um effizient zu arbeiten und so viele Informationen im RAM zwischenzuspeichern, ohne dafür auf die Festplatte gehen zu müssen ein Bild, eine Seite oder ein Abfrageergebnissatz.

Administrativ gibt es auch Effizienzgewinne. Stellen Sie sich vor, wenn Sie Ihr Unternehmen auf Open-Source-Anwendungen ausführen, die MySQL als gemeinsames Backend nutzen. Würdest du wirklich wollen, dass der Datenbankserver mit jeder App wächst? Dies könnte ein Albtraum von DBA sein, "OK, welche Anwendung benutzt diese Datenbank?" Sie haben mehrere Versionen, mehrere Konfigurationen von Hardware / Software, mehrere Datenerhaltungsstrategien. Sie würden wahrscheinlich auch sehr diffuse administrative Fähigkeiten haben. Kombinieren Sie stattdessen die Instanzen zu einer physischen Hardware, die für die Rolle optimiert ist, und weisen Sie dedizierte Ressourcen zum Verwalten des Servers und seiner Daten zu.


3
2018-03-14 15:51





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

Wenn Sie eine große, komplizierte, 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 Datenbankabfrage zu beschleunigen.

Der Webserver muss sich lediglich mit der Adresse des Datenbankservers verbinden localhost um Datenbankabfragen zu machen.


2
2018-03-14 19:34