mysqld_multi wurde entwickelt, um mehrere mysqld-Prozesse zu verwalten, die auf Verbindungen über verschiedene Unix-Socketdateien oder TCP/IP-Ports horchen. Das Skript kann Server starten und beenden und den aktuellen Status melden. Eine Alternative zur Verwaltung mehrerer Server ist der MySQL Instance Manager (siehe auch Abschnitt 5.5, „mysqlmanager — Der MySQL Instance Manager“).
            mysqld_multi sucht nach Abschnitten
            namens
            [mysqld in
            N]my.cnf (bzw. in der Datei, die mit der
            Option --config-file angegeben wurde).
            N kann eine beliebige positive
            Ganzzahl sein. Diese Zahl wird in der folgenden Abhandlung
            als Abschnittsnummer bzw. als GNR
            (vom Englischen „Group Number“) bezeichnet.
            Abschnittsnummern trennen Abschnitte in Optionsdateien
            voneinander und werden als Argumente für
            mysqld_multi verwendet. Sie geben an,
            welche Server Sie starten oder beenden bzw. zu welchen
            Servern Sie einen Statusbericht anfordern wollen. Die
            Optionen, die in diesen Abschnitten aufgelistet sind, sind
            identisch mit denen, die Sie im Abschnitt
            [mysqld] angeben würden, der zum Starten
            von mysqld verwendet wird. (Siehe z. B.
            Abschnitt 2.9.2.2, „MySQL automatisch starten und anhalten“.) Wenn Sie allerdings
            mehrere Server verwenden, ist es erforderlich, dass jeder
            dieser Server seinen eigenen Optionswert (z. B. die
            Unix-Socketdatei oder die TCP/IP-Portnummer) verwendet.
            Weitere Informationen dazu, welche Optionen in einer
            Multiserverumgebung für jeden Server eindeutig sein
            müssen, finden Sie in Abschnitt 5.13, „Mehrere MySQL-Server auf derselben Maschine laufen lassen“.
          
Um mysqld_multi aufzurufen, verwenden Sie folgende Syntax:
shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR] ...]
            start, stop und
            report geben die jeweilig
            durchzuführende Operation an. Sie können die angegebene
            Operation für einen oder mehrere Server abhängig davon
            durchführen lassen, welche
            GNR-Liste auf die Option folgt.
            Ist keine Liste vorhanden, dann führt
            mysqld_multi den Vorgang für alle Server
            in der Optionsdatei aus.
          
            Jeder GNR-Wert stellt eine
            Abschnittsnummer bzw. einen Abschnittsnummernbereich für
            Optionsdateien dar. Der Wert sollte die Zahl am Ende des
            Abschnittsnamens in der Optionsdatei sein. So lautet die
            GNR für einen Abschnitt namens
            [mysqld17] etwa 17. Um
            einen Zahlenbereich anzugeben, trennen Sie die erste und die
            letzte Zahl durch einen Bindestrich. Der
            GNR-Wert 10-13
            bezeichnet also die Abschnitte [mysqld10]
            bis [mysqld13]. Mehrere Abschnitte oder
            Abschnittsbereiche lassen sich – getrennt durch Kommata
            – auf der Befehlszeile angeben. Es dürfen keine
            Whitespace-Zeichen (d. h. Leerzeichen oder Tabulatoren) in
            der GNR-Liste erscheinen, da alle
            auf ein solches Zeichen folgenden Angaben ignoriert werden.
          
            Der folgende Befehl startet einen einzelnen Server unter
            Verwendung des Optionsabschnitts
            [mysqld17]:
          
shell> mysqld_multi start 17
            Der folgende Befehl beendet mehrere Server unter Verwendung
            der Abschnittsgruppen [mysqld8] sowie
            [mysqld10] bis
            [mysqld13]:
          
shell> mysqld_multi stop 8,10-13
Ein Beispiel, wie man eine Optionsdatei konfigurieren kann, bietet der folgende Befehl:
shell> mysqld_multi --example
mysqld_multi unterstützt die folgenden Optionen:
Zeigt eine Hilfsmeldung an und wird dann beendet.
                Gibt den Namen einer alternativen Optionsdatei an. Die
                Option bestimmt, wo mysqld_multi nach
                [mysqld-Optionsabschnitten
                sucht. Ohne Angabe dieser Option werden alle Optionen
                aus der normalen Optionsdatei
                N]my.cnf ausgelesen. Die Option
                beeinflusst nicht, wo mysqld_multi
                seine eigenen Optionen ausliest (diese werden immer dem
                Abschnitt [mysqld_multi] in der
                normalen Datei my.cnf entnommen).
              
Zeigt eine Beispieloptionsdatei an.
Gibt den Namen der Logdatei an. Wenn die Datei vorhanden ist, werden geloggte Einträge angehängt.
Gibt die mysqladmin-Binärdatei an, die zum Beenden von Servern verwendet wird.
                Die zu verwendende
                mysqld-Binärdatei. Beachten Sie,
                dass Sie auch mysqld_safe als Wert
                angeben können. Wenn Sie den Server mit
                mysqld_safe starten, können Sie die
                Optionen mysqld oder
                ledir im entsprechenden Abschnitt
                [mysqld
                angeben. Diese Optionen bezeichnen den Namen des
                Servers, den mysqld_safe starten
                soll, und den Pfadnamen des Verzeichnisses, in dem der
                Server sich befindet. (Beschreibungen zu diesen Optionen
                finden Sie in Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“.) Beispiel:
              N]
[mysqld38] mysqld = mysqld-max ledir = /opt/local/mysql/libexec
                Schreibt Loginformationen in stdout
                statt in die Logdatei. (Standardmäßig erfolgt die
                Ausgabe in die Logdatei.)
              
Passwort des MySQL-Kontos, das für den Aufruf von mysqladmin verwendet wird. Beachten Sie, dass der Passwortwert – anders als bei anderen MySQL-Programmen – bei dieser Option nicht optional ist.
Stummer Modus (Warnungen werden deaktiviert).
                Alle betreffenden MySQL-Server werden statt über die
                Unix-Socketdatei über den TCP/IP-Port angebunden. (Wenn
                eine Socketdatei fehlt, kann der Server zwar unter
                Umständen noch laufen, ist aber nur über den
                TCP/IP-Port erreichbar.) Standardmäßig werden
                Verbindungen unter Verwendung der Unix-Socketdatei
                hergestellt. Diese Option wirkt sich auf alle
                stop- und
                reportOperationen aus.
              
Benutzername des MySQL-Kontos, das für den Aufruf von mysqladmin verwendet wird.
Zeigt mehr Informationen an.
Zeigt die Versionsinformation an und wird dann beendet.
Einige Anmerkungen zu mysqld_multi:
Extrem wichtig: Bevor Sie mysqld_multi verwenden, müssen Sie die Bedeutung der Optionen, die an die mysqld-Server übergeben werden, verstanden haben und genau wissen, warum Sie separate mysqld-Prozesse benutzen wollen. Die Verwendung mehrerer mysqld-Server mit demselben Datenverzeichnis ist extrem gefährlich. Sofern Sie nicht genauestens wissen, was Sie tun, verwenden Sie in jedem Fall getrennte Datenverzeichnisse. Das Starten mehrerer Server mit demselben Datenverzeichnis steigert die Leistungsfähigkeit eines Thread-basierten Systems nicht! Siehe auch Abschnitt 5.13, „Mehrere MySQL-Server auf derselben Maschine laufen lassen“.
                Wichtig: Vergewissern
                Sie sich, dass das Datenverzeichnis jedes Servers für
                das Unix-Konto, unter dem der jeweilige
                mysqld-Prozess gestartet wurde,
                uneingeschränkt zugänglich ist. Verwenden Sie hierfür
                keinesfalls das Unix-Konto
                root, sofern Sie nicht
                genauestens wissen, was Sie tun.
                Siehe auch Abschnitt 5.7.5, „Wie man MySQL als normaler Benutzer laufen läßt“.
              
                Vergewissern Sie sich, dass das MySQL-Konto, welches zum
                Beenden der mysqld-Server (mit dem
                Programm mysqladmin) verwendet wird,
                für jeden Server den gleichen Benutzernamen und das
                gleiche Passwort hat. Außerdem müssen Sie
                sicherstellen, dass das Konto über die Berechtigung
                SHUTDOWN verfügt. Wenn die Server,
                die Sie verwalten wollen, unterschiedliche Benutzernamen
                oder Passwörter für die Administrationskonten
                aufweisen, sollten Sie auf jedem Server ein Konto mit
                jeweils demselben Benutzernamen und Passwort einrichten.
                Sie könnten etwa ein gemeinsames Konto
                multi_admin erstellen, indem Sie auf
                jedem Server die folgenden Befehle ausführen:
              
shell>mysql -u root -S /tmp/mysql.sock -pEnter password: mysql>GRANT SHUTDOWN ON *.*->TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
                Siehe auch Abschnitt 5.8.2, „Wie das Berechtigungssystem funktioniert“. Sie müssen
                diesen Schritt für jeden
                mysqld-Server durchführen. Ändern
                Sie die Verbindungsparameter entsprechend, wenn Sie mit
                den einzelnen Servern Verbindungen herstellen. Beachten
                Sie, dass der Hostnamensteil des Kontonamens die
                Herstellung einer Verbindung als
                multi_admin von dem Host aus
                ermöglichen muss, auf dem sie
                mysqld_multi ausführen wollen.
              
Die Unix-Socketdatei und die TCP/IP-Portnummer müssen für jeden mysqld-Server unterschiedlich sein.
                Die Option --pid-file ist sehr wichtig,
                wenn Sie mysqld_safe zum Starten von
                mysqld verwenden (z. B.
                --mysqld=mysqld_safe). Jeder
                mysqld-Server sollte seine eigene
                Prozesskennungsdatei haben. Der Vorteil der Verwendung
                von mysqld_safe anstelle von
                mysqld besteht darin, dass
                mysqld_safe seinen
                mysqld-Prozess überwacht und ihn neu
                startet, wenn der Prozess aufgrund eines Signals,
                welches mit kill -9 gesendet wurde,
                oder aus einem anderen Grund (z. B. wegen eines
                Segmentierungsfehlers) terminiert wurde. Bitte beachten
                Sie, dass das Skript mysqld_safe
                unter Umständen erfordert, dass Sie es von einer
                bestimmten Position aus starten. Das bedeutet, dass Sie
                möglicherweise in ein bestimmtes Verzeichnis wechseln
                müssen, bevor Sie mysqld_multi
                ausführen. Wenn Sie Probleme mit dem Starten haben,
                rufen Sie das Skript mysqld_safe zur
                Anzeige auf. Suchen Sie dort die folgenden Zeilen:
              
---------------------------------------------------------------- MY_PWD=`pwd` # Check if we are starting this relative (for the binary release) if test -d $MY_PWD/data/mysql -a -f ./share/mysql/english/errmsg.sys -a \ -x ./bin/mysqld ----------------------------------------------------------------
Der mit diesen Zeilen durchgeführte Test sollte erfolgreich sein, andernfalls könnten Probleme auftreten. Siehe auch Abschnitt 5.4.1, „mysqld_safe — Startskript für den MySQL-Server“.
                Sie sollten die Option --user für
                mysqld verwenden. Zu diesem Zweck
                müssen Sie das Skript mysqld_multi
                jedoch als Unix-Benutzer root
                ausführen. Das Einfügen der Option in die Optionsdatei
                ist irrelevant: Wenn Sie nicht der Superuser sind und
                die mysqld-Prozesse unter Ihrem
                eigenen Unix-Konto gestartet werden, erhalten Sie
                lediglich eine Warnung.
              
            Das folgende Beispiel zeigt, wie Sie eine Optionsdatei zur
            Verwendung mit mysqld_multi einrichten
            könnten. Die Reihenfolge, in der die
            mysqld-Programme gestartet oder beendet
            werden, hängt von der Reihenfolge ab, in der sie in der
            Optionsdatei aufgeführt sind. Abschnittsnummern müssen
            keine durchgehende Folge bilden. Der erste und der fünfte
            [mysqld-Abschnitt
            wurden im Beispiel absichtlich weggelassen, um zu
            veranschaulichen, dass es „Lücken“ in der
            Optionsdatei geben darf. Dies erhöht die Flexibilität.
          N]
# This file should probably be in your home dir (~/.my.cnf) # or /etc/my.cnf # Version 2.1 by Jani Tolonen [mysqld_multi] mysqld = /usr/local/bin/mysqld_safe mysqladmin = /usr/local/bin/mysqladmin user = multi_admin password = multipass [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/var2/hostname.pid2 datadir = /usr/local/mysql/var2 language = /usr/local/share/mysql/english user = john [mysqld3] socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/var3/hostname.pid3 datadir = /usr/local/mysql/var3 language = /usr/local/share/mysql/swedish user = monty [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/var4/hostname.pid4 datadir = /usr/local/mysql/var4 language = /usr/local/share/mysql/estonia user = tonu [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/var6/hostname.pid6 datadir = /usr/local/mysql/var6 language = /usr/local/share/mysql/japanese user = jani
Siehe auch Abschnitt 4.3.2, „my.cnf-Optionsdateien“.
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.

