So installieren und starten Sie mehrere MySQL-Instanzen unter Windows 2012

12

Ich habe gerade MySQL 5.7 auf Windows 2012 VM installiert. Ich versuche mehrere Instanzen zu erstellen und auszuführen, bin aber sehr frustriert, dass so eine einfache Sache nicht funktioniert.

Ich habe MySQL in C: \ Programme \ MySQL \ MySQL Server 5.7 installiert. Dies ist der Standardspeicherort. Dann habe ich den Ordner kopiert und eine weitere Kopie davon erstellt, um eine weitere Instanz zu erstellen (ich nehme an, dass dies so funktioniert?).

Beide MySQL-Instanzen sind in der folgenden Abbildung dargestellt.

Server 1 Server 1

Server2
Server2

Die INI-Einstellungen für beide Server sind unten angegeben:

Server 1

Server-ID = 1
log-bin = "mysql-bin"
binlog-ignore-db = test
binlog-ignore-db = Informationsschema
replizieren-ignorieren-db = Test
replizieren-ignorieren-db = Informationsschema
Relay-log = "mysql-Relay -log "
Auto-Inkrement-Inkrement = 2
Auto-Inkrement-Offset = 1

Server2
Server-ID = 2
log-bin = "mysql-bin"
binlog-ignore-db = test
binlog-ignore-db = Informationsschema
replizieren-ignorieren-db = Test
replizieren-ignorieren-db = Informationsschema
Relay-log = "mysql- Relais-Protokoll "
Auto-Inkrement-Inkrement = 2
Auto-Inkrement-Offset = 2

Ich führe beide Server aus, indem ich die Eingabeaufforderung öffne und Folgendes
eingebe : "C: \ Programme \ MySQL \ MySQL Server 5.7 \ bin \ mysqld"
"C: \ Programme \ MySQL \ MySQL Server 5.7 - 2 \ bin \ mysqld"

Der Befehl scheint erfolgreich ausgeführt zu werden, da kein Fehler angezeigt wird. Wenn ich jedoch im Task-Manager nachschaue, ob MySQL-Prozesse ausgeführt werden, werden keine angezeigt.

Was mache ich falsch?

Frank Martin
quelle
Bitte bearbeiten Sie Ihre Frage, um Fehlerprotokolle usw.
einzuschließen
Problem ist gelöst.
Frank Martin
Möchten Sie, dass ich die Frage öffne, damit Sie eine Antwort posten können?
EEAA
Ja, damit ich eine Antwort posten kann.
Frank Martin

Antworten:

11

Ich glaube, Sie haben versucht, sie auf demselben Port auszuführen.

Die Portnummern wurden so geändert, dass sie unterschiedlich waren

Anthony Fornito
quelle
11

Der Fehler, den ich gemacht habe, war, den gesamten MySQL-Installationsordner zu kopieren. Sie müssen diesen Ordner nicht kopieren.

  • Erstellen Sie einfach eine neue INI-Datei für jede Instanz, die Sie ausführen möchten (Beispiele oben), an einem beliebigen Speicherort, z. B. C: \ MyInstances \ my1.ini.
  • Dann erstellen Sie einen neuen Ordner für zB data1 in C: \ MyInstances \ data1 und kopieren mysql und information_schema Datenbanken darin. Sie erhalten diese Datenbanken aus dem Datenordner, in dem MySQL installiert ist. Unter Windows 2012 (und wahrscheinlich auch unter anderen Server-Betriebssystemen) ist dies normalerweise C: \ ProgramData \ MySQL
  • Definieren Sie dann Folgendes in Ihrer INI-Datei.

datadir = C: / MyInstances / data1

  1. Führen Sie dann den folgenden Befehl aus, der MySQL als Dienst installiert. Nachdem die Dienste erstellt wurden, führen Sie einfach den Dienst aus.

MySqlpath \ bin \ mysqld --installiere mysqld1 --defaults-file = PATH_TO_YOUR_INI_FILE

Natürlich müssen Sie in jeder INI-Datei eine andere Portnummer definieren, wie von @Anthony Fornito angegeben.

Frank Martin
quelle
11
  1. Erstellen Sie einen separaten Datenordner und geben Sie NETWORK SERVICE die VOLLSTÄNDIGE STEUERUNG.
  2. Kopieren Sie die Datei my.ini in den neuen Datenordner.
  3. Erstellen Sie eine neue Datei im Datenverzeichnis mit dem Namen mysql-init.txt und fügen Sie eine einzelne Zeile hinzu, um sicherzustellen, dass das Kennwort des Root-Benutzers festgelegt ist.

    • ALTER USER 'root'@'localhost' IDENTIFIED BY '[Enter Password]';
  4. Bearbeiten Sie die Datei my.ini, indem Sie den Namen des Ports, des Sockets, des Datenverzeichnisses und der gemeinsam genutzten Speicherbasis ändern. All dies muss sich von anderen Instanzen von MySQL unterscheiden.

my.ini:

[client]
port=3333
socket=MYSQL2_INST.SOCK
shared-memory-base-name=MYSQL2_INST

[mysqld]
shared-memory-base-name=MYSQL2_INST
socket=MYSQL2_INST.SOCK
port=3333
basedir="C:/Program Files/MySQL/MySQL Server 5.7"
datadir="E:/MySQL2/Data"
  1. Navigieren Sie in der Befehlszeile zu ~ \ MySQL Server XY \ bin \ und führen Sie es aus

    • mysqld --install MySQL57-2 --defaults-file=E:\mysql2\data\my.ini --init-file=E:\mysql2\data\mysql-init.txt
  2. Starten Sie den Dienst

    • NET START MySQL57-2
  3. Stellen Sie sicher, dass der Dienst erfolgreich gestartet wurde. Wenn dies nicht der Fall ist, finden Sie ein Fehlerprotokoll im Datenordner. Andernfalls sollten Sie bereit sein.

MasterProgrammer200
quelle
folgte ihm, konnte aber den neuen Dienst nicht starten, PS C: \ MySQLInstances \ data> net start mysqld Der mysqld-Dienst wird gestartet. Der mysqld-Dienst konnte nicht gestartet werden. Der Dienst hat keinen Fehler gemeldet. Weitere Hilfe erhalten Sie, indem Sie NET HELPMSG 3534 eingeben.
Rajat