L’espace disque MySQL est faible sur Adobe Commerce sur l’infrastructure cloud

Cet article fournit des solutions pour lorsque vous rencontrez un espace très faible ou aucun espace pour MySQL sur Adobe Commerce sur l’infrastructure cloud. Les symptômes peuvent inclure des pannes de site, des clients incapables d’ajouter des produits au panier, l’impossibilité de se connecter à la base de données, d’accéder à la base de données à distance, et l’impossibilité de SSH dans le noeud. Les symptômes incluent également les erreurs Galera, de synchronisation d’environnement, PHP, de base de données et de déploiement, comme indiqué ci-dessous. Cliquez sur Solution pour accéder directement à la section de solution.

Produits et versions concernés

Adobe Commerce sur l’infrastructure cloud 2.3.0-2.3.6-p1, 2.4.0-2.4.2

Problème

La base de données devient trop importante. Les symptômes peuvent inclure la perte de la connexion à la base de données, une erreur de téléchargement de la base de données et divers autres problèmes.

Erreurs que vous pouvez rencontrer :

Galera :

  • SQLSTATE[08S01] : Échec du lien de communication : 1047 WSREP n’a pas encore préparé le noeud pour l’utilisation de l’application Erreurs d’importation :
  • SQLSTATE[HY000] : Erreur générale : 1180 Erreur 5 "Erreur d’entrée/de sortie"
  • SQLSTATE[08S01] : Échec du lien de communication : 1047 WSREP n’a pas encore préparé le noeud pour l’utilisation de l’application

Erreurs de synchronisation d’environnement :

  • SQLSTATE : Erreur générale : 1180 Obtention de l’erreur 5 "Erreur d’entrée/de sortie" pendant COMMIT

erreurs PHP :

  • php : PDO::__build(): Le serveur MySQL a disparu.
  • Erreurs php : PDO::__build(): Erreur lors de la lecture du paquet de salutations. PID=NNN.
  • ERROR 2013 (HY000) : Perte de la connexion au serveur MySQL lors de la lecture du paquet de communication initial, erreur système : 0 "Erreur interne/vérification (Pas d'erreur système)".

Erreurs de base de données :

  • Error_code: 1114
  • InnoDB : erreur (espace disque insuffisant) lors de l’écriture du noeud de mot sur la table d’index auxiliaire FTS.
  • SQLSTATE[HY000] : Erreur générale : le serveur MySQL 2006 a disparu
  • [ERROR] SQL esclave : erreur "La table <table\_name> est pleine" sur la requête.
  • L'unité mysql.service est en échec.
  • erreur : 'Impossible de se connecter au serveur local MySQL via le socket '/var/run/mysqld/mysqld.sock' (111 "Connexion refusée")'
  • 1205 Dépassement du délai d’attente du verrouillage ; tentative de redémarrage de la transaction, la requête était : INSERTION DANS `cron_schedule` (`job_code`, `status`, `created_at`, `scheduled_at`) VALEURS (?, ?, YYYY-02-07 HH:MM:SS, YYYY-MM-DD HH:MM:SS)

Erreurs de déploiement :

  • E : La commande '['sudo', '-u', <environment name>, 'bash', '-c', '/etc/platform/<environment name>/post_deploy.sh']' a renvoyé l’état de sortie non nul 255
  • E : Commande '['ssh', u<node IP address>, 'sudo /usr/bin/sv -w 30 restart site-<environment name>g-nginx']' renvoyée non-zero
  • Mise à niveau du schéma… SQLSTATE[HY000] : Erreur générale : 1114 La table <table\_name> est pleine
  • SQLSTATE[HY000] : Erreur générale : 3 Erreur lors de l’écriture du fichier ./<environment name>/#
  • W : <filename> (Errcode : 28 "Aucun espace laissé sur l’appareil") Erreurs d’indexation (avec fichiers .ibd temporaires orphelins dans /tmp) :
  • L’indexeur de règles de catalogue génère une exception. Les tables temporaires ne sont pas nettoyées par la suite, puis remplissent le disque sur le noeud maître MySQL actuel.

Étapes à reproduire :

L’une des manières de vérifier si le /data/mysql (ou l’emplacement de configuration du stockage de données MySQL) est plein consiste à exécuter la commande suivante dans l’interface de ligne de commande :

df -h

Moins de 10 % de la mémoire libre sur le disque MySQL est un indicateur principal d’une panne.

Cause

Le montage /data/mysql peut devenir plein en raison de divers problèmes, tels que le manque d’informations, d’espace de stockage disponible et de requêtes incorrectes qui génèrent des tables temporaires.

Solution

Il y a une étape immédiate que vous pouvez prendre pour remettre MySQL sur le piste (ou l’empêcher de se bloquer) : libérer de l’espace en vidant les grandes tables.

Mais une solution à long terme affecterait plus d’espace et suivrait les Bonnes pratiques de la base de données, y compris l’activation de la fonctionnalité Commande/Facture/Expédition.

Vous trouverez ci-dessous des informations détaillées sur les solutions rapides et à long terme.

Vérifier et libérer des informations

Assurez-vous que suffisamment d’informations sont disponibles. Pour cela, exécutez la commande suivante :

df -i

La sortie ressemblerait à ce qui suit :

Filesystem Inodes   Used   Free Use% Mounted on
/dev/nvme2n1 655360    1695  653665    1% /data/mysql

Vérifiez que % d’utilisation est inférieur à 70 %. Les noeuds sont corrélés avec des fichiers. Si vous supprimez des fichiers de la partition, vous libérez des informations.

Vérifier et libérer l’espace de stockage

Vérifiez l’espace de stockage disponible. Pour cela, exécutez :

df -k

La sortie serait similaire à ce qui suit :

Size Used Avail Use% Mounted on·
       50G 49G 95M 100% /data/mysql

Si le % d’utilisation est supérieur à 70 %, vous devez agir pour libérer/ajouter de l’espace.

Recherche de fichiers ibtmp1 volumineux

Recherchez un fichier ibtmp1 volumineux sur /data/mysql de chaque noeud : ce fichier est le tablespace des tables temporaires. Si des requêtes incorrectes génèrent des tables temporaires, elles sont contenues dans le fichier ibtmp1. Ce fichier n’est supprimé que lors du redémarrage de la base de données. S'il occupe tout l'espace disponible, la base de données doit être redémarrée. S’il existe de mauvaises requêtes, elles sont recréées à nouveau.

Vider les grandes tables

WARNING
Il est vivement recommandé de créer une sauvegarde de la base de données avant toute manipulation et de les éviter pendant les périodes de chargement importantes du site. Voir Sauvegarde de la base de données dans la documentation destinée aux développeurs.

Vérifiez s’il existe des tables volumineuses et déterminez si l’une d’elles peut être vidée. Effectuez cette opération sur le noeud principal (source).

Par exemple, les tableaux comportant des rapports peuvent généralement être vidés. Pour plus d’informations sur la recherche de tables volumineuses, reportez-vous à l’article Find Large MySQL Tables .

S’il n’y a pas d’immenses tableaux de rapports, pensez à vider les tables _index, simplement pour rétablir l’application Adobe Commerce sur le suivi. index_price tables seraient les meilleurs candidats. Par exemple, catalog_category_product_index_storeX tables, où X peut avoir des valeurs allant de "1" au nombre maximal de magasins. Veuillez noter que vous devez réindexer pour restaurer les données dans ces tables. Dans le cas de catalogues volumineux, cette réindexation peut prendre beaucoup de temps.

Une fois que vous les videz, attendez que la synchronisation wsrep soit terminée. Vous pouvez désormais créer des sauvegardes et prendre des mesures plus significatives pour ajouter plus d’espace, comme allouer/acheter plus d’espace et activer la fonctionnalité Order/Invoice/Shipment archive .

Vérification des paramètres de journalisation binaire

Vérifiez les paramètres de journalisation binaire de votre serveur MySQL : log_bin et log_bin_index. Si les paramètres sont activés, les fichiers journaux peuvent devenir énormes. Créez un ticket d’assistance demandant la purge des fichiers journaux binaires volumineux. En outre, demandez à vérifier que la journalisation binaire est correctement configurée afin que les journaux soient purgés régulièrement et ne prennent pas trop d’espace.

Si vous n’avez pas accès aux paramètres du serveur MySQL, demandez à l’assistance technique de le vérifier.

Allouer/acheter plus d’espace

Allouez plus d’espace disque pour MySQL si vous n’en avez pas. Consultez l’article Vérifier la limite d’espace disque pour savoir comment vérifier si vous disposez d’espace disque disponible.

  • Pour le plan de démarrage, tous les environnements et les environnements d’intégration Pro, vous pouvez allouer l’espace disque si vous n’en utilisez pas. Pour plus d’informations, voir Allocate more space for MySQL (Allouer plus d’espace pour MySQL).
  • Pour les environnements d’évaluation et de production Pro-plan, contactez le support pour allouer plus d’espace disque si vous n’en avez pas.

Si vous avez atteint votre limite d’espace et que vous rencontrez toujours des problèmes d’espace, envisagez d’acheter plus d’espace disque, contactez votre équipe de compte d’Adobe pour plus de détails.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a