Amazon RDS: Relationale Datenbanken auf AWS nutzen AWS-Einsteigerworkshop - Teil 10

AWS bietet mit Amazon RDS einen voll verwalteten Service für relationale Datanbanken in der Cloud.

AWS Relational Database Service (RDS) ist ein ver­walteter Dienst, mit dem Kunden rela­tionale Daten­banken einfach in der Cloud nutzen können. Zur Aus­wahl stehen die markt­gängigen Pro­dukte. AWS kümmert sich um das Patch-Management, das regel­mäßige Backup und um Failover in eine andere Availabilty Zone.

Die Vielfalt von Speicher­technologien in AWS ist enorm, die Auswahl hängt vom Workload ab. Sieht man von Elastic Block Store (EBS) ab, der nur innerhalb von EC2-Instanzen genutzt wird, etwa als Installations­ziel für Betriebs­systeme oder für Laufzeitdaten, dann stehen für Anwendungs- und Betriebsdaten diverse Datenbank­technologien sowie der Objekt­speicher AWS S3 bereit.

Datenbanken in EC2-Instanzen

Grundsätzlich kann jeder Nutzer nach Belieben relationale Datenbanken (MySQL, Postgres, SQL-Server, Oracle oder NoSQL-Datenbanken (Cassandra, MongoDB, CouchDB) auf EC2-Instanzen selbst betreiben.

Dies ist aber meist nicht empfehlens­wert, weil wichtige Anwendungs­daten dann wieder auf EC2-Instanzen und damit auf EBS-Volumes lagern. Dies würde nicht nur vollständig andere Sicherheits- und Backup-Strategien erfordern, sondern in komplexen mehr­schichtigen Web-Anwendungen auch die Web-Server selbst unnötig belasten.

Diese sollten sich jedoch auf das Ausliefern von Web-Seiten bzw. auf das Annehmen von Jobs beschränken und nicht auf das Ausführen einer Geschäftslogik (Middleware) oder das Betreiben von Datenbanken (Backends).

AWS RDS

RDS-Datenbanken basieren faktisch jedoch auch auf EC2-Instanzen und damit indirekt auf EBS-Volumes. RDS-EC2-Instanzen (DB-Instances) tauchen aber nicht in der Instanzliste des EC2-Dashboard auf, sondern nur in jener des RDS-Dashboards.

Das RDS-Dashboard mit der Instanz-Liste.

Unter AWS lassen sich die SQL-Datenbanken (MariaDB/MySQL, PostgresQL, Oracle, MS SQL Server und Oracle betreiben, bei. Bedarf auch mit Bring your own License (BYOL).

Verwaltete relationale Datenbanken in AWS sind mti RDS schnell erstellt.

Der Nutzer muss sich dort um viele Aspekte nicht mehr explizit kümmern. Als Beispiel sei hier nur der Datenbank-Instanzspeicher erwähnt. RDS-Instanzen für MySQL, MariaDB, PostgreSQL, Oracle und Microsoft SQL Server verwenden EBS-Volumes als Datenbank- und Log-Speicher.

Abhängig von der Größe der Datenmenge verteilt Amazon RDS diese automatisch via Striping auf mehrere EBS-Volumes, um die IOPS-Leistung zu verbessern.

Vorteile von RDS gegenüber Datenbanken auf EC2

Die Vorteile bzw. der Unterschied zum Installieren und Betreiben einer relationalen Datenbank auf EC2 sind auch sonst immens. 

Nutzer müssen sich nicht um Datenbank­instanzen selbst kümmern, das Pflegen und Patchen des Betriebs­systems in den der DB-Instanzen sowie das Einspielen von Major- und Minor-Updates für die Datenbank selbst übernimmt AWS.

Auf Wunsch erstellt RDS automatisch regelmäßig Backups in Wartungs­fenstern, die der Nutzer konfigurieren kann. Hinzu kommt die Möglichkeit, jederzeit Snapshots der kompletten DB-Instanzen in S3 zu speichern.

Wartungsfenster für Backups und Patching lassen sich einfach angeben.

Bei einem Hardware-Ausfall ersetzt Amazon RDS automatisch die Daten­verarbeitungs­instanz, welche die Grundlage der Bereitstellung bildet. Außerdem gilt wie bei EC2, dass die EBS-Volumes selbst innerhalb der Availability Zone (AZ) mehrfach repliziert werden.

Zur Erhörung der Verfügbarkeit kann der Nutzer mit dem von AWS bereitgestellten Feature Multi-AZ mit nur einem Mausklick einen synchronen Standby-Spiegel in einer zweiten Availability Zone erstellen. Ein Failover beim Ausfall der primären DB-Instanz oder AZ findet dann automatisch statt. Dies macht sich RDS auch beim Einspielen von Patches für die primäre DB-Instanz zunutze und minimiert damit deren Downtime. Auch beim vertikalen Skalieren, also dem Offline-Nehmen der primären Instanz, um diese durch einen größeren (EC2-DB)-Instanztyp oder schnelleren Instanz­speicher zu ersetzen, vermeidet Multi-AZ die prinzipiell erforderliche Downtime durch Failover auf das Standby-Replikat.

Zur Erhöhung des Lesedurchsatzes lässt sich zudem das in vielen DB-Engines verfügbare Read-Replica-Feature nutzen. Es erlaubt je nach Datenbank bis zu 5 asynchrone Replikate (15 bei AWS Aurora), die durch den parallelen Read-Zugriff den Lesedurchsatz erhöhen.

Unabhängig von einer quasi-horizontalen Skalierung der Lese­kapazität durch Read Replicas kann RDS den verwendeten Instanz­speicher ohne Downtime der Datenbank auf Wunsch auch automatisch vergrößern, wenn man den Instanz­speichertyp SSD mit Provisioned IOPS verwendet. Der Speicher von relationalen Datenbanken, die AWS verwaltetet, kann je nach Instanztyp (vertikal skalieren geht immer) auf bis zu 30000 IOPS erzielen. Sind die Anforderungen und Transaktions­volumina deutlich höher, muss man nach einer geeigneten NoSQL-Datenbank Ausschau halten.

Leider ist es eine essentielle Eigenschaft von relationalen Datenbanken, dass deren Performance nicht nur vom Workload (OLTP, LTP, Analytics), sondern vor allem von der Art und Qualität der verwendeten Speichergeräte abhängt. Zur Verbesserung der Sicherheit erlaubt RDS auf einfache Weise das Verschlüsseln der Datenbanken sowie auf Wunsch das Verwenden von IAM-Nutzern und -Gruppen anstelle von Konten des DB-internen User-Managements. Dafür richtet es auch ein entsprechendes transparentes Mapping ein.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.