informatique:serveurs:installation:logiciels:mysql-instances-multiples

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
informatique:serveurs:installation:logiciels:mysql-instances-multiples [2020/02/09 14:32] jpmilcentinformatique:serveurs:installation:logiciels:mysql-instances-multiples [2020/02/09 14:48] (Version actuelle) – supprimée jpmilcent
Ligne 1: Ligne 1:
-======Installation de plusieurs instances de Mysql====== 
  
-===== Installation de Mysql multi instances ===== 
-  * Lancer le script  : ''/home/admin/scripts/mysql/mysql_5.6.sh '' 
-  * Vérifier la présence des binaires dans le dossier : /usr/local/mysql/5.6/ 
-  * Créer un groupe mysql : '' groupadd mysql '' 
-  * Créer un utilisateur mysql : '' useradd -g mysql mysql '' 
-  * Créer un dossier  /home/mysql/5.6/ : '' mkdir /home/mysql/5.6 '' 
-  * Donner les droits et les propriétés à mysql :  
-    * '' chmod 700 /home/mysql/5.6 '' 
-    * '' chown mysql:mysql /home/mysql/5.6 '' 
-  * Recréer le lien vers les data dans /usr/local/mysql/5.6 :  
-    * '' cd /usr/local/mysql/5.6 '' 
-    * '' rm -fR data/ '' 
-    * '' ln -s /home/mysql/5.6 /usr/local/mysql/5.6/data '' 
-  * Créer une fichier qui contiendra le mot de passe mysql pour l'utilisateur root :  
-    * '' vi /root/.my.cnf '' et ajouter le contenu ci-dessous (indiquer les mots de passe)  
-    * Donner les bons droits au fichier : '' chmod 600 /root/.my.cnf '' 
-  * Créer un dossier /etc/mysql/5.6/ : '' mkdir -p /etc/mysql/5.6 '' 
-  * Copier le fichier my.cnf : '' cp -f /usr/local/mysql/5.6/support-files/my-default.cnf  /etc/mysql/5.6/my.cnf '' 
-  * Créer un lien vers le fichier  /etc/mysql/5.6/my.cnf : '' ln -s /etc/mysql/5.6/my.cnf /usr/local/mysql/5.6/my.cnf '' 
-  * Éditer le fichier my.cnf : '' vi /etc/mysql/5.6/my.cnf '' 
-    * Modifier les chemins et le port en fonction de l'instance de mysql. Exemple de fichier ci-dessous. 
-    * Sous la section [mysqld] vérifier la présence du paramètre : '' basedir = /usr/local/mysql/5.6 '' 
-  * Lancement du script d'installation de Mysql : mysql_install_db 
-    * '' cd /usr/local/mysql/5.6/ '' 
-    * '' ./scripts/mysql_install_db -defaults-file=/etc/mysql/5.6/my.cnf --user=mysql '' 
-    * A partir de mysql 5.7 : '' ./bin/mysqld --initialize '' 
-  * Créer le script démarrant le service : '' cp /usr/local/mysql/5.6/support-files/mysql.server /etc/init.d/mysql-56 '' 
-  * Éditer fichier /etc/init.d/mysql-56 : '' vi /etc/init.d/mysql-56 '' 
-    * Ligne 46, indiquer une valeur au paramètre basedir  : '' basedir=/usr/local/mysql/5.6 '' 
-    * Ligne 113, activer l'utilisation du moteur Federated en ajoutant --federated aux arguments de lancement de Mysql: '' other_args="--federated $*" '' 
-    * Ligne 138, ajouter après une nouvelle ligne : ''<nowiki>--port=*)     port=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;</nowiki>'' 
-    * Ligne 215, indiquer le chemin vers le fichier my.cnf : '' conf=/etc/mysql/5.6/my.cnf '' 
-    * Ligne 257, ajouter le drapeau -c pour indiquer le bon fichier my.cnf : ''"" parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server -c/etc/mysql/5.6/my.cnf` ""'' 
-    * Ligne 284, ajouter l'argument port à la commande mysql_safe : ''"" $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --port="$port" $other_args >/dev/null 2>&1 & ""'' 
-  * Démarrer mysql : '' service mysql-56 start '' 
-  * Configurer mysql : mot de passe root... 
-    * Se rendre dans le dossier racine de l'installation en cours : '' cd /usr/local/mysql/5.6/ '' 
-    * Lancer le script de sécurité : '' ./bin/mysql_secure_installation '' 
-    * Répondre aux différentes questions et créer le mot de passe root. 
-  * Créer un dossier qui contiendra les logs mysql (error.log et slow-query.log) : '' mkdir /home/mysql/5.6/log '' 
-  * Créer un lien vers le fichier error.log : '' ln -s /home/mysql/5.6/log/mysql-error.log /home/log/mysql-5.6/mysql-56-error.log '' 
-  * Rediriger les logs : '' ln -s /home/mysql/5.6/log /home/log/mysql-5.6 '' 
-  * Copier le fichier logrotate fournit par mysql : '' cp /usr/local/mysql/5.6/support-files/mysql-log-rotate /etc/logrotate.d/mysql-56 '' 
-  * Changer les droits du fichier : '' chmod 644 /etc/logrotate.d/mysql-56 '' 
-  * Éditer le logrotate et modifier les chemins vers /usr/local/mysql/5.6 : '' vi /etc/logrotate.d/mysql-56 '' 
-  * Éditer le fichier et changer : 
-    * le chemin '' /usr/local/mysql/5.6/data/mysqld.log { '' vers le fichier de log par '' /home/mysql/5.6/log/mysqld.log /home/mysql/5.6/log/mysql-slow.log { '' 
-    * le paramètre '' daily '' par '' monthly '' 
- 
-**Fichier /root/.my.cnf :** 
-<code properties> 
-# Fichier permettant d'éxecuter les scripts mysql sans indiquer les mots de passes et login 
-# Utile pour /etc/logrotate.d/mysql 
-[mysqladmin] 
-user=root 
-password=<mot_de_passe> 
- 
-[mysqldump] 
-host=localhost 
-user=root 
-password=<mot_de_passe> 
- 
-[client] 
-host=localhost 
-user=root 
-password=<mot_de_passe> 
-</code> 
- 
-**Fichier /etc/mysql/5.6/my.cnf :** 
-<code properties> 
-# Pour des informations sur les paramètres de configuration voir les pages suivantes : 
-# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html 
-# http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html 
-#-----------------------------------------------------------------------------------------------------------# 
-[mysqld] 
- 
-user     = mysql 
-port     = 3306 
-socket   = /home/mysql/5.6/mysql.sock 
-pid-file = /home/mysql/5.6/mysql.pid 
- 
-# Defaut 
-default-storage-engine = MyISAM 
- 
-# DATA STORAGE # 
-basedir = /usr/local/mysql/5.6 
-datadir = /home/mysql/5.6/ 
-#tmpdir  = /home/mysql/5.6/mysql-tmp/ '' ATTENTION : utilisation partition en RAM => commenter ce param en cas de pb (utiliser df -h pour infos sur la partition) 
- 
-#------------------------------------------------# 
-# Optimisation manuelle de Mysql 
- 
-# RESEAU # 
-bind-address         = 0.0.0.0 '' Force Mysql à écouter seulement sur l'IPv4 
-#net-read-timeout    = 60 
-#skip-name-resolve   = OFF '' ATTENTION : ne pas activer car problème avec IPv6 
-interactive-timeout  = 60 
- 
-# MYSQL COMPORTEMENTS # 
-explicit-defaults-for-timestamp = 1  
- 
-# MyISAM # 
-key-buffer-size        = 512M '' Règle : 25% de la mémoire = key-buffer-size 
-myisam-recover-options = FORCE,BACKUP 
- 
-# SAFETY # 
-max-allowed-packet = 64M  
-max-connect-errors = 1000000 
- 
-# CACHES AND LIMITS # 
-tmp-table-size         = 128M '' Règle : doit être égal à max-heap-table-size 
-max-heap-table-size    = 128M '' Règle : doit être égal à tmp-table-size 
-query-cache-type       = 0  
-query-cache-size       = 0 '' Règle : 32MB pour 1GB de RAM 
-max-connections        = 500  
-thread-cache-size      = 50 
-open-files-limit       = 65535 
-table-definition-cache = 4096 
-table-open-cache       = 4096 
- 
-# INNODB # 
-innodb-flush-method            = O_DIRECT 
-innodb-log-files-in-group      = 2  
-innodb-log-file-size           = 128M 
-innodb-flush-log-at-trx-commit = 1  
-innodb-file-per-table          = 1  
-innodb-buffer-pool-size        = 512M '' Règle : 25% de la mémoire 
- 
-# LOGGING # 
-log-output                             = FILE 
-log-error                              = /home/mysql/5.6/log/mysql-error.log 
-log-queries-not-using-indexes          = 1 '' Active (1) / Désactive (0) le log des requêtes mal indexées 
-log-throttle-queries-not-using-indexes = 0 '' Active (1) / Désactive (0) le résumer pour les requêtes mal indexées 
-slow-query-log                         = 1 '' Active (1) / Désactive (0) le log des slow queries 
-long-query-time                        = 1 '' en seconde 
-slow-query-log-file                    = /home/mysql/5.6/log/mysql-slow.log 
- 
-sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
- 
-#-----------------------------------------------------------------------------------------------------------# 
-[mysqldump] 
-quick 
-max_allowed_packet = 64M 
-</code> 
- 
-===== Erreurs ===== 
- 
-==== Erreur : "The server quit without updating PID file (/usr/local/mysql/5.6/data/agathis.pid). ... failed!" ==== 
-  * Ce message survient à chaque fois que Mysql rencontre un problème pour démarrer. Commencer par vérifier le fichier de log d'erreur de Mysql pour voir quel erreur a bloqué le démarrage de Mysql. 
-  * Exemples de problèmes rencontrés : 
-    * un mauvais nom de paramètre dans le fichier my.cnf 
-    * Vérifier les droits (mysql:mysql) sur le dossier contenant les data. 
-    * Il se peut que ce problème provienne d'un fichier my.cnf utilisé par défaut. 
-  * Pour voir la liste des endroits où les fichiers my.cnf sont recherchés lancer la commande : '' /usr/local/mysql/5.6/bin/mysql --help | grep "my.cnf" '' 
-    * Ce qui affiche : '' order of preference, my.cnf, $MYSQL_TCP_PORT, built-in /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/5.6/etc/my.cnf ~/.my.cn '' 
-  * Vérifier que seul votre fichier de configuration (ici : /usr/local/mysql/5.6/etc/my.cnf) existe et qu'aucun des autres emplacements n'en contient. 
- 
-==== Erreur : Failed to start mysql-56.service: Unit mysql-56.service failed to load: No such file or directory. ==== 
-Créer un fichier '' /etc/systemd/system/mysql-56.service '' contenant : 
-<code properties> 
-[Unit] 
-Description=MySQL 5.6 Database 
-After=sockets.target syslog.target  
-Before=httpd.service postfix.service 
- 
-[Service] 
-Type=simple 
-PIDFile=/home/mysql/5.6/mysql.pid 
-ExecStart=/etc/init.d/mysql-56 start 
-ExecStop=/etc/init.d/mysql-56 stop 
-Restart=always 
-RestartSec=2 
-TimeoutSec=60 
- 
-[Install] 
-WantedBy=multi-user.target 
-Also=mysqld.socket 
-</code> 
- 
-===== Configuration de Phpmyadmin ===== 
-  * Éditer le fichier config.inc.php et ajouter une entrée pour chaque serveur. 
-  * Le fichier ''config.inc.php'' devrait ressembler à l'extrait ci-dessous 
-  * Ajouter un utilisateur //pma// dans les différentes bases 
- 
-**Fichier config.inc.php pour mysql multi instances :** 
-<code php> 
-<?php  
-$cfg['blowfish_secret'] = 'Définir votre blowfish_secret'; 
-$cfg['MaxRows'] = 100; 
-$cfg['NaviWidth'] = '300'; 
-$cfg['ThemeDefault'] = 'pmahomme'; 
- 
-/* Servers configuration */ 
-$i = 0; 
- 
-/* Server localhost (http) [1] - MYSQL-56 */ 
-$i++; 
-$cfg['Servers'][$i]['host'] = '127.0.0.1'; 
-$cfg['Servers'][$i]['connect_type'] = 'socket'; 
-$cfg['Servers'][$i]['port'] = '3306'; 
-$cfg['Servers'][$i]['socket'] = '/tmp/mysql-56.sock'; 
-$cfg['Servers'][$i]['extension'] = 'mysqli'; 
-$cfg['Servers'][$i]['compress'] = false; 
-$cfg['Servers'][$i]['auth_type'] = 'cookie'; 
-// Masquage de la base information_schema 
-$cfg['Servers'][$i]['hide_db'] = '^(information_schema|test)$'; 
-// Base de données phpmyadmin pour les relations... 
-$cfg['Servers'][$i]['controluser'] = 'pma'; 
-$cfg['Servers'][$i]['controlpass'] = 'Définir votre controlpass'; 
-$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; 
-$cfg['Servers'][$i]['relation'] = 'pma_relation'; 
-$cfg['Servers'][$i]['table_info'] = 'pma_table_info'; 
-$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; 
-$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; 
-$cfg['Servers'][$i]['column_info'] = 'pma_column_info'; 
-$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; 
-$cfg['Servers'][$i]['history'] = 'pma_history'; 
-$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; 
-$cfg['Servers'][$i]['tracking'] = 'pma_tracking'; 
-$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; 
-$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs'; 
-$cfg['Servers'][$i]['recent'] = 'pma_recent'; 
-/* End of servers configuration */ 
-/* Server localhost (http) [2] - MYSQL-56-TEST */ 
-$i++; 
-$cfg['Servers'][$i]['host'] = '127.0.0.1'; 
-$cfg['Servers'][$i]['connect_type'] = 'socket'; 
-$cfg['Servers'][$i]['port'] = '3307'; 
-$cfg['Servers'][$i]['socket'] = '/tmp/mysql-56-test.sock'; 
-$cfg['Servers'][$i]['extension'] = 'mysqli'; 
-$cfg['Servers'][$i]['compress'] = false; 
-$cfg['Servers'][$i]['auth_type'] = 'cookie'; 
-// Masquage de la base information_schema 
-$cfg['Servers'][$i]['hide_db'] = '^(information_schema|test)$'; 
-// Base de données phpmyadmin pour les relations... 
-$cfg['Servers'][$i]['controluser'] = 'pma'; 
-$cfg['Servers'][$i]['controlpass'] = 'Définir votre controlpass'; 
-$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; 
-$cfg['Servers'][$i]['relation'] = 'pma_relation'; 
-$cfg['Servers'][$i]['table_info'] = 'pma_table_info'; 
-$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; 
-$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; 
-$cfg['Servers'][$i]['column_info'] = 'pma_column_info'; 
-$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; 
-$cfg['Servers'][$i]['history'] = 'pma_history'; 
-$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; 
-$cfg['Servers'][$i]['tracking'] = 'pma_tracking'; 
-$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; 
-$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs'; 
-$cfg['Servers'][$i]['recent'] = 'pma_recent'; 
-/* End of servers configuration */ 
-?> 
-</code> 
- 
-===== Configuration de Munin ===== 
-  * Se rendre dans le dossier des plugins : '' cd /usr/share/munin/plugins/ '' 
-  * Lister les plugins mysql : '' ls -al mysql* '' 
-    * mysql_ 
-    * mysql_bytes 
-    * mysql_innodb 
-    * mysql_queries 
-    * mysql_slowqueries 
-    * mysql_threads 
-  * Créer une copie de chacun d'entre eux en y ajoutant le nom de l'instance mysql :  
-    * '' cp mysql_ mysql_55-test_ '' 
-    * '' cp mysql_bytes mysql_55-test_bytes '' 
-    * '' cp mysql_innodb  mysql_55-test_innodb '' 
-    * '' cp mysql_queries  mysql_55-test_queries '' 
-    * '' cp mysql_slowqueries  mysql_55-test_slowqueries '' 
-    * '' cp mysql_threads  mysql_55-test_threads '' 
-  * Renommer dans chaque fichier copié la partie concernant le titre du graph : '' echo 'graph_title MySQL throughput' '' en '' echo 'graph_title MySQL 5.5 throughput - TEST' '' 
-  * Supprimer les liens vers les plugins mysql de base du dossier /etc/munin/plugins/ : '' rm -f /etc/munin/plugins/mysql_* '' 
-  * Créer les liens vers une instance de Mysql donnée : '' ln -s /usr/share/munin/plugins/mysql_55-test* /etc/munin/plugins/ '' 
-  * Modification du fichier de conf munin (voir ci-dessous)  : '' vi /etc/munin/plugin-conf.d/munin-node '' 
-  * Redémarrer munin : '' /etc/init.d/munin-node restart '' 
-  * Attendre un petit peu avant de voir apparaître les graphs. 
- 
-**Lignes à ajouter au fichier  /etc/munin/plugin-conf.d/munin-node :** 
-<code properties> 
-# Ajout de l'instance Mysql 5.5 TEST (jpm) [10-10-2013] 
-[mysql_55-test_*] 
-user root 
-env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3307 
-env.mysqladmin /usr/local/mysql/5.5-test/bin/mysqladmin 
-</code> 
- 
-===== Note concernant mysqld_multi ===== 
-**mysqld_multi ** permet de lancer plusieurs instances de la même version compilée de Mysql. Si l'on veut tester plusieurs versions distinctes de Mysql cela ne répond à nos besoins et  nécessite malgré tout des modifications indiquées ci-dessus. 
- 
-===== Ressources ===== 
-  * http://dev.mysql.com/doc/refman/5.5/en/multiple-servers.html 
-  * [[http://opensourcedbms.com/dbms/running-multiple-mysql-5-6-instances-on-one-server-in-centos-6rhel-6fedora/|Indication concernant le script de lancement de mysql]] 
-  * [[http://www.reades.com/2013/04/01/multiple-mysql-servers-on-a-single-machine/|Indication concernant la compilation de multiple instances]] 
-  * [[http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-buildopts.html|Options CMAKE pour compiler Mysql]] 
-  * [[http://dev.mysql.com/doc/refman/5.5/en/unix-postinstallation.html|Config Mysql post installation]] 
-  * [[http://dev.mysql.com/doc/refman/5.6/en/option-files.html|Sur l'utilisation des fichiers my.cnf et .my.cnf]] 
-  * [[http://agiletesting.blogspot.fr/2009/11/monitoring-multiple-mysql-instances.html|Configurer Munin pour visualiser plusieurs instances de Mysql]] 
  • informatique/serveurs/installation/logiciels/mysql-instances-multiples.1581258736.txt.gz
  • Dernière modification : 2020/02/09 14:32
  • de jpmilcent