2017-01-12 5 views
0

J'ai une grande base de données sur une machine Win10, mysqld.exe fait beaucoup d'E/S disque, 100%, pendant des heures et des heures 100MB/s toujours - surtout écrit - persiste après de nombreux redémarrages. Comment puis-je savoir ce qu'il est en train de faire et l'arrêter? Je sais que la base de données n'est pas utilisée pour le moment, je veux savoir d'où vient cette E/S et l'arrêter. Les seules solutions que j'ai trouvées sur internet étaient des conseils de configuration générale, je n'ai pas besoin de ça, j'ai besoin de fermer ça maintenant!Que fait MySQL? 100% d'utilisation du disque à partir du démarrage

Afficher la liste de processus ne montre rien. MISE À JOUR: Le problème était une énorme opération d'annulation d'arrière-plan sur une table. La solution est la suivante:

1) kill mysqld.exe 
2) add innodb_force_recovery=3 to my.ini 
3) start mysqld.exe 
4) export the table (96GB table resulted in about 40GB .sql file) 
5) drop the table 
6) kill mysqld.exe 
7) set innodb_force_recovery=0 to my.ini 
8) reboot and import the table back 

Aucune idée sur l'intégrité des données pour l'instant, mais cela semble correct.

Merci à Milney.

+0

[Process Explorer de Windows] (https://technet.microsoft.com/en-us/ sysinternals/bb896653) peut vous aider à déboguer. – DanFromGermany

Répondre

2

Si vous affichez l'onglet Disque du moniteur de ressources du Gestionnaire des tâches, vous pouvez voir quels fichiers sont en cours d'écriture, cela vous indiquera quelle base de données il contient;

Vous pouvez alors utiliser quelque chose comme SELECT * FROM information_schema.innodb_trx\G pour voir ouvrir des transactions et de voir quelles sont les déclarations à l'origine de cette

Resource Monitor

+0

Merci, il est dit "trx_state: ROLLING BACK". Comment puis-je annuler cela? – Daniel

+0

J'ai trouvé ceci: "Vous pouvez tuer le processus mysqld et définir innodb_force_recovery à 3 pour mettre la base de données en place sans la restauration, puis déplacer la table qui provoque la restauration runaway". Puis-je empêcher le rollback sans laisser tomber une table? C'est une sorte de table importante et trop grande pour exporter. – Daniel

+0

N'avez-vous pas de sauvegardes? S'il vous plaît dites-moi ce n'est pas une base de données de production en cours d'exécution sur Windows 10 client n'est pas un serveur? Idéalement, vous laisseriez le roll-back pour finir ... – Milney

0

Je pense que vous devriez jeter un coup d'oeil à ceci.

http://windowsreport.com/windows-10-anniversary-update-100-disk-usage/

Essayez également vérifier si le disque utilisation IO est toujours là si vous éteignez l'Internet.

+0

Le problème d'utilisation du disque est spécifique à mysqld.exe et n'est en aucun cas lié au système d'exploitation. Je l'ai seulement mentionné pour éviter les solutions spécifiques à Linux. En outre, le système n'a pas été mis à jour vers la mise à jour anniversaire. – Daniel

+0

Le lien contient également certains outils qui pourraient vous intéresser pour déboguer ce problème. Jetez un coup d'oeil s'il vous plait. – cyberrspiritt

+0

J'ai jeté un coup d'oeil, cependant ceci est un article de dépannage assez générique sur la façon de localiser quel processus/serveur/fichier cause les hautes E/S et les tuer ou les désactiver. Ce n'est pas ce que j'essaie de faire. Je sais déjà ce qui cause le problème - il y a quelque chose de détraqué avec mon serveur MySQL - et j'ai besoin d'une solution liée à MySQL. Je ne peux pas tuer tout MySQL, car je veux toujours utiliser la base de données. Merci pour votre contribution néanmoins. – Daniel