Tuto | Installation d’une base Mysql Multi-instances
Article publiée le 26 Décembre 2016
Un petit tutoriel sur l’installation d’une base de données MySQL multi instance. Ce type d’installation vous sera particulièrement utile si votre serveur héberge plusieurs instances applicative. En effet admettons que vous hébergiez plusieurs instances applicatives, au lieu de créer une base de données par application, vous pourrez créer une instance MySQL dédié par application. L’avantage est que vous pourrez effectuer un tunning précis de votre base de données par application.
- Procédez à l’installation de mysql via la commande apt-get install mysql-server
- Faites une sauvegarde du fichier de configuration original /etc/mysql/my.cnf et modifier le de la manière suivante (le fichier de configuration est bien sur à adapter. Dans cette exemple j’ai décidé de créer trois instances MySQL):
[client]port =3306socket = /var/run/mysqld/mysqld.sock[mysqld_safe]socket = /var/run/mysqld/mysqld.socknice =0[mysqld]#user = mysql[mysqldump]quickquote-namesmax_allowed_packet = 16M[mysql]#no-auto-rehash # faster start of mysql but no tab completition[isamchk]key_buffer = 16M!includedir /etc/mysql/conf.d/[mysqld1]user = mysql1pid-file = /var/run/mysqld1/mysqld.pidsocket = /var/run/mysqld1/mysqld.sockport =33061basedir = /usrdatadir = /var/lib/mysql1tmpdir = /tmplc-messages-dir = /usr/share/mysqlskip-external-lockingbind-address =127.0.0.1general_log_file = /var/log/mysql1/mysql.loggeneral_log =1key_buffer = 16Mmax_allowed_packet = 16Mthread_stack = 192Kthread_cache_size =8myisam-recover = BACKUPquery_cache_limit = 1Mquery_cache_size = 16Mexpire_logs_days =10max_binlog_size = 100M[mysqld2]user = mysql2pid-file = /var/run/mysqld2/mysqld.pidsocket = /var/run/mysqld2/mysqld.sockport =33062basedir = /usrdatadir = /var/lib/mysql2tmpdir = /tmplc-messages-dir = /usr/share/mysqlskip-external-lockingbind-address =127.0.0.1general_log_file = /var/log/mysql2/mysql.logkey_buffer = 16Mmax_allowed_packet = 16Mthread_stack = 192Kthread_cache_size =8myisam-recover = BACKUPquery_cache_limit = 1Mquery_cache_size = 16Mlog_error = /var/log/mysql2/error.logexpire_logs_days =10max_binlog_size = 100M[mysqld3]user = mysql3pid-file = /var/run/mysqld3/mysqld.pidsocket = /var/run/mysqld3/mysqld.sockport =33063basedir = /usrdatadir = /var/lib/mysql3tmpdir = /tmplc-messages-dir = /usr/share/mysqlskip-external-lockingbind-address =127.0.0.1general_log_file = /var/log/mysql3/mysql.loggeneral_log =1key_buffer = 16Mmax_allowed_packet = 16Mthread_stack = 192Kthread_cache_size =8myisam-recover = BACKUPquery_cache_limit = 1Mquery_cache_size = 16Mlog_error = /var/log/mysql3/error.logexpire_logs_days =10max_binlog_size = 100M
- On crée les différents users:
useradd -r mysql1
useradd -r mysql2
useradd -r mysql3
- On crée les répertoires avec les bons droits :
mkdir /var/lib/mysql{1,2,3}mkdir /var/lib/mysql{1,2,3}
chown mysql1:adm /var/log/mysql1chown mysql2:adm /var/log/mysql2chown mysql3:adm /var/log/mysql3mkdir /var/run/mysqld{1,2,3}chown mysql1 /var/run/mysqld1chown mysql2 /var/run/mysqld2chown mysql3 /var/run/mysqld3
- On initialise les datastores pour chaque instances
mysql_install_db --datadir=/var/lib/mysql1 --user=mysql1mysql_install_db --datadir=/var/lib/mysql2 --user=mysql2mysql_install_db --datadir=/var/lib/mysql3 --user=mysql3
- On démarre nos instances:
mysqld_multi --verbose --no-log start 1
mysqld_multi --verbose --no-log start 2mysqld_multi --verbose --no-log start 3
- Pour stopper une instance spécifique :
mysqld_multi --verbose --no-log stop <numéro de l'instance>
- Il est possible d’avoir un statut pour chaque instance grâce à la commande : mysqld_multi report
- Enfin la connexion à une instance via le client mysql se fait avec ce type de commande : mysql -uroot –socket=<chemin du fichier>
Exemple :mysql -uroot -ptoto --socket=/var/run/mysql1/mysqld.sock