Recherche


imprimer pdf
Serveur MySQL : Problèmes et Solutions

Sur les serveurs dédiés, nous avons préinstallé un serveur MySQL
http://www.mysql.org

Fichiers /etc/my.cnf inexistant

Le contenu du fichier qui vous est donné ci-dessous est générique donc
vous pourrez rééditer le fichier pour changer ces variables.

Pour créer le fichier my.cnf, connectez-vous en root puis faites ceci :

# cat > /etc/my.cnf
[mysqld]
set-variable = connect_timeout=20
set-variable = max_connections=100
skip-networking
set-variable = long_query_time=4
log-slow-queries = /var/log/mysql/slow-query.log

[safe_mysqld]
err-log = /var/log/mysql/info.log

ctrl-d (pour quitter)
# chmod 600 /etc/my.cnf


Erreurs

Can't connect to local MySQL server through socket '/tmp/mysql.sock'

Pour fixer ce problème voici les manipulations à faire.

Il faut tout d'abord ajouter dans la section [mysqld ] de /etc/my.cnf cette ligne :

socket=/var/lib/mysql/mysql.sock

Ensuite, il faut configurer la variable mysql.default_socket dans /usr/local/lib/php.ini :

mysql.default_socket = "/var/lib/mysql/mysql.sock"

Après toutes ces manipulations il suffit de relancer les services 'MySQL' et 'Apache' :

# /etc/init.d/mysql stop
Killing mysqld with pid 25540
# /etc/init.d/mysql start
# Starting mysqld daemon with databases from /var/lib/mysql

#
# /etc/init.d/httpd restart
Arrêt de httpd : [OK]
Démarrage de httpd: [OK]



User xxxxxxx has already more than 'max_user_connections' active connections

Voici les causes possibles et les solutions à adopter :

  • vous ne fermez pas les connexions vers le serveur MySQL. MySQL doit attendre le timeout pour libérer une connexion. La solutions consiste à mettre dans le code les fermetures de la connexion.


  • la connexion vers MySQL prend trop de temps. C'est souvent dû au fait que vous ouvrez la connexion vers MySQL au début d'une page, au milieu de la page vous mettez les commandes (select, update), puis à la fin une fermeture. Ceci fonctionne, mais si le visiteur de votre site a une mauvaise connexion, il mettra du temps à charger la page et ne libérera pas de connexion MySQL rapidement. La solution consiste à ouvrir une connexion vers le serveur MySQL seulement si vous en avez besoin et au moment où vous en avez besoin, faire les opérations nécessaires et fermer de suite la connexion. Vous pouvez utiliser des variables pour stocker les données après un accès à la base. Plus le temps d'une connexion est court, plus vous pouvez faire des requêtes par seconde sur le serveur MySQL.


  • vos requêtes sont très lourdes et le serveur MySQL met du temps à les exécuter. Vous devez revoir certains de vos scripts et peut-être la conception du site.


Forums

forum.ovh.com/showthread.php?s=&threadid=531::Migration Mysql 3.X vers 4.X