Voulez-vous vous inscrire?
1 utilisateur(s) en ligne :: 1 invité(s) et 0 membre(s)

FAQ Matérielle

ID #1046

MySQL multi instance sous Linux

MySQL : installation multi-instances

Dans le cas ou vous gérez plusieurs serveurs MySQL (distants ou sur différents VLAN), il peut être utile de déporter tout traitement long sur un seul serveur SQL dédié pour peu de regrouper l’ensemble des bases de données.

En attendant MariaDB 10 qui permettra la réplication multi-master, il est nécessaire de mettre en place plusieurs instances MySQL sur la même machine. Une réplication pourra ensuite être lancée sur chaque instance vers chaque serveur SQL source, configuré évidemment en master.

Voici donc un guide rapide de mise en place d’instances multiples MySQL (l’ancienne méthode tout à la main n’est plus nécessaire et c’est tant mieux).

Installation

root@sqlbackend:~# apt-get install mysql-server-5.5

Configuration

Je vais créer ici trois nouvelles instances mysql1mysql2 et mysql3 ; chacune aura donc sa directive serveur. A noter que je ne supprime pas l’instance principale pour ne pas me ramasser à la prochaine mise à jour OS. Il faut cependant commenter l’option user sinon les instances supplémentaires ne se lanceront pas.

root@sqlbackend:~# nano /etc/mysql/my.cnf
[mysqld]
#user = mysql
 
[mysqld1]
user            = mysql1
pid-file        = /var/run/mysqld1/mysqld.pid
socket          = /var/run/mysqld1/mysqld.sock
port            = 33061
basedir         = /usr
datadir         = /var/lib/mysql1
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
 
bind-address            = 127.0.0.1
general_log_file        = /var/log/mysql1/mysql.log
general_log             = 1
[mysqld2]
user            = mysql2
pid-file        = /var/run/mysqld2/mysqld.pid
socket          = /var/run/mysqld2/mysqld.sock
port            = 33062
basedir         = /usr
datadir         = /var/lib/mysql2
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
 
bind-address            = 127.0.0.1
general_log_file        = /var/log/mysql2/mysql.log
general_log             = 1
 
[mysqld3]
user            = mysql3
pid-file        = /var/run/mysqld3/mysqld.pid
socket          = /var/run/mysqld3/mysqld.sock
port            = 33063
basedir         = /usr
datadir         = /var/lib/mysql3
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
 
bind-address            = 127.0.0.1
general_log_file        = /var/log/mysql3/mysql.log
general_log             = 1

Chaque instance s’exécute sous un utilisateur dédié :

root@sqlbackend:~# useradd -r mysql1
root@sqlbackend:~# useradd -r mysql2
root@sqlbackend:~# useradd -r mysql3

Les répertoires de chaque instance sont à créer de cette manière :

root@sqlbackend:~# mkdir /var/lib/mysql{1,2,3}
root@sqlbackend:~# mkdir /var/log/mysql{1,2,3}
root@sqlbackend:~# chown mysql1:adm /var/log/mysql1
root@sqlbackend:~# chown mysql2:adm /var/log/mysql2
root@sqlbackend:~# chown mysql3:adm /var/log/mysql3
root@sqlbackend:~# mkdir /var/run/mysqld{1,2,3}
root@sqlbackend:~# chown mysql1 /var/run/mysqld1
root@sqlbackend:~# chown mysql2 /var/run/mysqld2
root@sqlbackend:~# chown mysql3 /var/run/mysqld3

Il reste à initialiser les datastores :

root@sqlbackend:~# mysql_install_db --datadir=/var/lib/mysql1 --user=mysql1
root@sqlbackend:~# mysql_install_db --datadir=/var/lib/mysql2 --user=mysql2
root@sqlbackend:~# mysql_install_db --datadir=/var/lib/mysql3 --user=mysql3

L’exécution de chaque instance est désormais possible :

root@sqlbackend:~# mysqld_multi --verbose --no-log start 1
root@sqlbackend:~# mysqld_multi --verbose --no-log start 2
root@sqlbackend:~# mysqld_multi --verbose --no-log start 3

 

 

http://blog.hbis.fr/2013/06/02/mysql-multi_instances/

Nuage de tags: -

Questions - Réponses en relation :

Dernière mise à jour : 2014-03-30 00:51
Auteur : Joris Frugier
Révision: 1.0

Digg it! Share on Facebook Imprimer cet article Envoyer à un ami version PDF
Proposer une traduction pour Proposer une traduction pour
Merci de noter cette entrée :

Moyenne des notes : 0 (0 Vote)

complètement inutile 1 2 3 4 5 indispensable

Vous ne pouvez pas commenter cet enregistrement


phpMyFAQ warning [2]: Unknown: write failed: No space left on device (28) in Unknown on line 0

phpMyFAQ warning [2]: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php5) in Unknown on line 0