Nous avons déjà suspendu la base de données deux fois et essayons de trouver une cause.
show processlist
Waiting for global read lock | INSERT INTO {myisam_table} ...
Ici, l'espace disque était plein, donc nous pensions que le problème était résolu après en avoir donné un peu plus, mais le lendemain à midi, il a de nouveau pendu:
show processlist
Waiting for table level lock | UPDATE {myisam_table} ...
Qu'est-ce qui pourrait en être la cause?
Moteur par défaut de Mysql: InnoDB.
La base de données a un mélange de tables avec les moteurs MyISAM et InnoDB.
Journal affiché ici:
http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/
mysqldump
. Exécutiez-vous une sauvegarde à l'époque?SHOW FULL PROCESSLIST
plutôt queSHOW PROCESSLIST
pour que nous puissions voir l'intégralité de la requête pour chaque thread ... mais en l'état, s'il y a desMyISAM
tables impliquées, il semble que laSELECT
requête de longue durée de 42686 bloque laUPDATE
requête de 43506 , ce qui, à son tour, bloque chaqueSELECT
requête qui la suit.Réponses:
OBSERVATIONS INITIALES
JOIN
,GROUP BY
ouORDER BY
THÉORIE DE TRAVAIL
Si vous n'avez plus d'espace disque avec la liste de processus que vous m'avez donnée, nous pouvons blâmer le moteur de stockage MyISAM. Pourquoi?
Dans votre cas particulier, ce n'est pas une de vos tables. Si un
JOIN
,GROUP BY
ouORDER BY
est en cours d' exécution et une table temporaire est en cours d' écriture sur le disque (sur les tables temporaires disque utilisent le moteur MyISAM) MySQL se fige simplement quand hors de l' espace. Comment le sais-je?Selon le guide d'étude de certification MySQL 5.0
Page 408 409 La section 29.2 Bulletpoint 11 dit:
J'ai déjà discuté de cette situation
Apr 05, 2013
: Le serveur MySQL "Site hors ligne" n'a pas pu démarrer ni s'arrêterDec 17, 2012
: Comment résoudre l'erreur 1114 de MySQL «La table est pleine» avec Amazon RDS?Apr 25, 2012
: Fichiers journaux très volumineuxMar 15, 2012
: Pourquoi les tables MySQL plantent-elles? Comment puis-je l'empêcher?Quelque chose me dit que vous avez l'une de ces deux situations
/tmp
la partition racine, cela manque d'espaceSUGGESTIONS
Suggestion # 1: mappez tmpdir à un autre disque
Suggestion # 2: créer un disque RAM
Exécutez ce code pour installer un disque RAM qui sera disponible au redémarrage de Linux.
Ensuite, mappez tmpdir à
/var/tmpfs
ESSAIE !!!
la source