Ich hatte zwei MySQL-Server (127.0.0.1:3306 und 127.0.0.1:3307). Jetzt erhalte ich diesen seltsamen Fehler: mysql_connect(): Lost connection to MySQL server at 'reading initial communication packet'
Ich kann eine Verbindung herstellen localhost:3307
, aber es gibt keine Tabellen / Datenbanken. Ich bin mir ziemlich sicher, dass /etc/my.cnf
es richtig ist:
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = root
password = ***
[mysqld]
port = 3306
socket = /var/run/mysql/mysql.sock
[mysqld2]
port = 3307
socket = /var/run/mysql/mysql2.sock
Was kann ich jetzt machen? Wie kann ich den MySQL-Server problemlos neu starten?
Vielleicht noch wichtiger:
Wie kann ich sicherstellen, dass alle Tabellen noch vorhanden sind?
Antworten:
Folgendes fehlt schnell: Jedes [mysqld] muss einen eigenen Datenverzeichnis haben . Keine zwei mysqld-Gruppen können denselben Datenverzeichnis verwenden. Sie müssen verschiedene Datenverzeichnisse in verschiedenen Ordnern zuweisen und sicherstellen, dass Sie "chown -R mysql: mysql (Datenverzeichnisordner)" für alle Datenverzeichnisse ausführen.
Ihre /etc/my.cnf sollte ungefähr so aussehen:
Lesen Sie diesen Link der Pythian-Gruppe, um zu erfahren, wie Sie die einzelnen DB-Services starten und stoppen .
Aus meiner Antwort sollte hervorgehen, dass eine vollständige Kopie der Daten in / var / lib / mysql1, / var / lib / mysql2 usw. vorhanden sein muss.
quelle
So führe ich Multis aus:
Erstellen Sie eine "my.cnf" für jede Instanz von mysql und geben Sie Ihren Port und Socket an. zB Port 3307
[mysqld]
Port = 3307
Socket = /opt/db/3307/mysql.sock
datadir = / opt / db / 3307
tmpdir = / opt / tmp / 3307
...
Starten Sie jede Instanz mit einer eigenen Include-Datei.
z.B
Auf diese Weise kann ich jede einzelne Instanz steuern.
quelle
port
unddatadir
und sie scheinen gut zu funktionieren. Ist das Einstellensocket
undtmpdir
erforderlich?