[+/-]
In manchen Fällen kann es wünschenswert oder erforderlich sein, mehrere mysqld-Server auf demselben Computer auszuführen. Dies ist etwa der Fall, wenn Sie einen neuen MySQL-Release testen wollen, ohne die vorhandene Produktionskonfiguration anzurühren, oder wenn Sie verschiedenen Benutzern Zugang zu unterschiedlichen mysqld-Servern gestatten wollen, die dann von diesen Benutzern selbst verwaltet werden. (Ein solcher Fall läge bei einem Internetprovider vor, der separate MySQL-Installationen für verschiedene Kunden bereithält.)
Damit mehrere Server auf demselben Computer ausgeführt werden können, benötigt jeder Server eindeutige Werte für verschiedene Betriebsparameter. Diese können über die Befehlszeile oder in Optionsdateien angegeben werden. Siehe auch Abschnitt 4.3, „Angabe von Programmoptionen“.
Zumindest die folgenden Optionen müssen für jeden Server unterschiedlich sein:
--port=
port_num
--port
steuert die Portnummer für
TCP/IP-Verbindungen.
--socket=
path
--socket
gibt unter Unix den Pfad zur
Unix-Socketdatei und unter Windows den Namen der Named Pipe
an. Unter Windows müssen separate Pipe-Namen nur für
diejenigen Server angegeben werden, die
Named-Pipe-Verbindungen unterstützen.
--shared-memory-base-name=
name
Diese Option wird derzeit nur unter Windows verwendet. Sie bezeichnet den Namen des gemeinsamen Speichers, mit dem ein Windows-Server Clients das Herstellen einer Verbindung über gemeinsamen Speicher gestattet. Die Angabe ist nur für Server erforderlich, die Verbindungen über gemeinsamen Speicher unterstützen.
--pid-file=
file_name
Diese Option wird nur unter Unix verwendet. Sie gibt den Pfadnamen der Datei an, in die der Server seine Prozesskennung schreibt.
Wenn Sie die folgenden Logdateioptionen verwenden, müssen diese für jeden Server anders sein:
--log=
file_name
--log-bin=
file_name
--log-update=
file_name
--log-error=
file_name
--bdb-logdir=
file_name
Weitere Informationen zu Logdateien finden Sie in Abschnitt 5.12.5, „Wartung und Pflege der Logdateien“.
Zur Leistungsoptimierung können Sie auch die folgenden Optionen für jeden Server individuell angeben, um so die Last auf mehrere physische Festplatten zu verteilen:
--tmpdir=
path
--bdb-tmpdir=
path
Auch die Verwendung verschiedener Temporärverzeichnisse wird empfohlen, um besser bestimmen zu können, welche MySQL-Server welche der vorhandenen Temporärdateien erstellt hat.
Mit sehr wenigen Ausnahmen sollte jeder Server ein eigenes
Datenverzeichnis haben, das mit der Option
--datadir=
angegeben wird.
path
Warnung: Normalerweise sollten
Daten in denselben Datenbanken niemals von zwei Servern
aktualisiert werden. Dies kann zu unliebsamen Überraschungen
führen, wenn Ihr Betriebssystem keine fehlerfreie Systemsperrung
unterstützt. Wenn Sie (ungeachtet dieser Warnung) mehrere Server
betreiben, die dasselbe Datenverzeichnis verwenden, müssen Sie,
wenn das Loggen aktiviert ist, die passenden Optionen zur Angabe
der Logdateinamen festlegen, die für jeden Server eindeutig sein
müssen. Andernfalls versuchen die Server nämlich, in die
gleichen Logdateien zu schreiben. Beachten Sie, dass eine solche
Konfiguration nur bei MyISAM
- und
MERGE
-Tabellen funktioniert, nicht aber bei
anderen Speicher-Engines.
Die Warnung vor der gemeinsamen Nutzung eines Datenverzeichnisses durch mehrere Server gilt auch in einer NFS-Umgebung. Mehreren MySQL-Servern den Zugriff auf ein gemeinsames Datenverzeichnis über NFS zu gestatten, ist eine ganz schlechte Idee.
Das Problem ist hierbei primär, dass NFS in punkto Geschwindigkeit einen Flaschenhals darstellt. NFS ist für einen solchen Einsatz schlichtweg ungeeignet.
Ein weiteres Risiko besteht bei NFS darin, dass Sie eine
Möglichkeit finden müssen, sicherzustellen, dass zwei oder
mehr Server einander nicht stören. Normalerweise wird die
NFS-Dateisperrung vom Daemon lockd
verwaltet; es gibt aber derzeit keine Plattform, die die
Sperrung in jeder Situation hundertprozentig zuverlässig
ausführt.
Machen Sie es sich einfach: Lassen Sie die Freigabe eines Datenverzeichnisses für mehrere Server über NFS einfach bleiben. Eine bessere Lösung besteht in der Verwendung eines Computers, der mehrere Prozessoren enthält und ein Betriebssystem verwendet, das Threads effizient verwaltet.
Wenn Sie mehrere MySQL-Installationen in verschiedenen
Verzeichnissen haben, können Sie das
Basisinstallationsverzeichnis für jeden Server mit der Option
--basedir=
angeben; in diesem Fall verwendet jeder Server ein anderes
Datenverzeichnis, eigene Logdateien und eine eigene
Prozesskennungsdatei. (Standardmäßig werden diese Werte relativ
zum Basisverzeichnis gesetzt.) In diesem Fall müssen Sie als
weitere Optionen nur path
--socket
und
--port
angeben. Angenommen, Sie installieren
verschiedene MySQL-Versionen aus einer
tar
-Datei mit einer Binärdistribution. Diese
Versionen werden an verschiedenen Positionen installiert, d. h.
Sie können den Server für jede Installation mit dem Befehl
bin/mysqld_safe in seinem jeweiligen
Basisverzeichnis starten. mysqld_safe bestimmt
die korrekte --basedir
-Option, die an
mysqld übergeben werden muss; Sie müssen dann
nur noch die Optionen --socket
und
--port
für mysqld_safe
angeben.
Wie in den vorangegangenen Abschnitten bereits erläutert, können
zusätzliche Server durch Einstellen von Umgebungsvariablen oder
durch Angabe passender Befehlszeilenoptionen gestartet werden.
Wenn Sie allerdings auf Dauer mehrere Server ausführen wollen,
ist es praktischer, die Optionswerte, die für jeden Server
eindeutig sein müssen, mithilfe von Optionsdateien anzugeben. Die
Option --defaults-file
ist für diese Zwecke
praktisch.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.