Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Warum verwendet meine Amazon RDS für MySQL DB-Instance mehr Speicher als ich erwartet habe?
Ich möchte wissen, warum meine Amazon Relational Database Service (Amazon RDS) für MySQL-DB-Instance mehr Speicherplatz benötigt als ich erwartet habe. Ich möchte auch den Festplattenspeicher optimieren.
Lösung
Um den verfügbaren Speicherplatz für eine Amazon RDS-DB-Instance zu überwachen, kannst du die Amazon CloudWatch FreeStorageSpace-Metrik verwenden. Die FreeStorageSpace-Metrik zeigt jedoch nicht an, was Speicherplatz in der DB-Instance verwendet. Verwende die folgenden Methoden, um festzustellen, was den Speicherplatz verwendet und Speicherplatz zurückzugewinnen.
Führe OPTIMIZE TABLE aus
Tabellen verwenden nur Speicherplatz, der nicht aktiv genutzt wird. Amazon RDS weist den Tabellen jedoch weiterhin Speicherplatz zu. Wenn du innodb_file_per_table aktivierst, kannst du den Befehl OPTIMIZE TABLE ausführen, um den Speicherplatz zurückzugewinnen. Weitere Informationen findest du unter Anweisung OPTIMIZE TABLE auf der MySQL-Website.
Du kannst OPTIMIZE TABLE für InnoDB-, MyISAM- und ARCHIVE-Tabellen verwenden. TABELLE OPTIMIEREN funktioniert, wenn du die Tabelle gemäß der Amazon RDS-Standardkonfigurationseinstellung innodb_file_per_table in einem separaten Tablespace erstellst. Weitere Informationen findest du unter File-per-Table-Tablespaces auf der MySQL-Website.
Amazon RDS akzeptiert den Befehl OPTIMIZE TABLE, führt aber stattdessen den Befehl ALTER TABLE...FORCE aus. In diesem Fall erhältst du eine Warnmeldung, die der folgenden ähnelt:
„Die Tabelle unterstützt die Optimierung nicht, sondern führt stattdessen neu erstellen + analysieren.“
Aktualisiere die Statistiken und führe dann die folgende Abfrage information\ _schema.tables aus, um die Speicherauslastung auf der Grundlage der Statistiken abzuschätzen:
SELECT table_name, data_length, max_data_length, index_length, data_free FROM information_schema.tables WHERE table_schema='schema_name' ;
Hinweis: Füge in der vorherigen Abfrage die Werte für den Anwendungsfall hinzu.
Die Spalte data_free zeigt die Menge an freiem Speicherplatz, die einer Tabelle zugewiesen ist, die nicht aktiv genutzt wird.
Reduziere den Speicherplatz in Anwendungstabellen
Um zu sehen, wie viel Speicherplatz die Anwendungstabellen auf der RDS MySQL-DB-Instance verwenden, führe die folgende Abfrage aus:
SELECT TABLESPACE_NAME, ROUND(DATA_FREE/EXTENT_SIZE,0) FREE_DATA_MB, FREE_EXTENTS FREE_EXTENTS_MB, TOTAL_EXTENTS TOTAL_EXTENTS_MB FROM INFORMATION_SCHEMA.FILES;
Führe die folgende Abfrage aus, um die größte Anwendungstabelle auf der RDS MySQL-DB-Instance zu finden:
SELECT TABLESPACE_NAME, ROUND(DATA_FREE/EXTENT_SIZE,0) FREE_DATA_MB, FREE_EXTENTS FREE_EXTENTS_MB, TOTAL_EXTENTS TOTAL_EXTENTS_MB FROM INFORMATION_SCHEMA.FILES ORDER BY TOTAL_EXTENTS_MB DESC;
Hinweis: Wenn eine Datenbank Tabellen mit Spalten variabler Länge enthält, die länger als 768 Byte sind, kannst du den einzelnen Speicherplatz, den die Datenbank und die Tabelle verwenden, nicht berechnen. Diese Einschränkung umfasst die Befehle BLOB, TEXT, VARCHAR und VARBINARY.
Speicher für binäre Protokolle reduzieren
Wenn du einer Amazon RDS-Instance eine Lesereplikate hinzufügst, belegt das binäre Protokoll der Quell-Instance zusätzlichen Speicherplatz. Um zu bestimmen, wie viel Speicherplatz das binäre Protokoll auf der Quell-Instance verwendet, überprüfe die CloudWatch-Metrik BinLogDiskUsage. Wenn das binäre Protokoll zunehmend Speicherplatz beansprucht, musst du möglicherweise die Lesereplikate synchronisieren.
Reduziere oder deaktiviere die Speicherung von allgemeinen Protokollen und langsamen Abfrageprotokollen
Wenn du die Protokollparameter General und Slow Query deaktivierst, beginnt die Instance, die Protokolle und Back-ups der Protokolle zu speichern. Informationen zur Rotation der Dateien und zur Steuerung der Festplattennutzung findest du unter mysql.rds_rotate_general_log und mysql.rds_rotate_slow_log.
Hinweis: Wenn du keine Problembehandlung durchführst, empfiehlt es sich, die allgemeinen und langsamen Abfrageprotokolle zu deaktivieren.
Verwaltung oder Reduzierung der Tablespace-Größe des InnoDB-Systems
Der System-Tablespace beginnt mit 10 MB Speicherplatz und enthält das InnoDB-Datenwörterbuch und Undo-Speicherplatz. Nachdem du den Speicherplatz zugewiesen hast, ist die Datei mindestens 10 MB groß und kann mehr verfügbaren Speicherplatz verwenden.
Standardmäßig setzt Amazon RDS innodb_file_per_table auf 1, sodass die Datenbank Daten für jeden Tablespace in einer eigenen.ibd-Datei speichert. Um wiederverwendbaren Speicherplatz für verwandte Tabellen wiederherzustellen, verwende OPTIMIZE TABLE, um die Größe jeder Tabellen-Tablespace-Datei zu ändern. Oder du kannst eine Tabelle wegassen.
Wenn du innodb_file_per_table auf 0 setzt, weist Amazon RDS alle Tabellen dem System-Tablespace zu. Wenn du Tabellen oder Indizes löschst oder Daten aus zugewiesenen Tabellen im System löschst oder kürzt, markiert der Tablespace den Speicherplatz als wiederverwendbar. innodb_file_per_table gibt jedoch nicht den Speicherplatz für das Dateisystem frei.
Du kannst den System-Tablespace in der Instannce, in der er sich befindet, nicht verkleinern. Exportiere stattdessen die Daten der aktuellen Datenbank und importiere die Daten dann in eine neue Instance. Um Ausfallzeiten zu reduzieren, konfiguriere die neue MySQL-Instance als Replikat der Amazon RDS-Quell-Instance. Nachdem du das Replikat mit der Amazon RDS-Quell-Instance synchronisiert, wechsle zur neuen Instance.
Hinweis: Wenn du aus einem Snapshot wiederherstellst oder ein Lesereplikat erstellst, stelle keinen Speicherplatz aus dem System-Tablespace wieder her. Beide Methoden verwenden einen Snapshot des Speichervolumes der Quell-Instance, das den System-Tablespace enthält.
Ähnliche Informationen
Amazon RDS-DB-Instance hat nur noch wenig Speicherplatz
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor einem Jahr