MySQL-Server optimieren

This blog post has been published on 2010-07-26 and may be out of date.

Zurück zur “Webseiten beschleunigen” – Übersicht

7.) MySQL optimieren

cd  /root
wget  http://mysqltuner.com/mysqltuner.pl
wget  http://www.day32.com/MySQL/tuning-primer.sh
chmod +x mysqltuner.pl
chmod +x tuning-primer.sh
./mysqltuner.pl
./tuning-primer.sh

Link:
rackerhacker.com/mysqltuner/ – mysqltuner
www.day32.com/MySQL/ – tuning-primer


Beispiel:

Wenn wir unserem MySQL-Server z.B. 64 MB zur Verfügung stellen möchten ->

key_buffer = 12M + (read_buffer = 4M + sort_buffer = 4 M) x max_connections = 64 MB

12 + (4 + 4) x max_connections = 64


Formel nach max_connections umstellen

max_connections = (RAM – key_buffer) : (read_buffer + sort_buffer)

max connections = (64 – 12) : (4 + 4)

max_connections = 52 : 8

max_connections = 6,5


benötigen wir mehr als 6,5 max_connections, müssen wir mehr RAM zur Verfügung stellen oder read_buffer und sort_buffer kleiner einstellen…


[stextbox id=”info” caption=”Regel”]
Je weniger RAM zur Verfügung steht und je mehr max_connections benötigt werden, desto kleiner müssen read_buffer, sort_buffer u. key_buffer sein.

[/stextbox]


my.cnf – Konfigurationsdatei überprüfen ob der key_buffer so groß ist, dass alle Indizies in den Buffer passen und table_cache in etwa der Anzahl der Tabellen entspricht.


Zudem sollte man darauf achten, dass MySQL-Cache eingeschaltet ist.

-> query_cache_type=1


Als Anwendungsbeispiel werde ich an dieser Stelle die MySQL-Konfiguration meines Servers überprüfen ->

/root/mysqltuner.pl

Ich werde hier jedoch nur die Fehler, welches das Skript in meiner Konfig gefunden hat auflisten…

  • [!!] Total fragmented tables: 2

-> das nachfolgende Kommando schafft hier Abhilfe (könnte man so, oder so ähnlich auch als cronjob (crontab) laufen lassen

crontab -e



30 * * * * /usr/bin/mysqlcheck -u USER -pPASSWORT --auto-repair --check --optimize --all-databases > /dev/null 2>&1

In diesem Beispiel werden alle Datenbanken, jede 30 Minuten defragmentiert bzw. optimiert.



  • [!!] Key buffer size / total MyISAM indexes: 10.0M/13.7M

-> key_buffer = 15M erhöhen


7.1) MariaDB (MySQL-Fork)

In den letzen Wochen habe ich auch mit einem Mysql-Fork herumgespielt (MariaDB), dieser soll einige Vorteile in der Geschwindigkeit bringen. Man kann die Software über die Debian Pakete installieren nachdem man folgendes in seine “sources.list” aufgenommen hat.

deb http://mirror.ourdelta.org/deb lenny mariadb-ourdelta
deb-src http://mirror.ourdelta.org/deb lenny mariadb-ourdelt

… danach noch ein …

apt-get update

… und schon kannst du die Software gegen MySQL austauchen, dies funktioniert z.B. mit “aptitude” (mariadb-server) auch sehr gut, jedoch hatte ich das Problem, dass mein ISPConfig (eine Server Verwaltungsoberfläche) keine neuen Benutzer anlegen konnte, da sich die Syntax des Befehls ein wenig unterscheidet.


Published by

voku

Lars Moelleken | Ich bin root, ich darf das!

%d bloggers like this: