Projet

Général

Profil

Tâche #14286

eSBL - Scénario #14733: Evolutions eSBL 2.5.2

le service mysql ne redémarre pas lors du reconfigure

Ajouté par christophe guerinot il y a plus de 8 ans. Mis à jour il y a environ 8 ans.

Statut:
Fermé
Priorité:
Normal
Début:
21/09/2015
Echéance:
% réalisé:

100%

Temps estimé:
4.00 h
Temps passé:
Restant à faire (heures):
0.0

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

Lié à eSBL - Tâche #13124: Mise au point d'un script de déplacement des données avant la migration, script qui serait utilisé sur les version 2.3 et 2.4 . Fermé 22/05/2015
Dupliqué par Distribution EOLE - Tâche #14838: Mise à jour mysql-server 5.5 plante Fermé 08/01/2013

Révisions associées

Révision 3bf2bffb (diff)
Ajouté par christophe guerinot il y a environ 8 ans

/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

Formats disponibles : Atom PDF