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 !