MySQL server has gone away

Indice NDT

(N)iveau requis: utilisateur à expert. (D)ifficulté : Simple, Moyenne, Complexe. (T)emps estimé pour faire.

Utilisateur Technicien Expert
Niveau
Simple Moyenne Complexe
Difficulté
– d’une heure + de 5 heures 12 heures et +
Temps

OcM

Objectif de l'article. Contexte de la réalisation. Modalité de l'éxécution.

Importer une grosse base de données au format SQL

MariaDB10 sous DSM sur NAS Synology

Personnalisation d’un fichier de configuration

MariaDB «server has gone away», est l’erreur que l’on  rencontre lors d’une importation de base de données sur un NAS Synology sous DSM.
Le fichier de configuration par défaut, «encaisse» des paquets de 1 Mo ce qui peut s’avérer insuffisant dès lors que la requête SQL que l’on importe dépasse les 10 Mo.

Il faut dans ce cas modifier le fichier de configuration «user», redémarrer la base et faire l’importation. Cela prend plus ou moins de temps selon la taille du fichier SQL à importer et la puissance du NAS.

Dans cette exemple, un fichier export SQL de 258 Mo a demandé une immobilisation de plus de 45 minutes sur un NAS DSM6 sur un DS 918+.

Démarche


Pré-requis

L’importation est aisée si elle se fait en direct sur le NAS. Le fichier SQL issue de l’exportation est au préalable déposé sur un dossier du NAS via FileStation par exemple.

Dans notre cas, le fichier exportbase.sql est déposé sur le dossier web se trouant sur le volume1 du NAS.

Il faut disposer d’un accès au cœur du système via un Terminal ou un Putty1 et les droits connus de l’administrateur (ou d’un utilisateur du groupe administrator).


(1) Dispo gratuitement ici

Si des bases sont déjà présentes dans MariaDB du NAS, il est judicieux de faire une sauvegarde en amont afin de préserver l’existant. Une importation implique un apport de données au sein de la base, ces actions techniques, peuvent en cas d’anomalie de traitement, provoquer une corruption de la base entière.

Hyperbackup permet sur un NAS Synology de faire la sauvegarde de l’application MatiaDB10 et de ses bases.

Sinon on peut faire une exportation manuelle de chacune des bases présentes via la commande suivante :

où :

  • -u root désigne l’utilisateur (préférable forcément)
  • -p demande du mot de passe d’accès (BDD du NAS source)
  • -q quickmode pour les larges bases de données
  • –databases specifie la base concernée

On peut aussi considérer une sauvegarde du NAS par sécurité supplémentaire…

Utiliser ce bon vieux VI
Cet éditeur de texte unix, antédiluvien datant de 1976,  est particulier à utiliser…

On accède au fichier, on doit indiquer par des codes alphabétiques l’action, avant, de la faire.
Ainsi la commande dd (2 lettre d à suivre) permet la suppression de la ligne active, la commande i ,  bascule en mode insertion pour faire des modifications, la touche ESC (echap) permet de sortir du mode ‘insertion par exemple, pour repasser d’autres commandes à base de lettres comme :w pour (write) sauvegarder et :q pour quitter

Les plus geeks sauront s’en passer et utiliser un éditeur de texte classique, au format UTF8, puis le copier sur le NAS au bon endroit, voir lui attribuer les droits idoines pour une bonne prise en compte dans la configuration attendue.

PARTI PRIS

Comme il s’agit d’un fichier de configuration, je préfère guider le néophyte par une succession de commandes et d’actions à faire pas à pas.
sinon on peut voir le résumé en bas de page.

En support : un petit guide d’utilisation pour VI dispo ici

De la concentration. Manipuler des fichiers de configuration, à l’aide de commandes saisies au clavier, en respectant les espaces, la casse des caractères, exige une attention accrue. Il n’y a pas de danger… Mais des risques existent (mauvaise manipulation qui bloque la base ou au pire le NAS) voilà pourquoi il convient de:

  1. savoir où va,
  2. pourquoi on le fait
  3. d’être déterminé à le faire
  4. et de disposer d’un contexte d’exécution plus que favorable.

Aucune responsabilité n’est engagée en cas de problématique technique rencontrée dans la mise en place des éléments indiqués dans cet article.

Accès au NAS


Après avoir autorisé l’accès SSH au NAS on se connecte via Putty ou un terminal au NAS.

On élève les droits pour passer à root, saisir la commande suivante :

A noter : le mot de passe de l’utilisateur est à nouveau demandé (si ce dernier est déclaré dans le groupe administrator) il est alors autorisé à basculer à root. On ne voit pas en echo les caractères saisis.

On va sur le dossier réceptacle contenant déjà des fichiers de configuration MariaDB personnalisés.

Saisir la commande :

COPIER

On peut vérifier la présence des 2 fichiers de configuration présents, en saisissant la commande suivante :

COPIER

Ce qui donne à peu près cet ensemble…

On voit bien la présence des deux fichiers :

  • myport.cnf
  • synology.cnf

Si vous ne voyez pas ces fichiers, c’est que vous n’êtes pas au bon endroit.Il faut reprendre depuis le début et vérifier que le packqage MariaDB est installé sur le volume concerné.

Adaptation du fichier original de configuration


On copie le fichier de configuration original là où on se trouve pour ensuite le modifier. Saisir la commande suivante :

COPIER

Suppose que le package soit installé sur volume1…

Désormais le fichier est copié. On doit le modifier pour obtenir le fichier de configuration de résultat (cf ci dessous 1er onglet) par rapport à sa source (2nd onglet)

On saisit la commande :

COPIER

Pour passer en édition (modification) du fichier puis,

  • sur chaque ligne dd pour supprimer les lignes souhaitées,
  • flèches du clavier (haut/bas) pour se déplacer de ligne en ligne
  • une fois terminé le  «ménage» on tape
    :wq
    qui sauvegarde et quitte VI

Maintenant que le fichier my.cnf contient que les lignes souhaitées, on adapte le paramètre max_allowed_packet à une valeur suffisante pour accepter la grosse base de données à importer.

Une valeur de 64M ou 300M doit suffire. Dans notre exempla le fichier à importer sql pèse 258 Mo on modifie le paramètrage à 300M

A nouveau la commande VI pour basculer en insertion et modifier la valeur.

  1. VI my.conf
  2. :i pour basculer en insertion
  3. avec les flèches du clavier on positione le curseur pour modifier la ligne
  4. ESC (ECAHP)
  5. puis :wq pour enregistrer et quitter.

Un nouveau more my.cnf donne ce résultat:

La ligne 2 est modifiée avec le bon paramètrage souhaité.

Maintenant, on redémarre la base de donnée MariaDB10 pour qu’elle prenne en compte ce fichier de paramètrage, saisir la commande suivante :

COPIER

A noter la seconde ligne est affichée à l’issue de la commande, atteste de la bonne prise en compte des éléments.

 

Importation de la base


Saisir la ligne de commande suivante d’importation :

Le mot de passe est demandé (root de MariaDB et sans écho écran), l’importation débute à l’issue.

A noter: une base de 258Mo sur un DS918+ 8 go de RAM a demandé pas moins de 45 à 50 minutes. Plus la taille à importer est conséquente, plus le NAS est «petit» dans sa configuration technique, plus longue sera l’attente.

Remise en place


Il est conseillé de supprimer le fichier modifié pour laisser les paramètres initiaux et de redémarrer la base de données MariaDB10.

Saisir les commandes suivantes :

COPIER

Et voilà !

La grosse base de données est importée sous MariaDB10 sur NAS Synology et exploitable.

Soit en résumé GEEK

1°) Copier un fichier my.cnf dans le dossier de paramètrage de MariaDB10

volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql

2°) Fixer la valeur max_allowed_paket à une valeur en M acceptant le gros fichier SQL

Copy to Clipboard

xxx représente la valeur à modifier.

3°) Redémarrer la base.

COPIER

4°) Lancer l’importation

5°) Supprimer le fichier my.cnf

6°) Redémarrer la base.