Die meisten Leute betreiben einen einzelnen MySQL-Server auf einem bestimmten Rechner, aber es gibt Situationen, in denen der Betrieb mehrerer Server von Vorteil ist: Sie können neue Versionen des Servers testen, während der Produktionsserver läuft. In diesem Fall wird ein anderer Server ausgeführt.
Das Betriebssystem legt normalerweise eine allgemeine Prozessbeschränkung für die Anzahl der Deskriptoren für geöffnete Dateien fest. Wenn Ihr System Schwierigkeiten hat, das Limit zu erhöhen, ist der Betrieb mehrerer Server ein Workaround (zum Beispiel kann eine Erhöhung des Limits eine Neukompilierung des Kernels erfordern, und wenn sich die Maschine außerhalb Ihres Zuständigkeitsbereichs befindet, ist dies möglicherweise noch nicht möglich). In diesem Szenario führen Sie möglicherweise mehrere Instanzen desselben Servers aus.
Internetdienste stellen den Kunden oft eine eigene MySQL-Installation zur Verfügung, die einen separaten Server erfordert. In diesem Fall können Sie mehrere Instanzen desselben Servers oder verschiedener Server ausführen, wenn verschiedene Kunden unterschiedliche Versionen von MySQL benötigen.
Natürlich ist der gleichzeitige Betrieb mehrerer Server komplizierter als der Betrieb nur eines. Wenn Sie mehrere Versionen installieren möchten, können Sie diese nicht alle am selben Speicherort installieren. Wenn ein Server läuft, müssen bestimmte Parameter für jeden Server eindeutig sein. Zu diesen Parametern gehört der Installationsort des Servers: der Pfadname zum Datenverzeichnis, der TCP/IP-Port und der UNIX-Domänen-Socket-Pfadname sowie das UNIX-Konto, mit dem mehrere Server ausgeführt werden (sofern nicht alle unter demselben Kontoserver ausgeführt werden). Wenn Sie sich entscheiden, mehrere Server zu betreiben, müssen Sie eine gute Beschreibung der von Ihnen verwendeten Parameter aufbewahren, damit Sie den Überblick über Ihre Läufe nicht verlieren.
Konfigurieren und installieren Sie mehrere Server
Wenn Sie statt mehrerer Instanzen desselben Servers verschiedene Versionen des Servers ausführen möchten, sollten Sie diese an unterschiedlichen Orten installieren. Wenn Sie binäre (nicht RPM-)Distributionspakete installieren, werden diese im Verzeichnisnamen installiert, der die Versionsnummer enthält. Wenn Sie von einer Quelldistribution installieren, können Sie die verschiedenen Distributionen am einfachsten voneinander trennen, indem Sie die Option --with-prefix verwenden, wenn Sie configure während jeder Version der MySQL-Installation ausführen. Dies führt zu einer Installation in einem separaten Verzeichnis, das mit der Versionsnummer der Distribution verknüpft werden kann. Sie können beispielsweise ein MySQL-Distributionspaket wie folgt konfigurieren, wobei „version“ die MySQL-Versionsnummer ist:
% ./configure ..with-prefix=/usr/local/mysql-version
Die Option with-prefix bestimmt auch das eindeutige Datenverzeichnis des Servers. Sie können Optionen hinzufügen, um andere serverspezifische Werte zu konfigurieren, z. B. den TCP/IP-Port und den Socket-Pfadnamen (--with-tcp-port und --with-unix-socket).
Wenn Sie planen, mehrere Instanzen desselben Servers auszuführen, müssen alle für den Server spezifischen Optionen zur Laufzeit angegeben werden.
Startvorgang mehrerer Server
Das Starten mehrerer Server ist komplizierter als die Verwendung eines einzelnen Servers, da sowohl „safe_mysqld“ als auch „mysql.server“ auf einem einzelnen Server gut funktionieren. Der Autor empfiehlt, dass Sie „safe_mysqld“ sorgfältig studieren und es als Grundlage für den Startvorgang verwenden, es sei denn, Sie verwenden eine detailliertere Kopie, die an Ihre Bedürfnisse angepasst wurde.
Ein Problem, das gelöst werden muss, ist die Art und Weise, wie Optionen in der Optionsdatei angegeben werden. Bei mehreren Servern können Sie /etc/my.cnf nicht für Einstellungen verwenden, die sich auf Gesamtserverbasis ändern. Verwenden Sie diese Datei nur für Einstellungen, die für alle Server gleich sind. Wenn jeder Server einen anderen Datenverzeichnisspeicherort hat, können Sie serverspezifische Parameter in der Datei my.cnf für das Datenverzeichnis jedes Servers angeben. Mit anderen Worten: Verwenden Sie /etc/my.cnf für Einstellungen, die von allen Servern verwendet werden, und DATA DIR/my.cnf für serverspezifische Einstellungen, bei denen sich DATADIR für jeden Server ändert.
Eine andere Möglichkeit, Serveroptionen anzugeben, besteht darin, - -defa ul ts - file =Pfadname als erste Option in der Befehlszeile zu verwenden, um den Server anzuweisen, Optionen aus der durch Pfadname angegebenen Datei zu lesen. Auf diese Weise können die Serveroptionen in dieser Datei eindeutig für diesen Server platziert werden und dann den Server anweisen, die Datei beim Start zu lesen. Beachten Sie, dass bei Angabe dieser Option keine der üblichen Optionsdateien (z. B. /etc/my.cnf) verwendet wird.