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 ???
Demandes liées
Révisions associées
/etc/apparmor.d/local/usr.sbin.mysql: il est indispensable que la valeur soit le chemin physique absolu (ref #14286 ).
Historique
#1 Mis à jour par christophe guerinot il y a plus de 8 ans
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 Mis à jour par christophe guerinot il y a plus de 8 ans
- Statut changé de Nouveau à En cours
#3 Mis à jour par christophe guerinot il y a plus de 8 ans
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 Mis à jour par christophe guerinot il y a environ 8 ans
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 Mis à jour par Emmanuel IHRY il y a environ 8 ans
- Tâche parente changé de #14134 à #14487
#6 Mis à jour par Emmanuel IHRY il y a environ 8 ans
- Tâche parente changé de #14487 à #14733
#7 Mis à jour par Thierry Bertrand il y a environ 8 ans
- % réalisé changé de 0 à 40
- Restant à faire (heures) changé de 4.0 à 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 Mis à jour par christophe guerinot il y a environ 8 ans
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 Mis à jour par christophe guerinot il y a environ 8 ans
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 Mis à jour par Thierry Bertrand il y a environ 8 ans
- Statut changé de En cours à Résolu
- % réalisé changé de 40 à 100
- Restant à faire (heures) changé de 3.0 à 0.25
#11 Mis à jour par Thierry Bertrand il y a environ 8 ans
- Statut changé de Résolu à Fermé
- Restant à faire (heures) changé de 0.25 à 0.0