Die einfachste Möglichkeit, mehrere Server unter Unix auszuführen, besteht darin, sie mit verschiedenen TCP/IP-Ports und Unix-Socketdateien zu kompilieren, sodass jeder Server auf eine andere Netzwerkschnittstelle horcht. Auch das Einkompilieren verschiedener Basisverzeichnisse für jede Installation hat automatisch ein dediziertes einkompiliertes Verzeichnis zur Folge, in dem Datenverzeichnis, Logdatei und Prozesskennungsdatei des betreffenden Servers abgelegt sind.
Nehmen wir einmal an, dass der vorhandene Server (Version
5.0.19) für den TCP/IP-Standardport (3306) und die
Standardsocketdatei (/tmp/mysql.sock
)
konfiguriert ist. Um nun einen neuen Server unter MySQL
5.1.5-alpha mit anderen Betriebsparametern zu
konfigurieren, verwenden Sie den Befehl
configure wie folgt:
shell>./configure --with-tcp-port=
port_number
\--with-unix-socket-path=
file_name
\--prefix=/usr/local/mysql-5.1.5-alpha
Hierbei müssen sich port_number
und
file_name
von der
TCP/IP-Standardportnummer bzw. dem Standardpfadnamen der
Unix-Socketdatei unterscheiden. Ferner sollte die Option
--prefix
ein anderes Installationsverzeichnis
als jenes angeben, in dem sich die vorhandene MySQL-Installation
befindet.
Wenn Ihr MySQL-Server auf eine gegebene Portnummer horcht, dann können Sie mit folgendem Befehl herausfinden, welche Betriebsparameter er für verschiedene wichtige konfigurierbare Variablen (einschließlich Basisverzeichnis und Unix-Socketdatei) verwendet:
shell> mysqladmin --host=host_name
--port=port_number
variables
Anhand der von diesem Befehl angezeigten Informationen können Sie festlegen, welche Optionswerte Sie nicht verwenden dürfen, wenn Sie einen zusätzlichen Server konfigurieren.
Beachten Sie, dass, wenn Sie localhost
als
Hostnamen angeben, mysqladmin standardmäßig
statt TCP/IP eine Verbindung über eine Unix-Socketdatei
verwendet. Ab MySQL 4.1 können Sie das zu verwendende
Verbindungsprotokoll mit der Option
--protocol={TCP|SOCKET|PIPE|MEMORY}
explizit
angeben.
Sie müssen keinen neuen MySQL-Server kompilieren, nur um neu mit einer anderen Unix-Socketdatei und TCP/IP-Portnummer zu starten. Sie können auch dieselbe Serverbinärdatei verwenden und diese mehrfach aufrufen – mit jeweils anderen Parameterwerten zur Laufzeit. Eine Möglichkeit hierzu besteht in der Verwendung von Befehlszeilenoptionen:
shell> mysqld_safe --socket=file_name
--port=port_number
Um einen zweiten Server zu starten, geben Sie andere
Optionswerte für --socket
und
--port
an und übergeben zudem eine Option
--datadir=
an
mysqld_safe, damit der Server ein anderes
Datenverzeichnis benutzt.
path
Eine weitere Möglichkeit, mit der sich ein ähnlicher Effekt erzielen lässt, besteht darin, den Namen der Unix-Socketdatei und die TCP/IP-Portnummer mithilfe von Umgebungsvariablen anzugeben:
shell>MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell>MYSQL_TCP_PORT=3307
shell>export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell>mysql_install_db --user=mysql
shell>mysqld_safe --datadir=/path/to/datadir &
Dies steht eine schnelle Möglichkeit dar, einen zweiten Server zu Testzwecken zu starten. Das Praktische an dieser Methode ist, dass die Einstellungen der Umgebungsvariablen für alle Clientprogramme gelten, die Sie von derselben Shell aufrufen. Auf diese Weise werden Verbindungen für diese Clients automatisch an den zweiten Server geleitet.
Anhang F, Umgebungsvariablen, enthält eine Liste aller anderen Umgebungsvariablen, die Sie zur Beeinflussung von mysqld verwenden können.
Für die automatische Ausführung des Servers sollte das Startskript, welches beim Systemstart ausgeführt wird, den folgenden Befehl jeweils einmal pro Server ausführen und dabei den jeweils passenden Optionsdateipfad angeben:
shell> mysqld_safe --defaults-file=file_name
Jede Optionsdatei sollte die Optionswerte für jeweils einen bestimmten Server angeben.
Eine andere Möglichkeit zum Starten mehrerer Server bietet unter Unix das Skript mysqld_multi. Siehe auch Abschnitt 5.4.3, „mysqld_multi — Verwalten mehrerer MySQL-Server“.
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.