Das Erreichen mehrerer Instanzen auf einer einzelnen Maschine kann mit Docker problemlos erreicht werden. Hier teilen wir hauptsächlich den Prozess der Verwendung des integrierten Tools mysqld_multi und zwei Fallstricke.
System: Ubuntu 16.04LTS (xenial)
Version: Percorna Server 5.7.21-20
Installation: Offizielles Website-Tutorial
Erstellen Sie eine neue Datei /etc/mysql/multi_server.cnf
[mysqld_multi]
# Wenn der MySQL-Dienst nicht über mysqld_safe gestartet wird, sollte dies kommentiert werden out
#mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = 123456
[mysqld1]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var /lib/mysql
tmpdir = /tmp
[mysqld2]
user = mysql
pid-file=/var/run/mysqld/mysql.pid2
socket=/var/run/ mysqld/mysqld.sock2
port = 3307
basedir = /usr
datadir = /var/lib/mysql2
Anzeigen der ausgeführten Instanz
mysqld_multi -- defaults-file=/etc/mysql/multi_server.cnf report
Dienst starten
mysqld_multi --defaults-file=/etc/mysql/multi_server.cnf start
Aufgrund der allgemeinen Situation haben wir das erste bereits installiert und der Root-Benutzer hat es auch eingerichtet, sodass es unwahrscheinlich ist, dass es Probleme verursacht.
Mögliche Probleme mit mysql2:
SCHWERWIEGENDER FEHLER : Es wurde versucht, mysqld unter der Gruppe [mysqld2] zu starten, aber es wurde kein Datenverzeichnis gefunden oder konnte erstellt werden. Datenverzeichnis verwendet: /var/lib/mysql2
MySQL5.7 Die Befehlszeile zum Hinzufügen einer neuen Instanz lautet wie folgt
mysqld --datadir= /var/lib/mysql2 --initialize --initialize-insecure...
Offizieller Website-Link
Sehen Sie sich die Datei /usr/bin/ an. mysqld_multi-Skriptzeile 343
print "\n\nInstalling new database in $datadir\n\n"; $install_cmd="/usr/bin/mysqld "; $install_cmd.="--initialize "; $install_cmd.="--user=mysql "; $install_cmd.="--datadir=$datadir";
咋Auf den ersten Blick scheint es kein Problem zu geben. Verwenden Sie tatsächlich die Befehlszeile, um
which mysqld 得到的结果 /usr/sbin/mysqld
auszuführen. Nachdem Sie dieses Skript geändert haben, Es kann normal gestartet werden.
Wenn es immer noch nicht funktioniert, sollten Sie die Benutzerberechtigungsprobleme berücksichtigen.
Wenn Sie Ubuntu verwenden, möchten Sie möglicherweise auch überprüfen, ob Apparmor Berechtigungsbeschränkungen hat.
Wenn die MySQL2-Instanz auf diese Weise gestartet wird, erstellt sie zufällig ein zufälliges Kennwort für den Root-Benutzer, was dazu führt, dass sich nachfolgende Clients nicht bei dieser Instanz anmelden können kann nur error_log verwenden
Zu diesem Zeitpunkt müssen Sie auch das Skript ändern und den Parameter „--initialize-insecure“ zum Skript hinzufügen. Achten Sie auf die Leerzeichen zwischen den Parametern.
Erstellen Nach der Verbindung ausführen
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Berechtigungen für den Root-Benutzer hinzufügen
GEWÄHREN SIE ALLE PRIVILEGIEN AUF . TO root@'%' IDENTIFIED BY „123456“;
Flush-Berechtigungen;
Fügen Sie dem mysqld_multi-Verwaltungsbenutzer multi_admin in jedem Fall die Berechtigung zum Herunterfahren hinzu
HERUNTERFAHREN ERWÄHREN . AN multi_admin@localhost IDENTIFIED BY 'password';
Wenn die Instanz nicht effektiv über mysqld_multi stop heruntergefahren werden kann, können Sie direkt über mysqladmin herunterfahren
Wenn die Instanz aufgrund eines fehlerhaften Betriebs nicht gestartet werden kann, können Sie das Fehlerprotokoll über den Befehl
tail -30 /var/log/mysql/error.log
anzeigen FAQ
2018-02-22T02:02:28.227868Z 0 [FEHLER] /usr/sbin/mysqld: Datei „/var/run/mysqld/mysql.pid3“ kann nicht erstellt/geschrieben werden (Fehlercode : 13 – Berechtigung verweigert)
2018-02-22T02:02:28.227889Z 0 [FEHLER] Server kann nicht gestartet werden: PID-Datei kann nicht erstellt werden: Berechtigung verweigert
Zu diesem Zeitpunkt können Sie dies tun siehe /var/run Der Ordner /mysqld lautet wie folgt, löschen Sie alle Dateien und starten Sie ihn neu
-rw-r--r-- 1 root root 0 Feb 22 02:01 mysqld.pid
-rw- r--r-- 1 root root 0 21. Februar 15:35 mysqld.pid2
srwxrwxrwx 1 mysql mysql 0 22. Februar 02:02 mysqld.sock=
srwxrwxrwx 1 mysql mysql 0 22. Februar 02: 02 mysqld.sock2=
-rw------- 1 mysql mysql 6 Feb 22 02:02 mysqld.sock2.lock
srwxrwxrwx 1 mysql mysql 0 Feb 22 02:02 mysqld.sock3=
-rw ------- 1 mysql mysql 6 Feb 22 02:02 mysqld.sock3.lock
-rw------- 1 mysql mysql 6 Feb 22 02:02 mysqld.sock.lock
-rw-r--r-- 1 Wurzel Wurzel 0 22. Februar 02:01 mysql.pid2
-rw-r--r-- 1 Wurzel Wurzel 0 22. Februar 02:01 mysql.pid3
Verwandte Empfehlungen:
Bereitstellung einer MySQL-Einzelmaschinen-Mehrinstanzlösung
MySQL-Einzelmaschinen-Mehrinstanzkonfiguration
LBOMP – eigenständiges MySQL-Backup-Überwachungstool
Das obige ist der detaillierte Inhalt vonMySQL-Einzelmaschine, mehrere Instanzen teilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!