Die Datenbank in der Cloud: Amazon RDS

120323-0003Stammleser werden es mitbekommen haben: Zur Zeit habe ich einige Probleme mit meinem Webserver. Zunächst wollte der Apache nicht so, nun steigt gelegentlich der MySQL Server aus. Das Problem ist sind natürlich die Hardwareressourcen in Form von Arbeitsspeicher.

Der nicht-technisch interessierte Leser kann jetzt an dieser Stelle aussteigen…

Was liegt da näher als einfach den Webserver und die Datenbank auf zwei verschiedenen Servern laufen zu lassen. Momentan werben ja viele Anbieter damit, dass man seine Daten in die Wolke schieben kann und nur das zahlt was man auch wirklich nutzt. Das klang doch wunderbar und so versuchte ich das “mal eben schnell” zu machen. Zumindest versprach mir das die Werbung von Amazon RDS:

Amazon Relational Database Service (Amazon RDS) ist ein Web-Service zum einfachen Einrichten, Betreiben und Skalieren einer relationalen Datenbank in der Cloud. Dieser Dienst stellt kosteneffiziente und individuell anpassbare Kapazitäten zur Verfügung und erledigt gleichzeitig zeitraubende Datenbank-Verwaltungsaufgaben, sodass Sie sich stärker auf Ihre Anwendungen und Ihr Unternehmen konzentrieren können.
Amazon RDS bietet Ihnen Zugriff auf den Funktionsumfang einer vertrauten MySQL- oder Oracle-Datenbank.

Auf die Preise habe ich erst einmal nicht geschaut und mich einfach registriert, meine Kreditkartendaten angegeben und per Mausklick eine MySQL 5.5 DB mit 5GB Größe und 7GB RAM erstellt. Das dauerte in der Tat keine 5 Minuten. Aber was nun? Wie bekomme ich meine existierende Datenbank ins Amazon Datacenter? Wie heißt überhaupt der Servername? Alles ein wenig rätselhaft.

rds-modify-db-parameter-group mygroupname --parameters="name=max_allowed_packet, value=104857600, method=immediate"

Einen MySQL Import Guide habe ich per Google Suche gefunden:

http://aws.amazon.com/articles/2933

Dort wird für Datenmengen kleiner als 1GB direktes Piping empfohlen:

mysqldump acme | mysql --host=hostname --user=username --password acme

Und für alles weitere das Tool mysqlimport was meines Erachtens nur in den seltensten Fällen sinnvoll ist – denn wann importiert man auf Tabellenbasis.

Den Servernamen habe ich mittlerweile auch gut versteckt in der AWS Management Konsole gefunden und so versuchte ich mich am Import durch die Pipe, der aber nicht anstarten wollte. Also der nahm ich den Umweg über eine Exportdatei und importierte sie dann manuell:

mysql -h wvamatest.c5qdgorl4ijh.eu-west-1.rds.amazonaws.com -uwvamatest –pPasswort wvamatest < test.sql

Aber auch dort die gleiche Fehlermeldung:

ERROR 2006 (HY000) at line 754: MySQL server has gone away

Meine DB hat eine Größe von über 1GB und es sind einige längere Datensätze enthalten – der Parameter max_allowed_packet war der Grund für diese Fehlermeldung. Nachdem ich ihn temporär von der Command Line auf 100M gesetzt habe, lief der Import:

rds-modify-db-parameter-group mygroupname –parameters=”name=max_allowed_packet, value=104857600, method=immediate”

Wobei es selbst für mich als alten Oracle DBA ein Krampf war diese tollen RDS Tools zu installieren um diesen Parameter überhaupt ändern zu können. Hier gibt es eine nette Anleitung dazu.

Da hat Amazon schon ein sehr hübsches Kontrollcenter inklusive Parameterübersicht und man kann sie dort nicht mal ändern. Das sollte dringend angepasst werden.

Nach dem Import habe ich dann mal schnell in der Config.php von Vbulletin (meinem Forensystem) die Datenbank geändert und schon lief das System in einem irischen Rechenzentrum. Die Geschwindigkeit enttäuschte mich auf den ersten Blick – der zweite Blick auf den Kontostand enttäuschte mich noch mehr, denn ich sollte 0,45 US$ pro Stunde zahlen. Die Preise kann man zwar durch eine Art Laufzeitvertrag rapide minimieren, dennoch erwarte ich für das Geld mehr Bumms im System.

120323-0002

Nutzt Ihr privat oder beruflich solche flexiblen Clouddienste? Wie sind Eure Erfahrungen damit?

Comments (0)

Kommentar verfassen