Bekannte Probleme und Einschränkungen für Amazon RDS for My SQL - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bekannte Probleme und Einschränkungen für Amazon RDS for My SQL

Bekannte Probleme und Einschränkungen bei der Arbeit mit Amazon RDS for My SQL lauten wie folgt.

Reserviertes Wort InnoDB

InnoDBist ein reserviertes Wort RDS für MySQL. Sie können diesen Namen nicht für eine Meine SQL Datenbank verwenden.

Verhalten bei vollem Speicherplatz für Amazon for My RDS SQL

Wenn der Speicherplatz für eine My SQL DB-Instance voll ist, kann es zu Inkonsistenzen bei den Metadaten, nicht übereinstimmenden Wörterbüchern und verwaisten Tabellen kommen. Um diese Probleme zu vermeiden, stoppt Amazon RDS automatisch eine DB-Instance, die den storage-full Status erreicht.

Eine My SQL DB-Instance erreicht den storage-full Status in den folgenden Fällen:

  • Die DB-Instance verfügt über weniger als 20.000 MiB Speicher, und der verfügbare Speicher erreicht 200 MiB oder weniger.

  • Die DB-Instance verfügt über mehr als 102.400 MiB Speicher, und der verfügbare Speicher erreicht 1024 MiB oder weniger.

  • Die DB-Instance verfügt über zwischen 20.000 MiB und 102.400 MiB Speicher und verfügt über weniger als 1% des verfügbaren Speichers.

Nachdem Amazon eine DB-Instance automatisch RDS beendet hat, weil sie den storage-full Status erreicht hat, können Sie sie immer noch ändern. Um die DB-Instance neu zu starten, führen Sie mindestens einen der folgenden Schritte aus:

Nachdem Sie eine dieser Änderungen vorgenommen haben, wird die DB-Instance automatisch neu gestartet. Informationen zum Ändern einer DB-Instance finden Sie unter Ändern einer Amazon RDS DB-Instance.

Inkonsistente Größe des InnoDB-Buffer-Pools

Für My SQL 5.7 gibt es derzeit einen Fehler in der Art und Weise, wie die Größe des InnoDB-Pufferpools verwaltet wird. Mein SQL 5.7 könnte den Wert des innodb_buffer_pool_size Parameters auf einen großen Wert anpassen, was dazu führen kann, dass der InnoDB-Pufferpool zu groß wird und zu viel Speicher verbraucht. Dieser Effekt kann dazu führen, dass die My SQL Database-Engine nicht mehr läuft oder dass sie nicht gestartet werden kann. Dieses Problem ist häufiger bei DB-Instance-Klassen vorhanden, die weniger Arbeitsspeicher zur Verfügung haben.

Setzen Sie den Wert des Parameters innodb_buffer_pool_size auf ein Vielfaches des Produkts der Parameterwerte innodb_buffer_pool_instances und innodb_buffer_pool_chunk_size, um das Problem zu beheben. Sie könnten beispielsweise den Parameterwert innodb_buffer_pool_size auf das achtfache des Produkts der Parameterwerte innodb_buffer_pool_instances und innodb_buffer_pool_chunk_size setzen, wie im folgenden Beispiel gezeigt.

innodb_buffer_pool_chunk_size = 536870912 innodb_buffer_pool_instances = 4 innodb_buffer_pool_size = (536870912 * 4) * 8 = 17179869184

Einzelheiten zu diesem My SQL 5.7-Bug finden Sie unter https://bugs.mysql.com/bug.php? id=79379 in der Dokumentation „Meine“. SQL

Index-Merge-Optimierung zeigt falsche Ergebnisse an

Abfragen, die die Optimierung der Indexzusammenführung verwenden, geben aufgrund eines Fehlers im Meine SQL Abfrageoptimierer, der in My 5.5.37 eingeführt wurde, möglicherweise falsche Ergebnisse zurück. SQL Wenn Sie eine Abfrage für eine Tabelle mit mehreren Indizes ausführen, scannt der Optimierer die Zeilenbereiche anhand der Indizes, führt die Ergebnisse jedoch nicht korrekt zusammen. Weitere Informationen zum Fehler beim Abfrageoptimierer finden Sie unter http://bugs.mysql.com/bug.php?id=72745 und http://bugs.mysql.com/bug.php?id=68194 in der Datenbank Meine Fehler. SQL

Denken Sie beispielsweise an eine Abfrage für eine Tabelle mit zwei Indizes, wobei die Suchmuster auf die indizierten Spalten verweisen.

SELECT * FROM table1 WHERE indexed_col1 = 'value1' AND indexed_col2 = 'value2';

In diesem Fall durchsucht die Suchmaschine beide Indizes. Jedoch werden die zusammengeführten Informationen aufgrund des Programmfehlers unrichtig sein.

Um dieses Problem zu beheben, können Sie eine der folgenden Aktionen ausführen:

  • Setzen Sie den optimizer_switch Parameter index_merge=off in der DB-Parametergruppe für Ihre My SQL DB-Instance auf. Weitere Informationen über das Einstellen von Parametern in DB-Parametergruppen finden Sie unter Parametergruppen für Amazon RDS.

  • Führen Sie ein Upgrade Ihrer My SQL DB-Instance auf Meine SQL Version 5.7 oder 8.0 durch. Weitere Informationen finden Sie unter Upgrades der RDS for My SQL DB-Engine.

  • Wenn Sie Ihre Instance nicht upgraden oder den Parameter optimizer_switch nicht ändern können, können Sie alternativ einen Index für die Abfrage explizit bestimmen, beispielsweise so:

    SELECT * FROM table1 USE INDEX covering_index WHERE indexed_col1 = 'value1' AND indexed_col2 = 'value2';

Weitere Informationen finden Sie in der SQL Dokumentation Meine Dokumentation unter Optimierung der Indexzusammenführung.

Meine SQL Parameterausnahmen für Amazon RDS DB-Instances

Einige SQL My-Parameter erfordern besondere Überlegungen, wenn sie mit einer Amazon RDS DB-Instance verwendet werden.

lower_case_table_names

Da Amazon ein Dateisystem RDS verwendet, bei dem die Groß- und Kleinschreibung beachtet wird, wird das Setzen des Werts des lower_case_table_names Serverparameters auf 2 (Namen, die wie angegeben gespeichert, aber in Kleinbuchstaben verglichen werden) nicht unterstützt. Die folgenden Werte werden für Amazon RDS for My SQL DB-Instances unterstützt:

  • 0 (Namen werden wie angegeben gespeichert und Vergleiche unterscheiden Groß- und Kleinschreibung) wird RDS für alle SQL Versionen von My unterstützt.

  • 1 (Namen, die in Kleinbuchstaben gespeichert werden und bei Vergleichen wird nicht zwischen Groß- und Kleinschreibung unterschieden) wird RDS für Meine SQL Versionen 5.7 und Version 8.0.28 und höher 8.0 unterstützt.

Legen Sie den Parameter lower_case_table_names in einer benutzerdefinierten DB-Parametergruppe fest, bevor Sie eine DB-Instance erstellen. Stellen Sie dann die benutzerdefinierte DB-Parametergruppe ein, wenn Sie die DB-Instance erstellen.

Wenn eine Parametergruppe einer My SQL DB-Instance mit einer niedrigeren Version als 8.0 zugeordnet ist, empfehlen wir, dass Sie den lower_case_table_names Parameter in der Parametergruppe nicht ändern. Eine Änderung könnte zu Inkonsistenzen bei point-in-time Wiederherstellungssicherungen und Read Replica-DB-Instances führen.

Wenn eine Parametergruppe mit einer My SQL DB-Instance der Version 8.0 verknüpft ist, können Sie den lower_case_table_names Parameter in der Parametergruppe nicht ändern.

Lesereplikate sollten immer den selben lower_case_table_names-Parameterwert wie die Quell-DB-Instance verwenden.

long_query_time

Sie können den long_query_time Parameter auf einen Fließkommawert setzen, sodass Sie langsame Abfragen mit einer Auflösung von Mikrosekunden im Protokoll Meine SQL langsame Abfrage protokollieren können. Sie können einen Wert von z. B. 0,1 Sekunden einstellen (100 Millisekunden), um das Debuggen bei langsamen Transaktionen, die weniger als eine Sekunde dauern, zu erleichtern.

Meine SQL Dateigrößenbeschränkungen bei Amazon RDS

Für My SQL DB-Instances beschränkt das maximale Speicherlimit die Größe einer Tabelle auf eine maximale Größe von 16 TB, wenn file-per-table InnoDB-Tablespaces verwendet werden. Dieses Limit beschränkt auch den Tabellenraum des Systems auf maximal 16 TB. file-per-table InnoDB-Tablespaces (mit Tabellen in jeweils einem eigenen Tablespace) sind standardmäßig für My DB-Instances festgelegt. SQL

Anmerkung

Einige existierende DB-Instances haben eine Untergrenze. Zum Beispiel haben Meine SQL DB-Instances, die vor April 2014 erstellt wurden, eine Datei- und Tabellengrößenbeschränkung von 2 TB. Dieses Dateilimit von 2 TB gilt auch für DB-Instances oder Lesereplikate, die aus DB-Snapshots erstellt wurden, die vor April 2014 gemacht wurden, unabhängig davon wann die DB-Instance erstellt wurde.

Die Verwendung von file-per-table InnoDB-Tablespaces hat je nach Ihrer Anwendung Vor- und Nachteile. Informationen zum besten Ansatz für Ihre Anwendung finden Sie unter ile-per-table F-Tablespaces in der Dokumentation My. SQL

Es wird nicht empfohlen, die Tabellen bis zur maximal möglichen Größe anwachsen zu lassen. Generell hat es sich bewährt, Daten in kleinere Tabellen zu partitionieren, wodurch sich die Leistung und die Wiederherstellungszeiten verbessern.

Eine Möglichkeit, mit der Sie eine große Tabelle in kleinere Tabellen aufteilen können, ist die Partitionierung. Die Partitionierung verteilt Teile Ihrer großen Tabelle in separate Dateien auf der Basis von Regeln, die Sie angeben. Wenn Sie beispielsweise Transaktionen nach Datum speichern, können Sie Partitionierungsregeln erstellen, mit denen ältere Transaktionen in separate Dateien partitioniert werden. Anschließend können Sie regelmäßig die historischen Transaktionsdaten archivieren, die für Ihre Anwendung nicht ständig verfügbar sein müssen. Weitere Informationen finden Sie unter Partitionierung in der Dokumentation My. SQL

Da es keine einzelne Systemtabelle oder Ansicht gibt, in der die Größe aller Tabellen und des Tabellenraums des InnoDB-Systems angegeben ist, müssen Sie mehrere Tabellen abfragen, um die Größe der Tabellenräume zu ermitteln.

So ermitteln Sie die Größe des Tabellenraums des InnoDB-Systems und des Tabellenraums des Datenwörterbuchs
  • Verwenden Sie den folgenden SQL Befehl, um festzustellen, ob Ihre Tablespaces zu groß sind und sich für eine Partitionierung eignen.

    Anmerkung

    Der Tablespace für das Datenwörterbuch ist spezifisch für My 8.0. SQL

    select FILE_NAME,TABLESPACE_NAME, ROUND(((TOTAL_EXTENTS*EXTENT_SIZE) /1024/1024/1024), 2) as "File Size (GB)" from information_schema.FILES where tablespace_name in ('mysql','innodb_system');
Um die Größe von InnoDB-Benutzertabellen außerhalb des InnoDB-System-Tablespace zu bestimmen (für My SQL 5.7-Versionen)
  • Verwenden Sie den folgenden SQL Befehl, um festzustellen, ob eine Ihrer Tabellen zu groß ist und für eine Partitionierung in Frage kommt.

    SELECT SPACE,NAME,ROUND((ALLOCATED_SIZE/1024/1024/1024), 2) as "Tablespace Size (GB)" FROM information_schema.INNODB_SYS_TABLESPACES ORDER BY 3 DESC;
Um die Größe von InnoDB-Benutzertabellen außerhalb des InnoDB-System-Tablespace zu bestimmen (für My SQL 8.0-Versionen)
  • Verwenden Sie den folgenden SQL Befehl, um festzustellen, ob eine Ihrer Tabellen zu groß ist und für eine Partitionierung in Frage kommt.

    SELECT SPACE,NAME,ROUND((ALLOCATED_SIZE/1024/1024/1024), 2) as "Tablespace Size (GB)" FROM information_schema.INNODB_TABLESPACES ORDER BY 3 DESC;
So ermitteln Sie die Größe von Nicht-InnoDB-Benutzertabellen
  • Verwenden Sie den folgenden SQL Befehl, um festzustellen, ob eine Ihrer Nicht-InnoDB-Benutzertabellen zu groß ist.

    SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH+DATA_FREE) / 1024 / 1024/ 1024), 2) As "Approximate size (GB)" FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema') and ENGINE<>'InnoDB';
Um file-per-table InnoDB-Tablespaces zu aktivieren
  • Setzen Sie den Parameter innodb_file_per_table in der Parametergruppe für die DB-Instance auf 1.

Um file-per-table InnoDB-Tablespaces zu deaktivieren
  • Setzen Sie den Parameter innodb_file_per_table in der Parametergruppe für die DB-Instance auf 0.

Weitere Informationen über das Updaten von Parametergruppen finden Sie unter Parametergruppen für Amazon RDS.

Wenn Sie file-per-table InnoDB-Tablespaces aktiviert oder deaktiviert haben, können Sie einen ALTER TABLE Befehl ausführen, um eine Tabelle vom globalen Tablespace in ihren eigenen Tablespace oder von ihrem eigenen Tablespace in den globalen Tablespace zu verschieben, wie im folgenden Beispiel gezeigt:

ALTER TABLE table_name TABLESPACE=innodb_file_per_table;

Mein Keyring-Plugin wird nicht unterstützt SQL

Derzeit unterstützt Amazon RDS for My SQL das My SQL keyring_aws Amazon Web Services Keyring Plugin nicht.

Benutzerdefinierte Ports

Amazon RDS blockiert Verbindungen zum benutzerdefinierten Port 33060 für die My SQL Engine. Wählen Sie einen anderen Port für Ihre My SQL Engine.

Einschränkungen meiner SQL gespeicherten Prozeduren

Die mysql.rds_kill und mysql.rds_kill_query gespeicherten Prozeduren können keine Sitzungen oder Abfragen beenden, deren Eigentümer SQL Benutzer sind und deren Benutzernamen länger als 16 Zeichen sind, und zwar in den folgenden Versionen RDS für Meine SQL Versionen:

  • 8.0.32 und niedrigere 8-Versionen

  • 5.7.41 und niedrigere 5.7-Versionen

GTIDbasierte Replikation mit einer externen Quellinstanz

Amazon RDS unterstützt die Replikation auf der Grundlage globaler Transaktions-Identifikatoren (GTIDs) von einer externen My SQL Instance in eine Amazon RDS for My SQL DB-Instance, für die PURGED während der Konfiguration GTID _ gesetzt werden muss. Diese Funktionalität wird jedoch nur RDS für My SQL 8.0.37 und höhere Versionen unterstützt.

Mein SQL Standard-Authentifizierungs-Plugin

RDSfür meine SQL Version 8.0.34 und höher verwende ich das mysql_native_password Plugin. Sie können die default_authentication_plugin-Einstellung nicht ändern.

Innodb_buffer_pool_size überschreiben

Bei Mikro- oder kleinen DB-Instance-Klassen kann der Standardwert für den innodb_buffer_pool_size Parameter von dem Wert abweichen, der beim Ausführen des folgenden Befehls zurückgegeben wird:

mysql> SELECT @@innodb_buffer_pool_size;

Dieser Unterschied kann auftreten, wenn Amazon den Standardwert im Rahmen der Verwaltung der DB-Instance-Klassen überschreiben RDS muss. Bei Bedarf können Sie den Standardwert überschreiben und ihn auf einen Wert setzen, den Ihre DB-Instance-Klasse unterstützt. Um einen gültigen Wert zu ermitteln, addieren Sie die Speichernutzung und den gesamten auf Ihrer DB-Instance verfügbaren Speicher. Weitere Informationen finden Sie unter RDSAmazon-Instance-Typen.

Wenn Ihre DB-Instance nur 4 GB Arbeitsspeicher hat, können Sie sie nicht innodb_buffer_pool_size auf 8 GB festlegen, aber Sie können sie möglicherweise auf 3 GB setzen, je nachdem, wie viel Speicher Sie für andere Parameter zugewiesen haben.

Wenn der von Ihnen eingegebene Wert zu groß ist, RDS senkt Amazon den Wert auf die folgenden Grenzwerte:

  • Micro-DB-Instance-Klassen: 256 MB

  • db.t4g.micro DB-Instance-Klassen: 128 MB