Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment exécuter plusieurs instances MySQL sur la même machine

Parfois, vous devrez peut-être exécuter plusieurs instances MySQL sur un seul serveur. Par exemple, vous devrez peut-être tester différentes instances MySQL pour le staging, les tests et la production. Dans cet article, nous verrons comment exécuter plusieurs instances MySQL sur la même machine, mais sur des ports différents, avec des fichiers de journalisation et des paramètres de configuration différents.


Comment exécuter plusieurs instances MySQL sur la même machine

Voici les étapes pour exécuter plusieurs instances MySQL sur la même machine.


1. Ouvrir le fichier de configuration MySQL

Généralement, vous trouverez le fichier de configuration MySQL dans /etc/mysql/my.cnf . Ouvrez le terminal et exécutez la commande suivante pour ouvrir le fichier de configuration MySQL.

$ sudo vi /etc/mysql/my.cnf


2. Configurer plusieurs instances MySQL

Vous trouverez la configuration par défaut de MySQL quelque chose de similaire à ce qui est montré ci-dessous.

[mysqld] 
user = mysql 
pid-file = /var/run/mysqld/mysqld.pid 
socket = /var/run/mysqld/mysqld.sock 
port = 3306 
datadir = /data/mysql/mysql

Copiez-collez le bloc de code ci-dessus en dessous dans le même fichier. Remplacer [mysqld] avec [mysqld1] et changez la valeur du port en 3307. Cela rendra la nouvelle instance mysqld1 exécuté sur un autre port 3307 avec un nom de processus différent mysqld1. De même, modifiez les noms de fichier des variables pid-file, socket et datadir comme indiqué ci-dessous.

Assurez-vous de copier le dossier datadir pour chaque instance ci-dessous. Assurez-vous également que l'utilisateur mysql l'utilisateur dispose des autorisations d'accès. Chaque instance a besoin de son propre répertoire de données.

[mysqld1] 
user = mysql 
pid-file = /var/run/mysqld/mysqld1.pid 
socket = /var/run/mysqld/mysqld1.sock 
port = 3307 
datadir = /data/mysql/mysql1

Maintenant mysqld1 s'exécutera comme une instance distincte de mysqld

De même, vous pouvez créer plus d'instances comme indiqué ci-dessous

[mysqld2] 
user = mysql 
pid-file = /var/run/mysqld/mysqld2.pid 
socket = /var/run/mysqld/mysqld2.sock 
port = 3308 
datadir = /data/mysql/mysql2 
.... 
[mysqldN] 
user = mysql 
pid-file = /var/run/mysqld/mysqldN.pid 
socket = /var/run/mysqld/mysqldN.sock 
port = N 
datadir = /data/mysql/mysqlN

Assurez-vous de fournir un fichier pid, un fichier socket et un répertoire de données différents pour chaque instance et assurez-vous que l'utilisateur mysql a requis les autorisations de répertoire car le mysql l'utilisateur doit pouvoir créer les fichiers et répertoires requis.


3. Gérer plusieurs instances

Vous pouvez démarrer chaque instance séparément en utilisant mysqld commande ci-dessous. Remplacez mysqlN avec votre choix d'instance (par exemple mysql1, mysql2, etc)

mysqld --initialize --user=mysql --datadir=/home/mysql/mysqlN

Si pour une raison quelconque, la configuration ci-dessus ne fonctionne pas pour vous, copiez le fichier my.cnf dans /etc/my.cnf emplacement et réessayez. Parfois, mysql n'enregistre pas plusieurs instances configurées dans /etc/mysql/my.cnf

$ sudo cp /etc/mysql/my.cnf /etc/my.cnf

Si vous souhaitez vous connecter à une instance spécifique (par exemple mysqld1) à partir de la ligne de commande, vous devez spécifier l'emplacement de son fichier socket avec l'option -S. Sinon, vous serez connecté à l'instance MySQL par défaut.

mysql -u root -p -S /var/run/mysqld/mysqld1.sock

Espérons que cet article vous aidera à configurer et à gérer plusieurs instances MySQL sur le même serveur.

Besoin d'un outil de reporting pour MySQL ? Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !