MySQL Optimierung:: MySQL tmpdir auf RAMDisk auslagern mit tmpfs

Jedesmal wenn man in der MySQL Prozess Liste im Statusfeld „copying to tmp table“ sieht, erstellt MySQL eine Temporäre Table auf der Harddisk. Jedoch dauert das Schreiben auf die HDD einiges länger als wenn man die Daten ins Memory schreiben würde. Daher ist es sinnvoll für die Datenbank eine Ramdisk zu erstellen. In FreeBSD ist es seit Version 7 ausserdem möglich eine Ramdisk mit variabler Grösse zu erstellen.

mkdir -p /db/tmpfs01 && chown mysql:mysql /db/tmpfs01
mount -t tmpfs tmpfs /db/tmpfs01

Damit die RAMDisk nach dem nächsten Restart noch vorhanden ist, noch in fstab eintragen:

vi /etc/fstab

#variable RAM disk
tmpfs           /db/tmpfs01     tmpfs   rw,mode=1777    0       0

Nun my.cnf editieren und diese Zeile einfügen bzw. anpassen:

vi /etc/my.cnf
tmpdir = /db/tmpfs01

Nun MySQL restarten.

Quellen:

Problem: RamDisk ist voll

Es ist sehr wichtig, dass man die RamDisk im Auge behält. Ansonsten kann sowas passieren

Filesystem        Size    Used   Avail Capacity  Mounted on
tmpfs             2.6G    2.6G      0B   100%    /db/tmpfs01
[ERROR] /usr/local/libexec/mysqld: Disk is full writing '/db/tmpfs01/ST8meb0D' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)

Hier kann man in ein paar Sekunden Abhilfe schaffen, indem man zusätzliches Virtuells Memory (SWAP) bereitstellt.

Flattr this!

  • *

    Du kannst diese HTML tags verwenden: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <s> <strike> <strong>

  • Kommentar-Feed für diesen Beitrag
nach oben