MySQL l’espace disque est faible sur Adobe Commerce sur l’infrastructure cloud
Cet article fournit des solutions pour lorsque vous rencontrez un très faible espace 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(): MySQL le serveur 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 2006 MySQL 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 MySQL local 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 actuel MySQL.
Étapes à reproduire :
L’une des manières de vérifier si le /data/mysql
(ou l’emplacement où le stockage de données MySQL est configuré) est plein consiste à exécuter la commande suivante dans l’interface de ligne de commande :
df -h
Moins de 10 % de la mémoire disponible 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 entreprendre pour remettre MySQL sur la piste (ou l'empêcher de rester coincé) : 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
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, reportez-vous à la section 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.
Lecture connexe
Bonnes pratiques pour la modification des tables de base de données dans le manuel de mise en oeuvre de Commerce