Comment installer et démarrer plusieurs instances MySQL sur Windows 2012

12

Je viens d'installer MySQL 5.7 sur Windows 2012 VM. J'essaie de créer et d'exécuter plusieurs instances, mais très frustré qu'une chose aussi simple ne fonctionne pas.

J'ai installé MySQL dans C: \ Program Files \ MySQL \ MySQL Server 5.7 qui est l'emplacement par défaut, puis j'ai copié le dossier et en ai fait une autre copie pour créer une autre instance (je suppose que c'est comme ça que ça marche?)

Les deux instances MySQL sont illustrées dans l'image ci-dessous.

Server1 Server1

Server2
Server2

Les paramètres INI pour les deux serveurs sont indiqués ci-dessous:

Server1

server-id = 1
log-bin = "mysql-bin"
binlog-ignore-db = test
binlog-ignore-db = information_schema
replicate-ignore-db = test
replicate-ignore-db = information_schema
relay-log = "mysql-relay -log "
auto-increment-increment = 2
auto-increment-offset = 1

Server2
id-serveur = 2
log-bin = "mysql-bin"
binlog-ignore-db = test
binlog-ignore-db = information_schema
replicate-ignore-db = test
replicate-ignore-db = information_schema
relay-log = "mysql- relay-log "
auto-increment-increment = 2
auto-increment-offset = 2

J'exécute les deux serveurs en ouvrant l'invite de commande et en tapant ce qui suit:
"C: \ Program Files \ MySQL \ MySQL Server 5.7 \ bin \ mysqld"
"C: \ Program Files \ MySQL \ MySQL Server 5.7 - 2 \ bin \ mysqld"

La commande semble s'exécuter correctement car aucune erreur n'est affichée, mais lorsque je regarde le gestionnaire de tâches pour voir si des processus mysql sont en cours d'exécution, je n'en vois aucun.

Qu'est-ce que je fais mal?

Frank Martin
la source
Veuillez modifier votre question pour inclure les journaux d'erreurs, etc.
EEAA
Le problème est résolu.
Frank Martin
Souhaitez-vous que j'ouvre la question pour pouvoir poster une réponse?
EEAA
Oui, je peux donc poster une réponse.
Frank Martin

Réponses:

11

Je pense que vous essayez de les exécuter sur le même port.

Changé les numéros de ports pour être différent est ce qui l'a fait fonctionner

Anthony Fornito
la source
11

L'erreur que je faisais était de copier tout le dossier d'installation de MySQL. Vous n'avez pas besoin de copier ce dossier.

  • Créez simplement un nouveau fichier ini pour chaque instance que vous souhaitez exécuter (exemples donnés ci-dessus) à n'importe quel emplacement, par exemple C: \ MyInstances \ my1.ini.
  • Créez ensuite un nouveau dossier pour, par exemple, data1 dans C: \ MyInstances \ data1 et copiez -y les bases de données mysql et information_schema . Vous obtiendrez ces bases de données à partir du dossier de données où MySQL est installé. Sur Windows 2012 (et probablement sur un autre système d'exploitation de serveur), il s'agit généralement de C: \ ProgramData \ MySQL
  • Définissez ensuite les éléments suivants dans votre fichier ini.

datadir = C: / MyInstances / data1

  1. Exécutez ensuite la commande suivante qui installera MySQL en tant que service. Une fois les services créés, exécutez simplement le service.

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

Bien sûr, dans chaque fichier ini, vous devez définir un numéro de port différent comme mentionné par @Anthony Fornito.

Frank Martin
la source
11
  1. Créez un dossier de données séparé et donnez un CONTRÔLE COMPLET au SERVICE RÉSEAU.
  2. Copiez le fichier my.ini dans le nouveau dossier de données.
  3. Créez un nouveau fichier dans le répertoire de données appelé mysql-init.txt et ajoutez une seule ligne pour vous assurer que le mot de passe de l'utilisateur root est défini.

    • ALTER USER 'root'@'localhost' IDENTIFIED BY '[Enter Password]';
  4. Modifiez le fichier my.ini en modifiant le port, le socket, le datadir et le nom de base de la mémoire partagée. Tout cela doit être différent des autres instances de MySQL.

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. Depuis la ligne de commande, accédez à ~ \ MySQL Server XY \ bin \ et exécutez

    • mysqld --install MySQL57-2 --defaults-file=E:\mysql2\data\my.ini --init-file=E:\mysql2\data\mysql-init.txt
  2. Démarrez le service

    • NET START MySQL57-2
  3. Vérifiez que le service a démarré correctement. Si ce n'est pas le cas, vous pouvez trouver un journal des erreurs dans le dossier de données, sinon vous devriez être prêt à partir.

MasterProgrammer200
la source
l'a suivi, mais n'a pas pu démarrer le nouveau service, PS C: \ MySQLInstances \ data> net start mysqld Le service mysqld démarre. Le service mysqld n'a pas pu être démarré. Le service n'a signalé aucune erreur. Plus d'aide est disponible en tapant NET HELPMSG 3534.
Rajat