J'ai essayé de régler les performances d'un serveur mysql en cours d'exécution en exécutant cette commande :
mysqld_safe --key_buffer_size=64M --table_cache=256 --sort_buffer_size=4M --read_buffer_size=1M &
Après cela, je ne peux pas me connecter à mysql à partir du serveur où mysql est exécuté. J'obtiens cette erreur :
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Cependant, heureusement, je peux toujours me connecter à mysql à distance. Ainsi, tous mes serveurs web ont toujours accès à mysql et fonctionnent sans aucun problème. Pour cette raison, je ne veux pas essayer de redémarrer le serveur mysql, car cela risque de tout gâcher.
Maintenant je sais que mysqld_safe démarre le serveur mysql, et comme le serveur mysql était déjà en fonctionnement, je suppose qu'il s'agit d'une sorte de problème avec deux serveurs mysql en fonctionnement et écoutant sur le même port.
Existe-t-il un moyen de résoudre ce problème sans redémarrer le serveur mysql initial ?
UPDATE : C'est ce que ps xa | grep "mysql" dit :
11672 ? S 0:00 /bin/sh /usr/bin/mysqld_safe
11780 ? Sl 175:04 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
11781 ? S 0:00 logger -t mysqld -p daemon.error
12432 pts/0 R+ 0:00 grep mysql
MISE À JOUR 2 : J'ai essayé de redémarrer maintenant. L'arrêt a bien fonctionné mais le démarrage a échoué. À ma grande surprise, le serveur mysql fonctionne toujours sans problème, donc je ne sais pas vraiment ce qu'il a arrêté.
MISE À JOUR 3 : Je suis presque sûr que c'est le problème maintenant : Quand j'ai lancé mysql la première fois, il a écrit son processid dans /var/run/mysqld/mysqld.pid et le socket dans /var/run/mysqld/mysqld.sock.
Ensuite, lorsque j'ai exécuté la commande mysqld_safe, elle a supprimé ces fichiers. Maintenant je ne peux pas arrêter le serveur mysql car la commande stop a besoin de ces fichiers. Existe-t-il un moyen de restaurer ces fichiers ? Je suppose que le fichier pid est juste un fichier avec l'identifiant du processus ? Je ne veux pas simplement tuer le processus parce qu'il y a beaucoup d'écritures sur ce serveur et tuer mysql finit généralement par corrompre les bases de données.