howto backup huge MySQL servers?

How to backup huge mysql myisam databases with a massive load of tables?
I encountered the backup of database servers that hold on to some hundreds of database schemas with each about one hundred tables while having some hundred gigabytes of data in them as a big problem in mysql servers.

There are some issues with that:
* shutting down mysql may take up to an hour until all opened file handles have been closed
* mysqldump’ing all the databases and tables takes several hours
* uptime is mission critical

Tonight I stumbled upon two approaches:

Filesystem Snapshots

I thought of that option before, though never followed that thought till the very end. While searching for other approaches that might seem fit for at least testing them out, I found this small line:
echo "FLUSH TABLES WITH READ LOCK; SYSTEM /path/to/helper/backupscript.sh; UNLOCK TABLES;" | mysql -u <user> -p <password>
(http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html at the third comment at the time of writing of this article)

In our case we could use this line as part of our backup script and instead of „/path/to/helper/backupscript.sh“ we would run a wrapper script to create a snapshot of the underlying LVM.

Maatkit’s mk-parallel-dump

The former maatkit was incorporated into the percona toolkit and the mk-parallel-dump and mk-parallel-restore were dropped. But luckily there are some backups on github. For example: https://github.com/ets/maatkit
There you can find a slightly enhanced version of the latest maatkit.

mk-parallel-dump might be an option for those older database servers, that lack a snapshot-able filesystem.

Disclaimer

Though I did not yet test any of these options myself. As soon as I tested them, I will do a new article on them.

HowTo: build the jenkins vagrant-plugin

At present I am preparing some of the tools helpfull/necessary for continuous integration: jenkins, vagrant, gitlab, jira and puppet.
To make the first two of those work nicely together there exists a jenkins plugin called vagrant-plugin at https://github.com/rtyler/vagrant-plugin , https://github.com/smartlogic/vagrant-plugin and https://github.com/aberrios85/vagrant-plugin
I decided to use the last version, as the original supports only very aged versions of jenkins and vagrant.

This is how the plugin can be build into a hpi file: (validated by hours of trial and error)


# install rvm and jruby in one command
curl -sSL https://get.rvm.io | bash -s stable --ruby=jruby
# activate rvm
source ~/.rvm/scripts/rvm
# get the vagrant-plugin sources
git clone https://github.com/aberrios85/vagrant-plugin.git
cd vagrant-plugin
# install needed gems
bundle install
# build the whole bunch
jpi build

Now you can install the plugin pkg/vagrant.hpi into your jenkins. But pay attention – depending on your webserver configuration you might need to increase settings … for example „client_max_body_size“ in nginx, if you want to use the upload feature of the jenkins web interface.

Continuous Log: Oracle VS Community, Teil 2

Oracle gibt OpenOffice auf.

Zur Pressemitteilung

Dies bestätigt in meinen Augen die hier skizzierte Entwicklung der von Oracle mit SUN aufgekauften OpenSource-Projekte. Viel mehr noch … Oracle scheint sogar bewußt in der Richtung zu agieren, die Projekte von sich weg zu treiben. Über die Hintergründe kann ich aber auch nur spekulieren … Geld spielt aber wahrscheinlich auch eine Rolle.

20 Jahre Linux

Vor 20 Jahren hat Linus Torvalds (damals im zarten Alter von 20 Jahren) zum ersten Mal öffentlich sein kleines, privates Projekt zur Erstellung eines kostenlosen Betriebssystems erwähnt – in einem Beitrag im damals noch sehr angesagten „Usenet“.

Heute – 20 Jahre später – erzählt die Linux Foundation die Geschichte des beeindruckendsten Betriebssystems der Welt:

PyRoom Test (Updated)

Ich schreibe heute mit einem anderen Modell von Text-Editor – er arbeitet im Vollbild und hat fast keine sichtbaren Features. Ziel dahinter ist, dass er so wenig wie möglich ablenkt und man sich dadurch voll aufs schreiben konzentrieren kann.
Die Idee an sich ist sicherlich nichts Neues und es gibt bestimmt eine große Menge an verschiedenen Implementationen. Die von mir gerade getestete Implementation begnügt sich damit, den gesamten Bildschirm ab zu dunkeln und mit grüner Schrift auf schwarzem Hintergrund zu schreiben. Formatierungsoptionen sind bei solchen Programmen in der Regel gar nicht vorhanden.
Ich kenne noch eine andere Implementierung, welche derzeit leider nur für das iPad verfügbar ist. Dort werden auf hellem Hintergrund nur die aktuellen 3-4 Zeilen angezeigt, während ein paar Zeilen darüber und darunter ausgegraut werden. Alles was darüber hinaus geht, wird gar nicht mehr angezeigt. PyRoom Test (Updated) weiterlesen

Continuous Log: Oracle VS Community

Meine private Liste an ehemaligen SUN OpenSource Projekten, welche nach dem Kauf durch Oracle einen groß angelegten Fork gestartet haben und nun losgelöst vom Mutterprojekt weiter wachsen:

  • MySQL => MariaDB
  • OpenSolaris => Illumos, OpenIndiana
  • OpenOffice => LibreOffice
  • Hudson => Jenkins

Noch keine nennenswerten Forks:

  • VirtualBox
  • Java

Für Tipps bin ich immer dankbar (kann meine Augen ja nicht überall haben).

Logstalgia – Gource

Nur ein kurzer Hinweis für die Sysadmins unter euch, die mir nicht bei Twitter folgen – oder es schlicht übersehen haben:

Bin heute auf Logstalgia und Gource aufmerksam gemacht worden:

Logstalgia ist eine OpenGL-Darstellung von Apache2-Access-Logs. Das Projekt findet sich hier: https://code.google.com/p/logstalgia/ – ihr solltet es euch DRINGEND anschauen.

Gource macht sehr ähnliches, allerdings mit Version-Control-Systemen wie GIT, Mercurial und Bazaar (es gibt auch Third-Party-Unterstützung für SVN und CVS). Stattet dem Projekt einen Besuch auf https://code.google.com/p/gource/ ab und schaut euch an, wie der Code aufgebaut ist.

Beide Projekte sind vom neuseeländischen Entwickler Andrew Caudwell (http://www.thealphablenders.com) und stehen unter der GPLv3 zur Verfügung.

Wir leben in interessanten und aufregenden Zeiten

Linux wird besser. Laufend. Gerade im Bereich der Grafik- und Spiele-Unterstützung geht es mit riesen Schritten voran. Hier einige aktuelle Beispiele:

Achja – wo wir gerade dabei sind: schaut euch doch mal Minecraft an. Ein sehr nettes Spiel, welches das Prinzip von Sandbox-Spielen sehr schön verdeutlicht. Die Grafik ist … unzeitgemäß … aber für dieses Spielkonzept vollkommen angemessen.

Was scheinbar noch fehlt sind die großen Studios. Zugegeben, meiner Ansicht nach produzieren die sowieso nur Mist, aber es gibt ja scheinbar eine Menge Menschen die das auch spielen wollen.

Für Linux existieren keine guten Spiele

… und darum wird Linux auch nie so verbreitet wie Windows.“

Während letzteres eventuell stimmen mag (wer kann schon die Zukunft mit Bestimmtheit voraussagen?), wird ersteres immer mehr zu einem urbanen Legende. Abgesehen von vielen OpenSource-Spielen die in den letzten Jahren erschienen sind, drängen auch immer mehr Indy-Spieleentwickler in den Linux-Markt.

Diese Entwicklung beobachte ich mit viel Genugtuung, da abzusehen ist, dass die großen Platzhirsche im Gaming-Geschäft auch irgendwann eventuell nachziehen könnten. Einzelne Versuche in der Richtung gibt es ja immer wieder mal. Ausserdem gibt es schon seit vielen, vielen Jahren Firmen, welche kommerzielle Spiele auf Linux portieren (zB RuneSoft und LinuxGamePublishing).

Dünn gesät waren hingegen die Vertriebskanäle für Linux-Spiele. Indy-Entwickler haben traditionell ihre Spiele selber vertrieben und Bezahlungen beispielsweise über PayPal angenommen. Die Spiele von RuneSoft und LGP werden in Deutschland zB von ixsoft verkauft.

In diese Vertriebslücke versuchen nun neue Projekte einzusteigen:

Samanon ist eines davon. Das Projekt bietet einen Onlineshop für Spiele aller Art – hier findet man folglich nicht nur Spiele für den Linux-Anhänger, auch für Windows und MacOS gibt es hier Spielbares. Auch sind nich alle Spiele für alle Plattformen verfügbar und die Anzahl der Linux-Spiele ist mit drei Stück auch noch SEHR überschaubar, aber hoffen wir, dass sich das ändert (was es bestimmt tut, wenn genug dieser drei Spiele dort gekauft werden).

Djl ist laut eigener Aussage stark von Valve’s Steam beeinflusst und bietet eine Oberfläche zur einfachen Installation von Spielen und Updates für Linux-Anwender. Es erfordert dabei keinerlei Systemverwaltungsrechte, sondern installiert alles notwendige im Heimverzeichnis des Anwenders. Derzeit ist das Repertoir von djl auf OpenSource-Spiele und solche, die man ohne Zugangsbeschränkung herunter laden kann (Free2Play MMORPGs zB), beschränkt. Wenn der Entwickler so denkt wie ich, würde er Features zum Kauf und Mieten von Spielen noch nachträglich einbauen, damit das System auch für kommerzielle Anbieter interessant wird.

Wem noch ein interessantes Projekt in dieser Art auffällt, der möge mich doch bitte darüber in Kenntnis setzen – ich werde dann ein Update nachschieben und auch dieses Vorstellen.