Tag Archives: Virtualisierung

MySQL Speicherbedarf senken

Kleinere LAMP-Instanzen laufen heute meist in virtuellen Server-Umgebungen, hier ist Speicher knapp bemessen. Mit dem Abschalten der InnoDB Database Engine lässt sich MySQL deutlich abspecken.

Schritt 1 — prüfen ob InnoDB als Engine verwendet wird:

1
2
3
4
5
6
7
8
9
10
$mysql_pass=your_password
mysql -p$mysql_pass -e "select distinct ENGINE FROM information_schema.TABLES"
+--------------------+
| ENGINE             |
+--------------------+
| MEMORY             |
| MyISAM             |
| CSV                |
| PERFORMANCE_SCHEMA |
+--------------------+

Im Beispiel taucht InnoDB nicht auf und kann daher deaktiviert werden.

Schritt 2 — InnoDB deaktivieren

Sollte eine Datenbank InnoDB-Tabellen haben, lässt sich die DB-Engine mit folgende Script auf MyISAM umstellen. (Vorher Backup anlegen!)

1
2
3
4
5
mysql_pass='your_password'
db='your_database'
for t in `mysql -p$mysql_pass --skip-column-names -B -e "select table_name FROM information_schema.TABLES where engine = 'innodb'"`; do
    mysql -p$mysql_pass $db -e "ALTER TABLE $t ENGINE=MYISAM";
done

Schritt 3 — InnoDB deaktivieren

Unter Debian/Ubuntu lässt sich die InnoDB Engine in der Konfigurationsdatei /etc/mysql/my.cnf mit folgenden Zeilen deaktivieren:

1
2
innodb=OFF
default_storage_engine=MyISAM

Schritt 4 — Test

sudo service mysql restart
mysqladmin -u root -p$mysql_pass var | grep have_innodb

#Vorher
| have_innodb        | YES

#Nachher
| have_innodb        | DISABLED

Ergebnis

Munin-memory
Im Chart sind zwei Senkung des für Anwendungen allokierte Speichers (committed) sichtbar.
Die erste Senkung ist auf die oben beschriebene Anpassung der MySQL-Konfiguration zurückzuführen. Die zweite Senkung wurde duch eine Anpassung der Apache Konfiguration verursacht.

Virtualbox

Virtualbox Pro & Con

After played around with Xen and KMV I’ve finally decided to go for VirtualBox. Please find the pros and cons considered from below:

Pro

  • Available for all major platforms (Linux, Mac OS X, Windows, Solaris, …)
  • Easy to install (no special kernel required, compared to Xen)
  • Easy to manage (Qt GUI, CLI, API, libvirt support)
  • Paravirtualization (virtio) for network and memory (baloon)
  • Active developed, frequently new releases
  • Good end-user documentation

Con

  • No paravirtualization (virtio) for storage (virtio-blk)
  • Direct access for block devices is not supported
  • Proprietary license for USB and RDP support

Command Line Recipes

VirtualBox comes with a friendly Qt based GUI, but also with a set of command line tools. This makes it very powerful for headless usage. A couple of handy recipes can be found from below:

  • Take a screenshot
    1
    2
    
    VBoxManage controlvm  <uuid>|<name> \
    screenshotpng <filename.png>
  • Set a specific machine time in past at startup
    1
    2
    3
    4
    5
    
    #!/bin/bash
    VBoxManage modifyvm <uuid>|<name> \
     --biossystemtimeoffset \
    $[($(date -d '2008-03-05 00:30:00' +%s) \
    -$(date +%s))*1000]
  • Activate RDP
    1
    2
    3
    4
    5
    6
    
    vbm="Debian64" # Virtual Machine Name oder UUID
    VBoxManage modifyvm $vbm \
    --vrde on \
    --vrdeport 3389 \
    --vrdeauthtype null \
    --vrdemulticon on