Heim >Datenbank >MySQL-Tutorial >MySQL-Einzelmaschine, mehrere Instanzen teilen

MySQL-Einzelmaschine, mehrere Instanzen teilen

小云云
小云云Original
2018-02-23 11:43:541587Durchsuche

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.

1. MySQL installieren

System: Ubuntu 16.04LTS (xenial)
Version: Percorna Server 5.7.21-20
Installation: Offizielles Website-Tutorial

2 . mysqld_multi-Konfigurationsdatei

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

3. Starten Sie den Dienst

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';

Folgevorgänge

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn