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