Suche


drucken PDF

Häufige Probleme und deren Lösung für MySQL



Auf den dedizierten Servern wird von OVH ein MySQL-Server (Webseite: http://www.mysql.org) vorinstalliert.


Datei /etc/my.cnf existiert nicht:


Um die Datei my.cnf zu erstellen, verbinden Sie sich als root und geben Sie folgendes ein:

# 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 (zum verlassen)
# chmod 600 /etc/my.cnf


Fehler:



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


Um dieses Problem zu beheben führen Sie folgende Schritte durch:

Sie müssen zuerst im Bereich [mysqld ] in der /etc/my.cnf folgende zeile einfügen:

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

Danach muss die Variable mysql.default_socket in der /usr/local/lib/php.ini konfiguriert werden:

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

Anschliessend müssen noch die Dienste MySQL und Apache neu gestartet werden:

# /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


Hier die möglichen Gründe für diese Meldung und die zu verwendenden Lösungen:

  • Sie schliessen nicht die Verbindungen zum MySQL-Server; dadurch muss MySQL auf den Timeout warten, um eine Verbindung wieder freigeben zu können. Die Lösung besteht darin, das schnellere Schliessen der Verbindung (Timeout) in den Code einzufügen.

  • Die Verbindung zu MySQL dauert zu lange. Dies wird häufig dadurch ausgelöst, daß die Verbindung zu MySQL am Anfang der Seite hergestellt wird, die Befehle (select, update...) stehen dann in der Mitte der Seite, und geschlossen wird dann am Ende der Seite. Dies funktioniert zwar, aber wenn der Besucher eine schlechte Verbindung hat wird es lange dauern bis die ganze Seite geladen ist und die MySQL-Verbindung nicht schnell wieder freigegeben wird. Die Lösung für dieses Problem ist, nur eine Verbindung zum SQL-Server herzustellen wenn sie wirklich benötigt wird, die gewünschten Operationen durchzuführen und dann sofort die Verbindung zu trennen. Sie können Variablen verwenden um die Daten nach dem Zugriff auf die Datenbank zu speichern. Je kürzer eine Verbindung dauert, um so mehr Anfragen pro Sekunde können vom MySQL-Server bearbeitet werden.

  • Ihre Verbindungen sind sehr verarbeitungsintensiv, und der MySQL-Server benötigt die Zeit um sie auszuführen. Dann hilft es nur, die Skripte und eventuell die Konzetion der Webseite zu überdenken.