Bewährte Methoden für Amazon RDS - 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.

Bewährte Methoden für Amazon RDS

Erfahren Sie mehr über bewährte Methoden für die Zusammenarbeit mit AmazonRDS. Dieser Abschnitt wird mit neuen bewährten Methoden aktualisiert, sobald diese bekannt sind.

Anmerkung

Allgemeine Empfehlungen für Amazon finden RDS Sie unterEmpfehlungen von Amazon RDS.

RDSGrundlegende Betriebsrichtlinien von Amazon

Im Folgenden finden Sie grundlegende betriebliche Richtlinien, die jeder bei der Zusammenarbeit mit Amazon befolgen sollteRDS. Beachten Sie, dass das Amazon RDS Service Level Agreement vorschreibt, dass Sie die folgenden Richtlinien befolgen:

  • Verwenden Sie Metriken, um Ihren ArbeitsspeicherCPU, Ihre Replikatverzögerung und Ihre Speichernutzung zu überwachen. Sie können Amazon so einrichten CloudWatch , dass Sie benachrichtigt werden, wenn sich die Nutzungsmuster ändern oder wenn Ihre Bereitstellung Kapazitätsgrenzen erreicht. Auf diese Weise können Sie die Systemleistung und Verfügbarkeit aufrechterhalten.

  • Skalieren Sie Ihre DB-Instance, wenn Sie die Grenzen der Speicherkapazität beinahe erreicht haben. Sie sollten etwas Puffer in Speicher und Arbeitsspeicher haben, um unvorhergesehene Nachfragesteigerungen seitens Ihrer Anwendungen bewältigen zu können.

  • Aktivieren Sie automatische Backups und legen Sie das Backup-Fenster so fest, dass es während des täglichen Schreibtiefs stattfindetIOPS. Dann ist eine Sicherung am wenigsten störend für Ihre Datenbanknutzung.

  • Wenn Ihr Datenbank-Workload mehr I/O benötigt, als Sie bereitgestellt haben, ist die Wiederherstellung nach einem Failover oder einem Datenbankfehler langsam. Führen Sie einen der folgenden Schritte aus, um die I/O-Kapazität einer DB-Instance zu steigern:

    • Migrieren Sie zu einer anderen DB-Instance-Klasse mit einer höheren I/O-Kapazität.

    • Wechseln Sie von Magnetspeicher zu Allzweckspeicher oder IOPS Bereitstellungsspeicher, je nachdem, wie stark Sie die Speichererweiterung benötigen. Weitere Informationen zu den verfügbaren Speichertypen finden Sie unter RDSAmazon-Speichertypen.

      Wenn Sie zu Provisioned IOPS Storage wechseln, stellen Sie sicher, dass Sie auch eine DB-Instance-Klasse verwenden, die für Provisioned optimiert ist. IOPS Informationen zu Provisioned IOPS finden Sie unter. Bereitgestellter Speicher IOPS SSD

    • Wenn Sie bereits bereitgestellten IOPS Speicher verwenden, stellen Sie zusätzliche Durchsatzkapazität bereit.

  • Wenn Ihre Client-Anwendung die Domain Name Service (DNS) -Daten Ihrer DB-Instances zwischenspeichert, legen Sie einen Wert time-to-live (TTL) von weniger als 30 Sekunden fest. Die zugrunde liegende IP-Adresse einer DB-Instance kann sich nach einem Failover ändern. Das Zwischenspeichern der DNS Daten über einen längeren Zeitraum kann daher zu Verbindungsausfällen führen. Ihre Anwendung versucht möglicherweise, eine Verbindung zu einer IP-Adresse herzustellen, die nicht mehr in Betrieb ist.

  • Testen Sie den Failover für Ihre DB-Instance, um zu verstehen, wie lange der Vorgang für Ihren besonderen Anwendungsfall dauert. Testen Sie außerdem die Failover-Funktion, um sicherzustellen, dass die Anwendung, mit der auf Ihre DB-Instance zugegriffen wird, nach einem Failover automatisch eine Verbindung mit der neuen DB-Instance herstellen kann.

Empfehlungen für DB-Instances RAM

Eine bewährte Methode von Amazon für die RDS Leistung besteht darin, RAM so viel zuzuweisen, dass sich Ihr Arbeitssatz fast vollständig im Arbeitsspeicher befindet. Der Arbeitssatz umfasst die Daten und Indizes, die häufig auf Ihrer Instance verwendet werden. Je häufiger Sie die DB-Instance verwenden, desto größer wird der Arbeitssatz.

Um festzustellen, ob sich Ihr Arbeitssatz fast vollständig im Arbeitsspeicher befindet, überprüfen Sie die IOPS Read-Metrik (mit Amazon CloudWatch), während die DB-Instance geladen ist. Der Wert von Read IOPS sollte klein und stabil sein. In einigen Fällen RAM führt die Skalierung der DB-Instance-Klasse auf eine Klasse mit mehr Werten zu einem dramatischen Rückgang von ReadIOPS. In diesen Fällen war Ihr Arbeitssatz nicht fast vollständig im Speicher. Fahren Sie mit der Skalierung fort, bis der Lesevorgang nach einem Skalierungsvorgang nicht IOPS mehr dramatisch abnimmt oder der IOPS Lesevorgang auf einen sehr geringen Wert reduziert wird. Informationen zur Überwachung der Metriken einer DB-Instance finden Sie unter Metriken in der RDS Amazon-Konsole anzeigen.

AWS Datenbanktreiber

Wir empfehlen die AWS Treibersuite für Anwendungskonnektivität. Die Treiber wurden so konzipiert, dass sie schnellere Switchover- und Failover-Zeiten sowie Authentifizierung mit unterstützen AWS Secrets Manager, AWS Identity and Access Management (IAM) und Federated Identity. Das Tool AWS Treiber verlassen sich auf die Überwachung des DB-Instance-Status und die Kenntnis der Instance-Topologie, um den neuen Writer zu ermitteln. Dieser Ansatz reduziert die Switchover- und Failover-Zeiten auf einstellige Sekunden, im Vergleich zu mehreren zehn Sekunden bei Open-Source-Treibern.

Mit der Einführung neuer Servicefunktionen ist das Ziel der AWS Die Treibersuite soll über eine integrierte Unterstützung für diese Servicefunktionen verfügen.

Weitere Informationen finden Sie unter Mit den AWS Treibern eine Verbindung zu DB-Instances herstellen.

Verwendung von „Enhanced Monitoring“ (Erweiterte Überwachung) zur Identifizierung von Betriebssystemproblemen

Wenn Enhanced Monitoring aktiviert ist, RDS stellt Amazon Metriken in Echtzeit für das Betriebssystem (OS) bereit, auf dem Ihre DB-Instance läuft. Sie können die Metriken für Ihre DB-Instance über die Konsole anzeigen. Sie können die Enhanced JSON Monitoring-Ausgabe von Amazon CloudWatch Logs auch in einem Überwachungssystem Ihrer Wahl verwenden. Weitere Informationen zu „Enhanced Monitoring“ (Erweiterte Überwachung) finden Sie unter Überwachen von Betriebssystem-Metriken mithilfe von „Enhanced Monitoring“·(Erweiterte·Überwachung).

Verwendung von Metriken zur Identifizierung von Problemen mit der Leistung

Um Leistungsprobleme zu identifizieren, die durch unzureichende Ressourcen und andere häufige Engpässe verursacht werden, können Sie die für Ihre Amazon RDS DB-Instance verfügbaren Metriken überwachen.

Anzeigen von Leistungsmetriken

Sie sollten die Leistungsmetriken regelmäßig überwachen, um die Durchschnitts-, Höchst- und Mindestwerte für eine Vielzahl von Zeitbereichen anzuzeigen. Wenn Sie dies tun, können Sie feststellen, wenn die Leistung nachlässt. Sie können CloudWatch Amazon-Alarme auch für bestimmte Metrik-Schwellenwerte einrichten, sodass Sie benachrichtigt werden, wenn diese erreicht werden.

Um Probleme mit der Leistung zu beheben, müssen Sie die Basisleistung des Systems kennen. Wenn Sie eine DB-Instance einrichten und mit einer typischen Workload ausführen, erfassen Sie die Durchschnitts-, Maximal- und Minimalwerte aller Leistungsmetriken. Führen Sie diesen Vorgang in verschiedenen Intervallen aus (z. B. eine Stunde, 24 Stunden, eine Woche, zwei Wochen). Auf diese Weise erhalten Sie eine Vorstellung davon, was normal ist. Dies hilft, um Vergleichswerte für Betriebsstunden während und außerhalb von Spitzenbelastungen zu erhalten. Sie können diese Informationen anschließend verwenden, um festzustellen, wann die Leistung unter Standardwerte absinkt.

Wenn Sie Multi-AZ-DB-Cluster verwenden, überwachen Sie die Zeitdifferenz zwischen der letzten Transaktion auf der Writer-DB-Instance und der zuletzt angewendeten Transaktion auf einer Reader-DB-Instance. Dieser Unterschied heißt replica lag (Replikatverzögerung). Weitere Informationen finden Sie unter Replikatverzögerung und Multi-AZ-DB-Cluster.

Sie können die kombinierten Performance Insights und CloudWatch Metriken im Performance Insights Insights-Dashboard einsehen und Ihre DB-Instance überwachen. Performance Insights muss für Ihre DB-Instance aktiviert sein, damit diese Ansicht verwendet werden kann. Weitere Informationen zu dieser Überwachungsansicht finden Sie unter Kombinierte Metriken mit dem Performance Insights Insights-Dashboard anzeigen.

Sie können einen Leistungsanalysebericht für einen bestimmten Zeitraum erstellen und sich die ermittelten Erkenntnisse und Empfehlungen zur Lösung der Probleme ansehen. Weitere Informationen finden Sie unter Erstellen eines Leistungsanalyseberichts in Performance Insights.

So können Sie sich die Leistungsmessungen anzeigen
  1. Melden Sie sich an bei AWS Management Console und öffnen Sie die RDS Amazon-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich die Option Databases (Datenbanken) und anschließend eine DB-Instance.

  3. Wählen Sie Monitoring.

    Das Dashboard stellt die Leistungsmetriken bereit. Standardmäßig werden die Metriken der letzten drei Stunden angezeigt.

  4. Verwenden Sie die nummerierten Schaltflächen oben rechts, um durch die zusätzlichen Metriken zu blättern, oder passen Sie die Einstellungen an, um weitere Metriken anzuzeigen.

  5. Wählen Sie eine Leistungsmetrik zur Anpassung des Zeitbereichs, um Daten für andere Tage als den aktuellen Tag anzuzeigen. Sie können die Werte für Statistik, Zeitraum und Intervall ändern, um die angezeigten Informationen anzupassen. Angenommen, Sie möchten beispielsweise die Spitzenwerte für eine Metrik für jeden Tag der letzten zwei Wochen anzeigen. Legen Sie in diesem Fall Statistic (Statistik) auf Maximum, Time Range (Zeitbereich) auf Last 2 Weeks (Letzte 2 Wochen) und Period (Zeitraum) auf Day (Tag) fest.

Sie können Leistungskennzahlen auch mit dem CLI oder anzeigenAPI. Weitere Informationen finden Sie unter Metriken in der RDS Amazon-Konsole anzeigen.

Um einen CloudWatch Alarm einzustellen
  1. Melden Sie sich an bei AWS Management Console und öffnen Sie die RDS Amazon-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich die Option Databases (Datenbanken) und anschließend eine DB-Instance.

  3. Wählen Sie Logs & Events (Protokolle und Ereignisse).

  4. Wählen Sie im Bereich CloudWatch Alarme die Option Alarm erstellen aus.

    Dialogfeld „Create Alarm (Alarm erstellen)“
  5. Wählen Sie für Benachrichtigungen senden die Option Ja und für Benachrichtigungen senden an die Option Neue E-Mail oder SMS Thema aus.

  6. Geben Sie unter Topic name (Themaname) einen Namen für die Benachrichtigung und unter With these recipients (Mit diesen Empfängern) eine kommagetrennte Liste von E-Mail-Adressen und Telefonnummern ein.

  7. Wählen Sie für Metric (Metrik) die einzustellende Alarmstatistik und Metrik.

  8. Geben Sie für Threshold (Schwellenwert) an, ob die Metrik größer, kleiner oder gleich dem Schwellenwert sein muss, und geben Sie den Schwellenwert an.

  9. Wählen Sie unter Period (Zeitraum) den Auswertungszeitraum für den Alarm aus. Wählen Sie für consecutive period(s) of (aufeinanderfolgende Periode(n) von) den Zeitraum aus, in dem der Schwellenwert erreicht worden sein muss, um den Alarm auszulösen.

  10. Geben Sie unter Alarmname einen aussagekräftigen Namen für Ihren Alarm ein.

  11. Wählen Sie Create Alarm aus.

Der Alarm wird im Bereich CloudWatch Alarme angezeigt.

Auswerten von Leistungsmetriken

Eine DB-Instance besitzt eine Reihe unterschiedlicher Kategorien von Metriken. Die Entscheidung, welche Werte akzeptabel sind, ist von der Metrik abhängig.

CPU
  • CPUAuslastung — Prozentsatz der genutzten Computerverarbeitungskapazität.

Arbeitsspeicher
  • Freier Speicher — Wie viel RAM ist auf der DB-Instance verfügbar, in Byte. Die rote Linie auf der Registerkarte „Überwachung“ ist für CPU „Arbeitsspeicher“ und „Speichermetriken“ mit 75% gekennzeichnet. Wenn der Speicherverbrauch der Instance diese Linie häufig überschreitet, bedeutet dies, dass Sie die Workload prüfen sollten oder die Instance aktualisieren müssen.

  • Swap-Nutzung — Wie viel Swap-Speicherplatz von der DB-Instance verwendet wird, in Byte.

Festplattenkapazität
  • Freier Speicherplatz – Größe des Datenträgerbereichs, der zurzeit in der DB-Instance nicht verwendet wird (in Megabytes).

Eingabe-/Ausgabe-Operationen
  • LesenIOPS, Schreiben IOPS — Die durchschnittliche Anzahl von Lese- oder Schreibvorgängen auf der Festplatte pro Sekunde.

  • Leselatenz, Schreiblatenz – die durchschnittliche Zeit, die eine Lese- oder Schreiboperation benötigt (in Millisekunden).

  • Lesedurchsatz, Schreibdurchsatz – die durchschnittliche Anzahl der Megabytes, die pro Sekunde aus dem Datenträger gelesen oder zum Datenträger geschrieben werden.

  • Warteschlangentiefe – die Anzahl der I/O-Operationen, die darauf warten, zum Datenträger geschrieben oder aus dem Datenträger gelesen zu werden.

Netzwerkdatenverkehr
  • Netzwerkeingangsdurchsatz, Netzwerkübertragungsdurchsatz – die Rate des Netzwerkdatenverkehrs zur und von der DB-Instance (in Bytes pro Sekunde).

Datenbankverbindungen
  • Datenbankverbindungen – die Anzahl der Client-Sitzungen, die mit der DB-Instance verbunden sind.

Detailliertere einzelne Beschreibungen der verfügbaren Leistungsmetriken finden Sie unter Überwachung von Amazon RDS Amazon mit Amazon CloudWatch.

Allgemein ausgedrückt, sind die zulässigen Werte für Leistungsmetriken davon abhängig, wie die Basisleistung aussieht und welche Aufgaben von Ihrer Anwendung ausgeführt werden. Prüfen Sie, ob dauerhafte oder tendenzielle Abweichungen von Ihrer Ausgangsbasis vorliegen. Im Folgenden finden Sie ein paar Hinweise zu bestimmten Metriken:

  • Hoch CPU oder RAM Verbrauch — Hohe Werte für CPU oder RAM Verbrauch könnten angemessen sein. Dies kann zum Beispiel der Fall sein, wenn sie der Zielsetzung Ihrer Anwendung entsprechen (z. B. in Bezug auf Durchsatz oder Gleichzeitigkeit) und erwartet werden.

  • Nutzung des Datenträgerplatzes – Überprüfen Sie die Nutzung des Datenträgerplatzes, wenn konsistent 85 Prozent oder mehr des gesamten Datenträgerplatzes belegt werden. Prüfen Sie, ob Daten in der Instance gelöscht oder auf einem anderen System archiviert werden können, um Speicherplatz freizugeben.

  • Netzwerkdatenverkehr – Wenden Sie sich an Ihren Systemadministrator, um zu erfahren, welcher Durchsatz für Ihr Domänennetzwerk und Ihre Internetverbindung erwartet wird. Überprüfen Sie den Netzwerkdatenverkehr, wenn der Durchsatz dauerhaft unter dem erwarteten Wert liegt.

  • Datenbankverbindungen – Ziehen Sie eine Einschränkung der Datenbankverbindungen in Betracht, wenn bei einer großen Anzahl von Benutzerverbindungen eine Abnahme der Instance-Leistung und der Reaktionszeit zu erkennen ist. Die optimale Anzahl der Benutzerverbindungen für Ihre DB-Instance ist von der Instance-Klasse und der Komplexität der Operationen abhängig, die ausgeführt werden. Wenn Sie die Anzahl der Datenbankverbindungen bestimmen möchten, ordnen Sie Ihre DB-Instance einer Parametergruppe zu. Legen Sie in dieser Gruppe den Parameter User Connections auf einen anderen Wert als 0 (unbegrenzt) fest. Sie können eine entweder eine vorhandene Parametergruppe verwenden oder eine neue erstellen. Weitere Informationen finden Sie unter Parametergruppen für Amazon RDS.

  • IOPSMetriken — Die erwarteten Werte für IOPS Messwerte hängen von der Festplattenspezifikation und der Serverkonfiguration ab. Verwenden Sie also Ihren Basiswert, um herauszufinden, was typisch ist. Prüfen Sie, ob dauerhafte Abweichungen von den Werten Ihrer Ausgangsbasis vorliegen. Um eine optimale IOPS Leistung zu erzielen, sollten Sie sicherstellen, dass Ihr typisches Arbeitssatz in den Arbeitsspeicher passt, um Lese- und Schreibvorgänge zu minimieren.

Bei Problemen mit Leistungsmetriken sollten Sie zunächst die am häufigsten verwendeten und kostspieligsten Abfragen anpassen, um die Leistung zu verbessern. Optimieren Sie sie, um festzustellen, ob dies den Druck auf die Systemressourcen verringert. Weitere Informationen finden Sie unter Optimieren von Abfragen.

Wenn Ihre Abfragen optimiert sind und ein Problem weiterhin besteht, sollten Sie ein Upgrade Ihres RDS Amazon-Kontos in Betracht ziehen. Sie könnten ein Upgrade auf eine Version durchführen, die mehr Ressourcen (CPU,, FestplattenspeicherRAM, Netzwerkbandbreite, I/O-Kapazität) enthält, die mit dem Problem zusammenhängen.

Optimieren von Abfragen

Eine der besten Möglichkeiten zur Verbesserung der Leistung von DB-Instances besteht darin, die am häufigsten verwendeten und ressourcenintensivsten Abfragen zu optimieren. Hier optimieren Sie sie, damit sie kostengünstiger ausgeführt werden können. Verwenden Sie die folgenden Ressourcen, um Informationen zur Verbesserung von Abfragen zu erhalten:

Bewährte Methoden für die Arbeit mit My SQL

Sowohl die Tabellengröße als auch die Anzahl der Tabellen in einer Meine SQL Datenbank können sich auf die Leistung auswirken.

Tabellengröße

In der Regel bestimmen Betriebssystembeschränkungen in Bezug auf Dateigrößen die effektive maximale Tabellengröße für Meine SQL Datenbanken. Daher werden die Grenzwerte normalerweise nicht durch interne SQL Einschränkungen von My bestimmt.

Vermeiden Sie auf einer My SQL DB-Instance, dass die Tabellen in Ihrer Datenbank zu groß werden. Obwohl das allgemeine Speicherlimit 64 TiB beträgt, beschränken bereitgestellte Speicherlimits die maximale Größe einer Meine SQL Tabellendatei auf 16 TiB. Partitionieren Sie Ihre großen Tabellen so, dass die Dateigrößen deutlich unter der 16-TiB-Grenze liegen. Dieser Ansatz kann auch Leistung und Wiederherstellungszeit verbessern. Weitere Informationen finden Sie unter Meine SQL Dateigrößenbeschränkungen bei Amazon RDS.

Sehr große Tabellen (größer als 100 GB) können sich negativ auf die Leistung sowohl beim Lesen als auch beim Schreiben auswirken (einschließlich DML Anweisungen und insbesondere DDL Anweisungen). Indizes für große Tabellen können die Leistung bestimmter Tabellen erheblich verbessern, sie können jedoch auch die Leistung von Anweisungen beeinträchtigen. DML DDLAnweisungen, wie z. B.ALTER TABLE, können bei großen Tabellen erheblich langsamer sein, da diese Operationen in einigen Fällen eine Tabelle vollständig neu erstellen können. Diese DDL Anweisungen können die Tabellen für die Dauer des Vorgangs sperren.

Wie viel Speicher My SQL für Lese- und Schreibvorgänge benötigt, hängt von den Tabellen ab, die an den Vorgängen beteiligt sind. Es hat sich bewährt, mindestens so viel zur Verfügung RAM zu haben, dass die Indizes der aktiv verwendeten Tabellen gespeichert werden können. Verwenden Sie die folgende Abfrage, um die zehn größten Tabellen und Indizes in einer Datenbank zu finden:

select table_schema, TABLE_NAME, dat, idx from (SELECT table_schema, TABLE_NAME, ( data_length ) / 1024 / 1024 as dat, ( index_length ) / 1024 / 1024 as idx FROM information_schema.TABLES order by 3 desc ) a order by 3 desc limit 10;

Anzahl der Tabellen

Das zugrunde liegende Dateisystem hat möglicherweise eine Begrenzung für die Anzahl der Dateien, die Tabellen darstellen. My SQL hat jedoch keine Begrenzung der Anzahl der Tabellen. Trotzdem kann die Gesamtzahl der Tabellen in der My SQL InnoDB-Speicher-Engine zur Leistungsverschlechterung beitragen, unabhängig von der Größe dieser Tabellen. Um die Auswirkungen auf das Betriebssystem zu begrenzen, können Sie die Tabellen auf mehrere Datenbanken in derselben My SQL DB-Instance aufteilen. Dies könnte die Anzahl der Dateien in einem Verzeichnis begrenzen, löst jedoch nicht das Gesamtproblem.

Wenn es aufgrund einer großen Anzahl von Tabellen (mehr als 10.000) zu Leistungseinbußen kommt, liegt dies daran, dass ich mit Speicherdateien SQL arbeite, einschließlich deren Öffnen und Schließen. Um dieses Problem zu lösen, können Sie die Größe der Parameter table_open_cache und table_definition_cache erhöhen. Wenn Sie jedoch die Werte dieser Parameter erhöhen, kann sich die Menge des von My SQL verwendeten Speichers erheblich erhöhen, und möglicherweise wird sogar der gesamte verfügbare Speicher beansprucht. Weitere Informationen finden Sie unter So SQL öffnet und schließt My Tables in der SQL Dokumentation Meine.

Darüber hinaus können zu viele Tabellen die SQL Startzeit von My Startup erheblich beeinflussen. Sowohl ein fehlerfreies Herunterfahren und Neustarten als auch eine Wiederherstellung nach einem Absturz können beeinträchtigt werden, insbesondere in Versionen vor My SQL 8.0.

Wir empfehlen, insgesamt weniger als 10 000 Tabellen in allen Datenbanken einer DB-Instance zu speichern. Einen Anwendungsfall mit einer großen Anzahl von Tabellen in einer Datenbank vom Typ Meine SQL Datenbank finden Sie unter One Million Tables in My SQL 8.0.

Speicher-Engine

Die point-in-time Wiederherstellungs- und Snapshot-Wiederherstellungsfunktionen von Amazon RDS for My SQL erfordern eine Speicher-Engine, die nach einem Absturz wiederhergestellt werden kann. Diese Funktionen werden nur für die InnoDB-Speicher-Engine unterstützt. My SQL unterstützt zwar mehrere Speicher-Engines mit unterschiedlichen Funktionen, aber nicht alle sind für die Wiederherstellung nach einem Absturz und die Haltbarkeit von Daten optimiert. Die ISAM Speicher-Engine My unterstützt beispielsweise keine zuverlässige Wiederherstellung nach einem Absturz und kann verhindern, dass eine point-in-time Wiederherstellung oder Snapshot-Wiederherstellung wie vorgesehen funktioniert. Dies kann dazu führen, dass Daten verloren gehen oder beschädigt werden, wenn My nach einem Absturz neu gestartet SQL wird.

InnoDB ist die empfohlene und unterstützte Speicher-Engine für My SQL DB-Instances bei AmazonRDS. InnoDB-Instances können auch zu Aurora migriert werden, während Meine ISAM Instances nicht migriert werden können. My ISAM schneidet jedoch besser ab als InnoDB, wenn Sie eine intensive Volltextsuche benötigen. Wenn Sie My immer noch ISAM mit Amazon verwendenRDS, Automatisierte Backups mit nicht unterstützten My SQL Storage Engines kann es in bestimmten Szenarien für die Snapshot-Wiederherstellung hilfreich sein, die unter beschriebenen Schritte zu befolgen.

Wenn Sie bestehende ISAM My-Tabellen in InnoDB-Tabellen konvertieren möchten, können Sie den in der Dokumentation Meine Tabellen von My ISAM nach InnoDB konvertieren beschriebenen Prozess verwenden. SQL My ISAM und InnoDB haben unterschiedliche Stärken und Schwächen, daher sollten Sie die Auswirkungen dieser Umstellung auf Ihre Anwendungen vollständig abwägen, bevor Sie dies tun.

Darüber hinaus wird Federated Storage Engine derzeit nicht von Amazon RDS for My SQL unterstützt.

Best Practices für die Arbeit mit MariaDB

Sowohl Tabellengrößen als auch die Anzahl der Tabellen in einer MariaDB-Datenbank können sich auf die Performance auswirken.

Tabellengröße

In der Regel bestimmen Betriebssystemeinschränkungen für Dateigrößen die effektive maximale Tabellengröße für MariaDB-Datenbanken. Daher werden die Grenzwerte normalerweise nicht durch interne MariaDB-Einschränkungen festgelegt.

Vermeiden Sie es in MariaDB-Instances, dass Tabellen in Ihrer Datenbank zu groß werden. Obwohl die allgemeine Speichergrenze 64 TiB beträgt, beschränken die Begrenzungen für den bereitgestellten Speicher die maximale Größe einer MariaDB-Tabellendatei auf 16 TiB. Partitionieren Sie Ihre großen Tabellen so, dass die Dateigrößen deutlich unter der 16-TiB-Grenze liegen. Dieser Ansatz kann auch Leistung und Wiederherstellungszeit verbessern.

Sehr große Tabellen (größer als 100 GB) können sich negativ auf die Leistung sowohl beim Lesen als auch beim Schreiben auswirken (einschließlich DML Anweisungen und insbesondere DDL Anweisungen). Indizes für große Tabellen können die Leistung bestimmter Tabellen erheblich verbessern, sie können jedoch auch die Leistung von Anweisungen beeinträchtigen. DML DDLAnweisungen, wie z. B.ALTER TABLE, können bei großen Tabellen erheblich langsamer sein, da diese Operationen in einigen Fällen eine Tabelle vollständig neu erstellen können. Diese DDL Anweisungen können die Tabellen für die Dauer des Vorgangs sperren.

Die Menge an Speicher, die MariaDB für Lese- und Schreibvorgänge benötigt, hängt von den an den Operationen beteiligten Tabellen ab. Es hat sich bewährt, mindestens genug zu habenRAM, um die Indizes der aktiv verwendeten Tabellen zu speichern. Verwenden Sie die folgende Abfrage, um die zehn größten Tabellen und Indizes in einer Datenbank zu finden:

select table_schema, TABLE_NAME, dat, idx from (SELECT table_schema, TABLE_NAME, ( data_length ) / 1024 / 1024 as dat, ( index_length ) / 1024 / 1024 as idx FROM information_schema.TABLES order by 3 desc ) a order by 3 desc limit 10;

Anzahl der Tabellen

Das zugrunde liegende Dateisystem hat möglicherweise eine Begrenzung für die Anzahl der Dateien, die Tabellen darstellen. MariaDB hat jedoch keine Begrenzung für die Anzahl der Tabellen. Trotzdem kann die Gesamtzahl der Tabellen in der InnoDB-Speicher-Engine von MariaDB unabhängig von der Größe dieser Tabellen zu Leistungseinbußen beitragen. Um die Auswirkungen auf das Betriebssystem zu begrenzen, können Sie die Tabellen auf mehrere Datenbanken in derselben MariaDB-Instance aufteilen. Dies könnte die Anzahl der Dateien in einem Verzeichnis begrenzen, löst jedoch nicht das Gesamtproblem.

Wenn es aufgrund einer großen Anzahl von Tabellen (mehr als 10 000) zu Leistungseinbußen kommt, wird dies dadurch verursacht, dass MariaDB mit Speicherdateien arbeitet. Diese Arbeit umfasst das Öffnen und Schließen von Speicherdateien durch MariaDB. Um dieses Problem zu lösen, können Sie die Größe der Parameter table_open_cache und table_definition_cache erhöhen. Eine Erhöhung der Werte dieser Parameter könnte jedoch die Menge des von MariaDB verwendeten Speichers erheblich erhöhen. Es könnte sogar der gesamte verfügbare Speicher belegt werden. Weitere Informationen finden Sie unter Optimizing table_open_cache (table_open_cache optimieren) in der MariaDB-Dokumentation.

Darüber hinaus können zu viele Tabellen die Startzeit von MariaDB erheblich beeinflussen. Sowohl ein sauberes Herunterfahren und Neustart als auch eine Absturzwiederherstellung können beeinträchtigt werden. Wir empfehlen, insgesamt weniger als zehntausend Tabellen in allen Datenbanken einer DB-Instance zu haben.

Speicher-Engine

Die point-in-time Wiederherstellungs- und Snapshot-Wiederherstellungsfunktionen von Amazon RDS für MariaDB erfordern eine Speicher-Engine, die nach einem Absturz wiederhergestellt werden kann. MariaDB unterstützt zwar mehrere Speicher-Engines mit unterschiedlichen Fähigkeiten und Kapazitäten, jedoch sind nicht alle von ihnen für die Wiederherstellung nach Ausfall und für Datenbeständigkeit optimiert. Aria ist zwar ein absturzsicherer Ersatz für My, kann aber dennoch verhindernISAM, dass eine Wiederherstellung oder Snapshot-Wiederherstellung wie vorgesehen funktioniert. point-in-time Dies kann dazu führen, dass Daten verloren gehen oder beschädigt werden, wenn MariaDB nach einem Absturz erneut gestartet wird. InnoDB ist die empfohlene und unterstützte Speicher-Engine für MariaDB-DB-Instances auf Amazon. RDS Wenn Sie sich dennoch dafür entscheiden, Aria mit Amazon zu verwendenRDS, Automatisierte Backups mit nicht unterstützten MariaDB-Speicher-Engines kann das Befolgen der unter beschriebenen Schritte in bestimmten Szenarien für die Snapshot-Wiederherstellung hilfreich sein.

Wenn Sie bestehende ISAM My-Tabellen in InnoDB-Tabellen konvertieren möchten, können Sie den in Converting Tables from My ISAM to InnoDB beschriebenen Prozess in der MariaDB-Dokumentation verwenden. My ISAM und InnoDB haben unterschiedliche Stärken und Schwächen, daher sollten Sie die Auswirkungen dieser Umstellung auf Ihre Anwendungen vollständig abwägen, bevor Sie dies tun.

Bewährte Methoden für die Arbeit mit Oracle

Informationen zu bewährten Methoden für die Arbeit mit Amazon RDS for Oracle finden Sie unter Bewährte Methoden für die Ausführung von Oracle-Datenbanken auf Amazon Web Services.

EIN JAHR 2020 AWS Der virtuelle Workshop beinhaltete eine Präsentation über den Betrieb von Oracle-Produktionsdatenbanken auf AmazonRDS. Das Video der Präsentation ist hier verfügbar:

Bewährte Methoden für die Arbeit mit Postgre SQL

Einer von zwei wichtigen Bereichen, in denen Sie die Leistung von Postgre verbessern könnenSQL, ist das Laden von Daten in eine DB-Instance. RDS Ein weiterer Grund ist die Verwendung der SQL Postgre-Autovakuumfunktion. In den folgenden Abschnitten werden einige der empfohlenen Verfahren für diese Bereiche beschrieben.

Informationen darüber, wie Amazon andere gängige SQL DBA Postgre-Aufgaben RDS implementiert, finden Sie unterHäufige DBA-Aufgaben für Amazon RDS for PostgreSQL.

Daten in eine Postgre-DB-Instance laden SQL

Wenn Sie Daten in eine Amazon RDS for SQL Postgre-DB-Instance laden, ändern Sie Ihre DB-Instance-Einstellungen und Ihre DB-Parametergruppenwerte. Legen Sie diese fest, um den effizientesten Import von Daten in Ihre DB-Instance zu ermöglichen.

Ändern Sie die Einstellungen für Ihre DB-Instance wie folgt:

  • Deaktivieren Sie die DB-Instance-Sicherungen (Sicherungsaufbewahrung auf 0 setzen).

  • Deaktivieren Sie Multi-AZ.

Modifizieren Sie die DB-Parametergruppe so, dass sie die folgenden Einstellungen enthält. Testen Sie außerdem die Parametereinstellungen, um die effizientesten Einstellungen für Ihre DB-Instance zu ermitteln.

  • Erhöhen Sie den Wert des Parameters maintenance_work_mem. Weitere Informationen zu den SQL Postgre-Ressourcenverbrauchsparametern finden Sie in der SQLPostgre-Dokumentation.

  • Erhöhen Sie den Wert der checkpoint_timeout Parameter max_wal_size und, um die Anzahl der Schreibvorgänge in das Write-Ahead-Log () -Protokoll zu reduzieren. WAL

  • Parameter synchronous_commit deaktivieren.

  • Deaktivieren Sie den Autovacuum-Parameter PostgreSQL.

  • Stellen Sie sicher, dass sämtliche Tabellen, die Sie importieren, protokolliert sind. In nicht protokollierten Tabellen gespeicherte Daten können bei einem Failover verloren gehen. Weitere Informationen finden Sie unter. CREATETABLEUNLOGGED

Verwenden Sie den Befehl pg_dump -Fc (komprimiert) oder den Befehl pg_restore -j (parallel) mit diesen Einstellungen.

Nachdem der Ladevorgang abgeschlossen ist, setzen Sie Ihre DB-Instance und DB-Parameter auf ihre normalen Einstellungen zurück.

Arbeiten mit der SQL Postgre-Autovakuumfunktion

Wir empfehlen Ihnen dringend, die Autovacuum-Funktion für SQL Postgre-Datenbanken zu verwenden, um die Integrität Ihrer Postgre-DB-Instance aufrechtzuerhalten. SQL Autovacuum automatisiert die Ausführung des ANALYZE Befehls VACUUM und Die Verwendung von Autovacuum ist von Postgre vorgeschriebenSQL, nicht von Amazon vorgeschriebenRDS, und ihre Verwendung ist entscheidend für eine gute Leistung. Die Funktion ist standardmäßig für alle neuen Amazon RDS for SQL Postgre-DB-Instances aktiviert, und die zugehörigen Konfigurationsparameter sind standardmäßig entsprechend festgelegt.

Ihr Datenbankadministrator muss diese Wartungsoperation kennen und verstehen. Die SQL Postgre-Dokumentation zu Autovacuum finden Sie unter The Autovacuum-Daemon.

Die Selbstbereinigung ist keine „ressourcenlose“ Operation, sondern wird im Hintergrund ausgeführt und gibt Benutzeroperationen soweit möglich Vorrang. Bei Aktivierung prüft die Selbstbereinigung auf Tabellen mit einer großen Zahl von aktualisierten oder gelöschten Tupeln. Sie schützt darüber hinaus vor dem Verlust sehr alter Daten aufgrund von Transaktions-ID-Wraparounds. Weitere Informationen finden Sie unter Verhindern von Transaktions-ID-Wraparound-Fehlern.

Die Selbstbereinigung sollte nicht als Operation mit hohem Overhead betrachtet werden, die reduziert werden kann, um eine bessere Leistung zu erzielen. Im Gegenteil; die Leistung von Tabellen mit sehr häufigen Aktualisierungs- und Löschvorgängen wird mit der Zeit schnell abnehmen, wenn keine Selbstbereinigung ausgeführt wird.

Wichtig

Die fehlende Ausführung von Selbstbereinigungen kann dazu führen, dass letzten Endes eine Ausfallzeit erforderlich ist, um eine VACUUM-Operation auszuführen, die sehr viel größere Auswirkungen hat. In einigen Fällen kann es vorkommen, dass eine SQL DB-Instance RDS für Postgre aufgrund einer zu konservativen Verwendung von Autovacuum nicht mehr verfügbar ist. In diesen Fällen wird die SQL Postgre-Datenbank heruntergefahren, um sich selbst zu schützen. Zu diesem Zeitpunkt RDS muss Amazon ein single-user-mode vollständiges Vakuum direkt auf der DB-Instance durchführen. Diese vollständige Bereinigung kann zu einem Ausfall von mehreren Stunden führen. Daher wird dringend empfohlen, die standardmäßig aktivierte Selbstbereinigung nicht zu deaktivieren.

Die Selbstbereinigungsparameter legen fest, wann und wie die harte Selbstbereinigung ausgeführt wird. Die Parameterautovacuum_vacuum_threshold und autovacuum_vacuum_scale_factor legen fest, wann die Selbstbereinigung ausgeführt wird. Die Parameter autovacuum_max_workers, autovacuum_nap_time, autovacuum_cost_limit und autovacuum_cost_delay legen fest, wie die harte Selbstbereinigung ausgeführt wird. Weitere Informationen zu Autovacuum, wann es ausgeführt wird und welche Parameter erforderlich sind, finden Sie in der Postgre-Dokumentation unter Routine-Vacuuming. SQL

Die folgende Abfrage zeigt die Anzahl der „toten“ Tupel in einer Tabelle mit dem Namen table1:

SELECT relname, n_dead_tup, last_vacuum, last_autovacuum FROM pg_catalog.pg_stat_all_tables WHERE n_dead_tup > 0 and relname = 'table1';

Die Ergebnisse der Abfrage sehen ähnlich wie folgt aus:

relname | n_dead_tup | last_vacuum | last_autovacuum ---------+------------+-------------+----------------- tasks | 81430522 | | (1 row)

Video mit SQL bewährten Methoden von Amazon RDS für Postgre

Das Jahr 2020 AWS Die re:Invent-Konferenz beinhaltete eine Präsentation über neue Funktionen und bewährte Methoden für die Arbeit mit Postgre SQL auf Amazon. RDS Das Video der Präsentation ist hier verfügbar:

Bewährte Methoden für die Arbeit mit Server SQL

Zu den bewährten Methoden für eine Multi-AZ-Bereitstellung mit einer SQL Server-DB-Instance gehören die folgenden:

  • Verwenden Sie Amazon RDS DB-Ereignisse, um Failovers zu überwachen. Beispielsweise können Sie per Textnachricht oder E-Mail benachrichtigt werden, wenn ein Failover für eine DB-Instance ausgeführt wird. Weitere Informationen zu RDS Amazon-Veranstaltungen finden Sie unterMit RDS Amazon-Event-Benachrichtigungen arbeiten.

  • Wenn Ihre Anwendung DNS Werte zwischenspeichert, legen Sie time to live (TTL) auf weniger als 30 Sekunden fest. Diese Einstellung TTL ist eine bewährte Methode für den Fall eines Failovers. Bei einem Failover kann sich die IP-Adresse ändern und der zwischengespeicherte Wert wird möglicherweise nicht mehr verwendet.

  • Es wird empfohlen, die folgenden Modi nicht zu aktivieren, da sie die Transaktionsprotokollierung deaktivieren, die für Multi-AZ erforderlich ist:

    • Einfacher Wiederherstellungsmodus

    • Offlinemodus

    • Schreibgeschützter Modus

  • Führen Sie Tests durch, um zu ermitteln, wie lange Ihre DB-Instance für einen Failover-Vorgang benötigt. Die Failover-Zeit kann unterschiedlich sein, abhängig von der Datenbank, der Instance-Klasse und des Speichertyps, die oder den Sie verwenden. Sie sollten auch die Fähigkeit Ihrer Anwendung testen, bei einem Failover weiter ausgeführt zu werden.

  • Führen Sie die folgenden Schritte aus, um die Failover-Zeit zu verkürzen:

    • Stellen Sie sicher, dass Ihnen ausreichend Provisioned für Ihren IOPS Workload zugewiesen wurde. Ein unzureichender I/O kann zu längeren Failover-Zeiten führen. Die Datenbankwiederherstellung erfordert I/O.

    • Verwenden Sie kleinere Transaktionen. Die Datenbankwiederherstellung ist von Transaktionen abhängig. Wenn Sie daher große Transaktionen in mehrere kleinere Transaktionen aufteilen können, sollte die Failover-Zeit verkürzt werden.

  • Berücksichtigen Sie, dass es während eines Failovers zu erhöhten Latenzen kommt. Im Rahmen des Failover-Prozesses repliziert Amazon Ihre Daten RDS automatisch auf eine neue Standby-Instance. Diese Replikation bedeutet, dass neue Daten an zwei verschiedene DB-Instances übergeben werden. Daher kann es eine gewisse Latenz geben, bis die Standby-DB-Instance mit der neuen primäre DB-Instance aufgeschlossen hat.

  • Stellen Sie Ihre Anwendungen in allen Availability Zones bereit. Wenn eine Availability Zone ausfällt, sind die Anwendungen in den anderen Availability Zones weiterhin verfügbar.

Denken Sie bei der Arbeit mit einer Multi-AZ-Bereitstellung von SQL Server daran, dass Amazon Replikate für alle SQL Server-Datenbanken auf Ihrer Instance RDS erstellt. Wenn Sie nicht möchten, dass bestimmte Datenbanken sekundäre Replicas aufweisen, richten Sie eine separate DB-Instance ein, die für diese Datenbanken keine Multi-AZ verwendet.

Video mit bewährten Methoden RDS für Amazon for SQL Server

Das Jahr 2019 AWS Die re:Invent-Konferenz beinhaltete eine Präsentation über neue Funktionen und bewährte Methoden für die Arbeit mit SQL Server auf Amazon. RDS Das Video der Präsentation ist hier verfügbar:

Arbeiten mit DB-Parametergruppen

Es wird empfohlen, DB-Parametergruppenänderungen stets zuerst in einer Test-DB-Instance durchzuführen, bevor Sie diese Parametergruppenänderungen auf Ihre Produktions-DB-Instances anwenden. Wenn die DB-Modulparameter in einer DB-Parametergruppe falsch festgelegt werden, kann dies unbeabsichtigte nachteilige Auswirkungen haben, einschließlich verminderter Leistung und Systeminstabilität. Gehen Sie stets vorsichtig vor, wenn Sie DB-Modulparameter ändern, und sichern Sie Ihre DB-Instance, bevor Sie eine DB-Parametergruppe ändern.

Informationen zum Sichern Ihrer DB-Instance finden Sie unter Daten sichern, wiederherstellen und exportieren.

Bewährte Methoden zur Automatisierung der DB-Instance-Erstellung

Es ist eine RDS bewährte Methode von Amazon, eine DB-Instance mit der bevorzugten Nebenversion der Datenbank-Engine zu erstellen. Sie können das AWS CLI RDSAPI, Amazon oder AWS CloudFormation um die Erstellung von DB-Instances zu automatisieren. Wenn Sie diese Methoden verwenden, können Sie nur die Hauptversion angeben und Amazon erstellt RDS automatisch die Instance mit der bevorzugten Nebenversion. Wenn beispielsweise Postgre SQL 12.5 die bevorzugte Nebenversion ist und Sie Version 12 mit angebencreate-db-instance, wird die DB-Instance Version 12.5 sein.

Um die bevorzugte Nebenversion zu ermitteln, können Sie den Befehl describe-db-engine-versions mit der Option --default-only ausführen; siehe folgendes Beispiel.

aws rds describe-db-engine-versions --default-only --engine postgres { "DBEngineVersions": [ { "Engine": "postgres", "EngineVersion": "12.5", "DBParameterGroupFamily": "postgres12", "DBEngineDescription": "PostgreSQL", "DBEngineVersionDescription": "PostgreSQL 12.5-R1", ...some output truncated... } ] }

Informationen zum programmgesteuerten Erstellen von DB-Instanzen finden Sie in den folgenden Ressourcen:

Video zu den RDS neuen Funktionen von Amazon

Das Jahr 2023 AWS Die re:Invent-Konferenz beinhaltete eine Präsentation über neue RDS Amazon-Funktionen. Das Video der Präsentation ist hier verfügbar: