Mon serveur s'arrête avant de démarrer le kernel

Tu avais bien démonté

?

Oui, j’ai double vérifié. Le lien n’est pas monté. L’erreur est toujours présente.

J’ai désinstallé mariadb-server de mon PC hôte et je l’ai réinstallé. Aucune erreur. Par contre il ne m’est toujours pas possible de lier la base mysql/mariadb de ma carte Olimex de mon instance Yunohost 11 à partir de mon PC hôte.

Quelle est l’erreur rencontrée? En lien avec l’incompatibilité de version MariaDB ?

@otm33,

Voilà l’erreur retournée:

sudo -u mysql mysqld --datadir=/media/system/var/lib/mysql --socket=/tmpmysql.sock
2025-05-27 15:00:40 0 [Note] Starting MariaDB 10.11.11-MariaDB-0+deb12u1 source revision e69f8cae1a15e15b9e4f5e0f8497e1f17bdc81a4 server_uid VVC/2AUaaRmugUpB2Bdw+vovbZg= as process 131071
2025-05-27 15:00:41 0 [Note] InnoDB: Compressed tables use zlib 1.2.13
2025-05-27 15:00:41 0 [Note] InnoDB: Number of transaction pools: 1
2025-05-27 15:00:41 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2025-05-27 15:00:41 0 [Note] InnoDB: Using liburing
2025-05-27 15:00:41 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2025-05-27 15:00:41 0 [Note] InnoDB: Completed initialization of buffer pool
2025-05-27 15:00:41 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2025-05-27 15:00:41 0 [ERROR] InnoDB: Upgrade after a crash is not supported. The redo log was created with MariaDB 10.5.15. You must start up and shut down MariaDB 10.7 or earlier.
2025-05-27 15:00:41 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2025-05-27 15:00:41 0 [Note] InnoDB: Starting shutdown...
2025-05-27 15:00:41 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2025-05-27 15:00:41 0 [Note] Plugin 'FEEDBACK' is disabled.
2025-05-27 15:00:41 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2025-05-27 15:00:41 0 [ERROR] Aborting

Comme indiqué dans le log, il faut que tu utilises une version inférieure de MariaDB (10.5.15 ou 10.7). Tu devrais ensuite pouvoir ouvrir la base de données présente sur ta carte SD, la sauvegarder puis extraire les données qui t’intéressent.

il y a une erreur ici: ce n’est pas /tmpmysql.sock mais /tmp/mysql.sock

Merci @otm33 pour ta confirmation. J’ai réinstallé un autre PC hôte avec une debian Bullseye (version 11) mais c’est un vieux PC qui n’a pas de périphérique pour une carte SSD. Donc peine perdue.

Mon PC hôte fonctionne sous Debian Bookworm (version 12). Je ne sais pas si je pourrais désinstaller la version 10.11.11 de mariadb et installer une version 10.5. Qu’en penses-tu ?

Ca va introduire de la complication pour pas grand chose : la version 10.5 n’est plus dans les dépôts de debian 12.

Le plus “simple” est de passer par docker et créer un conteneur qui disposera de la version 10.5 sans affecter son hôte (ton PC). Si tu ne connais pas, un conteneur est une sorte de mini machine virtuelle qui tourne sur ton PC et qui fonctionne presque comme un système isolé.

  1. Installation de docker
Procédure

Référence: docker

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Vérifier que docker est démarré:
systemctl status docker
Pour arrêter docker systemctl stop docker / démarrer, etc systemctl start docker

  1. Monter le SSD sur ton système hôte
  2. Vérifier que le port 3307 est libre lsof -i :3307
  3. créer et lancer le conteneur docker mariaDB 10.5:
docker run -d \
  --name mariadb-105 \
  -e MYSQL_ROOT_PASSWORD=root \
  -v <point de montage du SSD>/var/lib/mysql:/var/lib/mysql \  
  -p 3307:3306 \
  mariadb:10.5
gestion conteneurs
  • Voir les conteneurs qui fonctionnent: docker ps -a
  • arrêter un conteneur: docker stop <nom ou id du conteneur>
  • supprimer un conteneur: docker rm <nom ou id du conteneur>
  1. Vérifier la présence dans le conteneur de la BDD qui t’intéresse. Si elle est saine, elle devrait être accessible.
  • entrer dans le conteneur
docker exec -it mariadb-105 bash
  • voir si tu y trouves ta base de données (le conteneur travaille avec la base de données que tu as montée, celle du SSD):
mysql -u root -p // le mot de passe est celui défini dans les paramètres du conteneur : root
show databases; //tu devrais voir dotclear2
quit; // sortir de la base de données

Je pars ensuite du principe que tu veux récupérer uniquement les posts qui ne figurent pas dans ta BDD en prod et qu’ils ont été créés avec le même utilisateur que les autres:

  1. sauvegarder la table des posts
mysqldump -uroot -p  dotclear2 dc_post > /tmp/sauveg_dotclear2.sql
exit // sortir du conteneur
  1. Transférer la sauvegarde des posts du conteneur vers la machine hôte:
docker cp mariadb-105:/tmp/sauveg_dotclear2.sql <le répertoire que tu veux>/sauveg_dotclear2.sql
  1. Il va falloir faire un peu d’édition du fichier de sauvegarde des posts pour qu’il permette de n’importer que les posts dont l’id n’est pas déjà présente dans la base de données du YNH actuel (ça me paraît plus sûr et ça devrait fonctionner nickel si, comme tu l’as dit, si tu n’as rien ajouté depuis)
  • on fait une copie du fichier de sauvegarde des posts au cas où :
cp -pr sauveg_dotclear2.sql sauveg_dotclear2.sql.bak
  • on l’édite (nano sauveg_dotclear2.sql) et on le modifie pour garder ceci :
USE dotclear2;
LOCK TABLES `dc_post` WRITE;
/*!40000 ALTER TABLE `dc_post` DISABLE KEYS */;
INSERT IGNORE INTO `dc_post` VALUES (<les différentes entrées...>)

UNLOCK TABLES;
  1. On insère enfin tout cela dans la base de données dotclear2 de ton instance YNH en croisant les doigts pour que tout fonctionne:
mysql -u root -p dotclear2 < sauveg_dotclear2.sql

J’espère ne rien avoir oublié, tout cela est assez risqué, comme à chaque fois que l’on touche à une BDD.
Tu pourrais aussi installer sur ton yunohost phpmyadmin qui aide à visualiser et comprendre l’architecture des BDD utilisées par certaines applications.

1 Like

Très bon conseil. ‘phpmyadmin’ est déjà installé et j’ai commencé à regarder la façon dont les données sont stockées par dotclear2. :wink:

Je te tiens au courant pour le reste. Un grand merci pour ton temps, ton énergie et tes conseils.

J’ai installé docker de la façon suivante en root (su -):

apt update && apt upgrade
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Vérifier la version installée avec docker -v et docker compose version.

Ajouter son utilisateur au groupe docker usermod -aG docker *utilisateur*

J’y suis presque.
J’ai pu donc accéder à la base de données de ma carte Olimex que je n’arrive pas à démarrer.
J’ai pu extraire les données. En fait j’ai fait trois extractions différentes de la table dc_post, de dotclear2 dans son entièreté et de dc_post_media.
J’ai transféré le fichier SQL sur mon serveur.
J’ai une erreur quand j’injecte le fichier SQL dans la base de données dotclear2 de ma carte en production.

ERROR 1062 (23000) at line 5: Duplicate entry '66' for key 'PRIMARY'

Rien n’a été transféré.

Bizarre : tu as bien mis IGNORE dans la commande de départ du fichier sql?
Cela veut tout simplement dire que tu as déjà un post ou media avec l’id 66 dans ta bdd actuelle (regarde dans phpmyadmin). C’est un peu curieux si tu n’as pas touché à la bdd depuis son crash mais il suffit de trouver un id non attribué et de faire la modification manuellement dans le fichier sql à importer.

Oui, j’ai bien rajouté IGNORE. Je regarde..

@otm33,

Bon je peux accéder à la base de données de la carte Olimex qui ne démarre plus. Je vais donc pouvoir m’en sortir. Cela va prendre du temps car d’un côté j’ai une version 2.24 de dotclear2 et de l’autre une version 2.27. Beaucoup de plugins n’ont pas été portés et certains sont devenus obsolètes. Du coup, cela affecte les bases de données. Donc pour tout remettre d’aplomb je dois faire un état des lieux très précis table par table et peut-être même billet par billet. Il y en a plus de 400 !

J’ai reçu une nouvelle carte SSD 32Gb et je vais pouvoir faire la manip. dont tu m’avais parlé en recopiant le répertoire /boot de la nouvelle carte une fois que j’aurais installé dessus Yunohost 11.

Je continuerai d’alimenter ce billet avec les résultats de mes investigations.

Un grand merci pour ton aide.

Ah, ça complique la donne…

: tu peux en donner une liste ?

Le plugin Billets connexes (relatedPosts) en 2.24 uniquement référencé en relatedposts en 2.27 fonctionne en 2.24 mais ne fonctionne plus en 2.27. Il est réputé obsolète. J’ai envoyé un message sur le journal de NIKROU.

Pas de plugin favicon en 2.27.

Pas de plugin cinecturlink en 2.27

Il y a peut-être un moyen : monter un dotclear-2.24 via un conteneur docker. Tu pourras ainsi lire ta bdd et peut-être la modifier pour la rendre compatible avec dotclear 2.27. Il est même possible d’upgrader vers 2.27 mais je n’ai pas cherché tous les écueils possibles dans cette manipulation.

Créer un répertoire dédié

mkdir /home/<...>/docker_dotclear
cd /home/<...>/docker_dotclear

Télécharger l’archive dotclear 2.24 et la décompresser

wget https://download.dotclear.org/attic/dotclear-2.24.zip
unzip dotclear-2.24.zip

=> Rester dans /home/<...>/docker_dotclear pour les manipulations suivantes

Créer le Dockerfile

nano Dockerfile

contenu du Dockerfile
FROM php:7.4-apache

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libonig-dev \
    libxml2-dev


# modules pour dotclear
RUN docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable mysqli

# modifs droits
RUN a2enmod rewrite
RUN sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf

Créer le docker-compose.yml

nano docker-compose.yml
Contenu docker-compose.yml
services:
  bdd: #nom de l'hôte de la base de données
    container_name: dotclear_bdd
    image: mariadb:10.5
    restart: always
    ports:
      - "3310:3306" # tu choisis le port que tu souhaites sur l'hôte (toujours le premier, ici 3310)
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: dotclear2 # nom de la base de données
      MYSQL_USER: dotclear
      MYSQL_PASSWORD: password
    volumes:
      - mariadb-10.5-dotclear_bdd:/var/lib/mysql # création d'un volume persistant pour la BDD

  web:
    container_name: dotclear
    build: .
    ports:
      - "1897:80" # tu choisis le port que tu souhaites sur l'hôte 
    depends_on:
      - bdd
    volumes:
      - ./dotclear:/var/www/html # on monte juste le répertoire présent sur l'hôte

  phpmyadmin:
    container_name: dotclear_phpmyad # on installe aussi phpmyadmin pour pouvoir faire une manip sur la BDD : changer l'url du blog dans dc_blog
    image: phpmyadmin
    restart: always
    ports:
      - "1896:80" # tu choisis le port que tu souhaites sur l'hôte 
    environment:
      PMA_HOST: bdd
      PMA_USER: dotclear
      PMA_PASSWORD: dotclearpass


volumes:
  mariadb-10.5-dotclear_bdd:

Ouvrir les droits sur le fichier dotclear

chown -R www-data:www-data dotclear/* && chmod -R 755 dotclear/*

Lancer la création de l’image et des conteneurs

docker compose up --build -d

Cela va prendre un peu de temps mais tu auras ensuite un dotclear accessible a localhost:1897/dotclear2 ou IP:1897/dotclear2 et un phpmyadmin bien utile sur le port 1896.

Post-installation

  • Renseigne les données pour la bdd avec les données indiquées dans le docker-compose.
  • Crée un utilisateur identique à celui du dotclear dont tu veux récupérer les données (celui de ton SSD crashé)

Importation de la BDD

    # importer la base de données de l'ancien dotclear (toute la base de données et non pas quelques tables)

docker exec -i dotclear_bdd mysql -u dotclear -pdotclearpass dotclear2 <  /cheminvers/dotclear2_backup.sql

:warning: il faudra peut-être (sans doute?) modifier des données dans certaines tables (l’url du blog, le chemin des thèmes…) pour rendre la bdd compatible avec le nouveau dotclear : tout cela pourra être fait dans phpmyadmin.

Upgrade hasardeux

Commencer par sauvegarder la version 2.24 : mv dotclear dotclear-2.24

wget https://download.dotclear.org/attic/dotclear-2.27.zip
unzip dotclear-2.27.zip

=> Répondre “All” à replace dotclear/CREDITS? [y]es, [n]o, [A]ll, [N]one, [r]ename:

Modif droits

chown -R www-data:www-data dotclear/* && chmod -R 755 dotclear/*

Modifier le Dockerfile en ne changeant que la version de php (FROM php:8.1-apache)

Relancer le conteneur : docker compose up --build -d

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.