Mysql multi instance

De BlaxWiki
Aller à la navigationAller à la recherche

Il est possible d'installer une seule fois mysql et d'avoir plusieurs instances (donc plusieurs bases mysql) qui tournent sur différents ports. Il va falloir faire un script d'init et un fichier de conf par instance. On pourrait aussi installer 3 mysql pour que chacun ait son binaire. Les paramètres ports, pid et socket doivent etre uniques; pour les logs il est préférable que chacun ait ses logs. Pour se connecter avec mysql ou faire un mysqldump, il faut préciser le port et la socket. Ici on a 3 instances : my-demo port 3309, my-prod port 3306 et my-preprod 3308.

  • Script d'init

Cela dépend des versions de mysql, ici nous sommes en 5.5 (à adapter pour chacune des instances)

au début du fichier
++ basedir=/opt/applis/mysql
++ datadir=/opt/datas/preprod/mysql
++ conf=/etc/my-preprod.cnf
++ pid_file=/opt/datas/demo/mysql/mysql.pid
++ server_pid_file=/opt/datas/demo/mysql/mysql.pid

Supprimer la ligne conf= (ligne 187), entre  # Try to find basedir in /etc/my.cnf et print_defaults=

Au niveau du start, rajouter l'argument --defaults-file=$conf sur la ligne de $bindir/mysqld_safe --defaults-file=$conf --datadir=$datadir --pid-file=$server_pid_file...
  • Fichier de configuration
::::::::::::::
/etc/my-demo.cnf
::::::::::::::
[mysqld]
log-error               = /var/log/mysql/error-demo.log
slow-query-log          = 1
slow-query-log-file     = /var/log/mysql/slowquery-demo.log
wait_timeout            = 60
query_cache_size        = 16777216
tmp_table_size          = 67108864
max_connections         = 200
thread_cache_size       = 128
max_heap_table_size     = 33554432
table_cache             = 512
query_cache_limit       = 2097152
port                    = 3308
socket                  = /tmp/mysql-demo.sock

::::::::::::::
/etc/my-preprod.cnf
::::::::::::::
[mysqld]
log-error               = /var/log/mysql/error-preprod.log
slow-query-log          = 1
slow-query-log-file     = /var/log/mysql/slowquery-preprod.log
wait_timeout            = 60
query_cache_size        = 16777216
tmp_table_size          = 67108864
max_connections         = 200
thread_cache_size       = 128
max_heap_table_size     = 33554432
table_cache             = 512
query_cache_limit       = 2097152
port                    = 3307
socket                  = /tmp/mysql-preprod.sock

::::::::::::::
/etc/my-prod.cnf
::::::::::::::
[mysqld]
log-error               = /var/log/mysql/error-prod.log
slow-query-log          = 1
slow-query-log-file     = /var/log/mysql/slowquery-prod.log
wait_timeout            = 60
query_cache_size        = 16777216
tmp_table_size          = 67108864
max_connections         = 200
thread_cache_size       = 128
max_heap_table_size     = 33554432
table_cache             = 512
query_cache_limit       = 2097152
port                    = 3306
socket                  = /tmp/mysql-prod.sock