Tâche #14286
eSBL - Scénario #14733: Evolutions eSBL 2.5.2
le service mysql ne redémarre pas lors du reconfigure
Description
peut ne pas se produire sur les serveurs déjà installés avec une iso avant 2.5.1 stable
root@sbl250-137:~# uname -r
3.16.0-55-generic
est-ce lié à la famille de noyau ???
Related issues
Associated revisions
/etc/apparmor.d/local/usr.sbin.mysql: il est indispensable que la valeur soit le chemin physique absolu (ref #14286 ).
History
#1 Updated by christophe guerinot almost 8 years ago
pour les serveurs pour lesquels le service mysql redémarrent correctement
extrait commande dmesg
(...) [800271.948063] audit: type=1400 audit(1450260764.091:70): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=7270 comm="apparmor_parser" (...)
pour les serveurs fraîchement installés avec l'iso 2.5.1 stable
extrait de la commande dmesg
(...) [ 1029.837677] audit: type=1400 audit(1450261569.893:631): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/home/data/var/lib/mysql/plugin.frm" pid=18335 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=103 ouid=103 [ 1033.000292] audit: type=1400 audit(1450261573.057:632): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/home/data/var/lib/mysql/host.frm" pid=18335 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=103 ouid=103 (...)
version du noyau '3.19.0-xx-generic'
root@sbl46-166:~# uname -r 3.19.0-33-generic
#2 Updated by christophe guerinot almost 8 years ago
- Status changed from Nouveau to En cours
#3 Updated by christophe guerinot almost 8 years ago
le pb de fond semble venir du fonctionnement de apparmor avec les liens symbolique (je n'ai pas eu le temps d'approfondir) - en gros si on déplace l'arborescence '/var/lib/mysql/' vers '/home/data/var/lib/mysql/' et que l'on créé un lien symbolique de '/var/lib/mysql/' vers '/home/data/var/lib/mysql/' , ça plante. Si on supprime le lien symbolique et que l'on redéplace l'arborescence vesr son emplacement d'origine , aucun souci.
Il y a par ailleurs quelques bricoles à revoir ('eole-esbl-all.preinst' et '/usr/share/eole/sbin/migration_data.sh') sur la création de lien symbolique et arrêt/démarrage de services
#4 Updated by christophe guerinot over 7 years ago
En fait le dysfonctionnement semble lié au traitement d'une demande encore en cours ( #13124 )
Apparemment liées à #13124 il y a quelques révisions
https://dev-eole.ac-dijon.fr/projects/conf-esbl/repository/revisions/a9e88875952eca89fb2b0691777125d470005971
https://dev-eole.ac-dijon.fr/projects/conf-esbl/repository/revisions/c2ac75f84f16d3d9d17536f3a50fb99f74cc584e
De plus j'ai effectué quelques correctifs
je m'aperçois que dans le traitement de la demande #13937 j'ai substitué la valeur par défaut de 'mysql_datadir' définie dans le dico 23_mysql.xml en remplaçant la valeur '/home/data/var/lib/mysql' par la valeur '/data/var/lib/mysql' ( était-ce opportun ??? )
remarque : les scripts ('eole-esbl-all.preinst' et '/usr/share/eole/sbin/migration_data.sh') sont-ils prévus uniquement dans le cas où il existe une partition physique '/home' et ne fait rien dans le cas des serveurs encore avec une partition physique '/data' ?
- le fait de désactiver le service mysql ('activer_mysql' à 'non') permet de contourner le problème.
du coup le plus simple serait de lier cette demande à la demande en cours #13124
(je ferais le point avec Benjamin)
#5 Updated by Emmanuel IHRY over 7 years ago
- Parent task changed from #14134 to #14487
#6 Updated by Emmanuel IHRY over 7 years ago
- Parent task changed from #14487 to #14733
#7 Updated by Thierry Bertrand over 7 years ago
- % Done changed from 0 to 40
- Remaining (hours) changed from 4.0 to 3.0
Le problème provient bien de apparmor.
Si on modifie le fichier /etc/apparmor.d/usr.sbin.mysql de la façon suivante :
/var/lib/mysql/ r, /var/lib/mysql/** rwk, /home/data/var/lib/mysql/ r, /home/data/var/lib/mysql/** rwk,
mysql retombe en marche.
Il va sans doute falloir introduire une variable creole pour gérer le datadir de my.cnf et apparmor en conséquence
#8 Updated by christophe guerinot over 7 years ago
scripts '/var/lib/dpkg/info/eole-esbl-all.preinst' et '/usr/share/eole/sbin/migration_data.sh' à voir
Pour une nouvelle installation lors de la création des liens symbolique
si le répertoire n'existe pas il n'y a pas de problème, le lien symbolique est correctement créé (l'arborescence des données étant donc vide)
cas pour postgresql, en variante production le paquet postgresql n'est pas installé, le répertoire '/var/lib/postgresql' n'existe pas
le lien est créé au bonendroit
root@sbl251-144:~# ls -l /var/lib/post* lrwxrwxrwx 1 root root 29 déc. 15 11:10 /var/lib/postgresql -> /home/data/var/lib/postgresql
problème pour mysql et apache, les paquets sont installés et les répertoires '/var/lib/mysql' et '/var/www/html' existent
les liens ne sont pas créés au bon endroit
root@sbl251-144:~# ls -l /var/lib/mysql/ total 28680 -rw-r--r-- 1 mysql mysql 0 janv. 29 19:01 debian-5.5.flag -rw-rw---- 1 mysql mysql 18874368 févr. 1 12:44 ibdata1 -rw-rw---- 1 mysql mysql 5242880 févr. 1 12:44 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 déc. 15 11:10 ib_logfile1 lrwxrwxrwx 1 mysql root 24 déc. 15 11:10 mysql -> /home/data/var/lib/mysql -rw-rw---- 1 root root 6 févr. 1 11:43 mysql_upgrade_info drwx------ 2 mysql mysql 4096 févr. 1 11:43 performance_schema
root@sbl251-144:~# ls -l /var/www/html/ total 12 lrwxrwxrwx 1 root root 23 déc. 15 11:10 html -> /home/data/var/www/html -rw-r--r-- 1 root root 11510 déc. 15 11:11 index.html
/var/lib/mysql/mysql au lieu de /var/lib/mysql
/var/www/html/html au lieu de /var/www/html
#9 Updated by christophe guerinot over 7 years ago
La valeur par défaut de 'mysql_datadir' a été remise à '/home/data/var/lib/mysql' dans le dico '23_mysql.xml' ainsi que sur les zephirs.
Il reste un nombre non négligeable de serveur issus de ubuntu 8.04 (eole 2.2) avec une partition physique '/data' pour les données, ces serveurs seraient susceptibles d'être réinstallés en conservant les données
à décider
- soit on annonce qu'il n'est pas possible de réinstaller ces serveurs en conservant les données
- soit on annonce que la procédure est possible, il faut alors adapter (script 'pretemplate' ?) pour que le chemin datadir défini dans les templates soit '/data/var/lib/mysql'
#10 Updated by Thierry Bertrand over 7 years ago
- Status changed from En cours to Résolu
- % Done changed from 40 to 100
- Remaining (hours) changed from 3.0 to 0.25
#11 Updated by Thierry Bertrand over 7 years ago
- Status changed from Résolu to Fermé
- Remaining (hours) changed from 0.25 to 0.0