Auf dieser Seite werden allgemeine Best Practices vorgestellt, mit denen Sie die Leistung, Zuverlässigkeit und Verfügbarkeit von AlloyDB for PostgreSQL verbessern können. Diese Seite richtet sich an Datenbankadministratoren und Entwickler, die bereits mit AlloyDB und PostgreSQL vertraut sind.
Instanzkonfiguration und -verwaltung
Verwenden Sie AlloyDB-Tools, um die Datenbanknutzung und den Datenbankstatus zu überwachen.
Betriebsrichtlinien einhalten
Konfigurieren Sie ein Wartungsfenster für Ihre primäre Instanz.
Lesepoolinstanzen hinzufügen, um Lesezugriffe auszulagern
Replikationsverzögerung verwalten
Starten Sie keinen neuen Verwaltungsvorgang, bevor der letzte Vorgang abgeschlossen ist.
Konfigurieren Sie ein ausreichendes Speicherkontingent für kritische Datenbankwartungen.
Verhindern Sie eine Überlastung der CPU.
Vermeiden Sie eine Erschöpfung des Arbeitsspeichers.
Achten Sie darauf, dass Ihre Instanz optimale Transaktions-IDs hat.
AlloyDB-Tools zur Überwachung der Datenbanknutzung und des Datenbankstatus verwenden
In der folgenden Tabelle finden Sie Informationen zu AlloyDB-Tools, mit denen Sie die Datenbanknutzung, den Status und die Leistung im Blick behalten können.
AlloyDB-Tool | Beschreibung |
---|---|
Der Bericht „Leistungs-Snapshot“ | Hier werden Snapshots von Systemmesswerten zwischen zwei verschiedenen Zeitpunkten verglichen. |
Query Insights | Hilft Ihnen, Probleme bei der Abfrageleistung in AlloyDB-Datenbanken zu erkennen, zu diagnostizieren und zu verhindern. Es bietet intuitives Self-Service-Monitoring sowie Diagnoseinformationen, die über die Erkennung hinausgehen, sodass Sie die Ursache von Leistungsproblemen ermitteln können. |
Systemstatistiken | Hier können Sie Datenbankressourcen und ‑messwerte wie die Anzahl aktiver Knoten, die CPU-Auslastung, Spitzenverbindungen, Protokollfehler, Transaktionen pro Sekunde und die maximale Replikationsverzögerung überwachen. |
Betriebsrichtlinien einhalten
Beachten Sie die Betriebsrichtlinien, damit Ihre Instanzen vom AlloyDB for PostgreSQL-SLA abgedeckt sind.
Wartungsfenster für die primäre Instanz konfigurieren
Konfigurieren Sie für die primäre Instanz ein Wartungsfenster, in dem betriebsunterbrechende Updates erfolgen können. Weitere Informationen finden Sie unter Wartungszeiten aufrufen und festlegen.
Lesepoolinstanzen hinzufügen, um Lesezugriffe auszulagern
Fügen Sie für leselastige Arbeitslasten Lesepoolinstanzen hinzu, um den Lesetraffic von der primären Instanz zu verlagern.
Konfigurieren Sie einen oder mehrere Lesepools für jede Datenbank in der Instanz, um das Caching zu verbessern.
Sie können zusätzliche Knoten pro Pool hinzufügen, um das automatische Lastausgleich und die Hochverfügbarkeit zu ermöglichen.
Replikationsverzögerung verwalten
In AlloyDB wurden mehrere Verbesserungen vorgenommen, um die Replikationsverzögerung zu verringern. Es kann jedoch Situationen geben, in denen die Protokollwiedergabe blockiert ist oder nicht Schritt halten kann, was zu einer erhöhten Replikationsverzögerung führen kann.
Wenn die Größe Ihrer primären VM beispielsweise viel größer als die Größe des Leserpoolknotens ist, kann die primäre VM bei hoher Schreiblast Protokolleinträge schneller generieren, als die Leserknoten sie wiedergeben können. Dies gilt insbesondere, wenn gleichzeitig eine hohe Leselast auf den Leserknoten ausgeführt wird. In diesem Fall kann es hilfreich sein, die Größe des Leseknotens zu erhöhen, um ihm mehr Ressourcen zur Verfügung zu stellen.
Je nach den Anforderungen Ihrer Anwendung sollten Sie die folgenden Parameter anpassen:
max_standby_streaming_delay
: Gibt an, wie lange die Wiedergabe wartet, bevor Abfragen abgebrochen werden, die sie blockieren.google_storage.log_replay_throttle_read_transactions
: Bestimmt, ob Abfragen gedrosselt werden, wenn die Verzögerung hoch ist. Durch das Drosseln von Abfragen stehen der Wiedergabe mehr Ressourcen zur Verfügung, um schneller auf den neuesten Stand zu kommen und zu vermeiden, dass bei Abfragen veraltete Daten zurückgegeben werden.alloydb.promote_cancel_to_terminate
: Gibt an, ob Abfrage-Back-Ends, die nicht auf die Kündigung reagieren, erzwungen beendet werden sollen.
Starten Sie keinen neuen Verwaltungsvorgang, bevor der letzte Vorgang abgeschlossen ist.
AlloyDB-Instanzen akzeptieren keine neuen Vorgangsanfragen, bis der vorherige Vorgang abgeschlossen ist. Wenn Sie versuchen, einen neuen Vorgang zu starten, bevor der vorherige Vorgang abgeschlossen ist, schlägt die Vorgangsanfrage fehl. Das betrifft auch Neustarts der Instanz.
Der Instanzstatus in der Google Cloud -Konsole gibt nicht an, ob gerade ein Vorgang ausgeführt wird. Das grüne Häkchen gibt nur an, ob sich die Instanz im Status „RUNNABLE“ befindet. Wenn Sie wissen möchten, ob gerade ein Vorgang ausgeführt wird, klicken Sie auf den Tab Vorgänge und sehen Sie sich den Status des letzten Vorgangs an.
Ausreichend Speicherkontingent für kritische Datenbankwartungen konfigurieren
Standardmäßig können Sie pro Cluster bis zu 16 TB Speicherplatz nutzen. Wenn Sie mehr Speicherplatz benötigen, können Sie Ihr Speicherkontingent erhöhen.
Überlastung der CPU verhindern
Sie können den Prozentsatz der verfügbaren CPU, die von Ihrer Instanz verwendet wird, in der Google Cloud Console auf der Seite „Instanzdetails“ ansehen. Weitere Informationen finden Sie unter Instanzen überwachen. Sie können auch die CPU-Auslastung überwachen und Benachrichtigungen zu einem angegebenen Schwellenwert erhalten, indem Sie Benachrichtigungsrichtlinien mit Messwertschwellen erstellen.
Um eine Überlastung zu vermeiden, können Sie Ihre Instanz auf eine höhere Anzahl von CPUs skalieren. Zum Ändern von CPUs ist ein Neustart der Instanz erforderlich. Wenn Ihre Instanz bereits die maximale CPU-Anzahl erreicht hat, empfehlen wir, Ihre Datenbank auf mehrere Instanzen aufzuteilen.
Vermeiden Sie eine Erschöpfung des Arbeitsspeichers.
AlloyDB bietet eine automatische Arbeitsspeicherverwaltung, um Probleme aufgrund von fehlendem Arbeitsspeicher zu vermeiden. Ein konstanter Arbeitsspeicherdruck kann jedoch zu Leistungsproblemen führen. Wenn Sie nach Anzeichen für Speicherausschöpfung suchen, sollten Sie hauptsächlich den Messwert usage verwenden. Wir empfehlen, dass dieser Messwert unter 90% bleibt, um eine optimale Leistung zu erzielen.
Sie können auch den Messwert total_usage verwenden, um den Prozentsatz des verfügbaren Speichers zu beobachten, den Ihre AlloyDB-Instanz verwendet, einschließlich des vom Datenbankcontainer verwendeten Speichers und des vom Cache des Betriebssystems zugewiesenen Speichers.
Anhand des Unterschieds zwischen den Messwerten „Nutzung“ und „Gesamtnutzung“ können Sie ermitteln, wie viel Arbeitsspeicher von Prozessen verwendet wird und wie viel vom Cache des Betriebssystems verwendet wird. Sie können den Arbeitsspeicher in diesem Cache wiederverwenden.
Skalieren Sie Ihre AlloyDB-Instanz, um den Arbeitsspeicher zu erhöhen. Wenn Sie die Speichergröße der Instanz ändern möchten, müssen Sie die Instanz neu starten. Wenn Ihre Instanz bereits die maximale Speichergröße erreicht hat, müssen Sie Ihre Datenbank auf mehrere Instanzen aufteilen.
Weitere Informationen zum Überwachen der Nutzung und der Gesamtnutzungsmesswerte in der Google Cloud Console finden Sie unter Instanzen überwachen.
Achten Sie darauf, dass Ihre Instanz optimale Transaktions-IDs hat.
Sie können die Transaktions-ID-Nutzung Ihrer Instanz in der Google Cloud Console auf der Seite „Metrics Explorer“ aufrufen, indem Sie Resource Type
auf AlloyDB for PostgreSQL Database
und Metric
auf Percentage of instance's transaction IDs consumed
festlegen. Weitere Informationen finden Sie unter Diagramme mit dem Metrics Explorer erstellen.
AlloyDB bietet eine integrierte adaptive automatische Bereinigung, die Probleme im Zusammenhang mit der Bereinigung minimiert.
Datenarchitektur
Teilen Sie große Instanzen nach Möglichkeit in kleinere Instanzen auf.
Verwenden Sie nicht zu viele Datenbanktabellen.
Teilen Sie große Instanzen nach Möglichkeit in kleinere Instanzen auf.
Verwenden Sie nach Möglichkeit viele kleinere AlloyDB-Cluster anstelle einer großen Instanz. Die Verwaltung einer einzigen großen, monolithischen Instanz bringt einige Probleme mit sich, die bei einer Gruppe kleinerer Instanzen nicht auftreten.
Verwenden Sie nicht zu viele Datenbanktabellen.
Beschränken Sie die Anzahl der Tabellen Ihrer Instanz auf weniger als 10.000. Zu viele Datenbanktabellen können sich auf die Dauer des Datenbankupgrades auswirken.
Abfrageleistung
Aktivieren Sie die spaltenbasierte Engine, wenn Sie analytische Abfragen ausführen.
Instanz skalieren, um die Abfrageleistung zu verbessern
Lesepools bereitstellen und Leseabfragen an den Lesepool auslagern.
Spaltenbasierte Engine aktivieren, wenn Sie Analyseabfragen ausführen
Übersicht über die spaltenbasierte Engine von AlloyDB Prüfen Sie, bei welchen Abfragetypen die Aktivierung der spaltenorientierten Engine von Vorteil ist.
Sie können die Nutzung der spaltenorientierten Engine überwachen.
Wenn Sie die spaltenbasierte Engine noch nicht kennen, sollten Sie sich zuerst mit der automatischen Spaltenbearbeitung vertraut machen. Anschließend können Sie die Spalten manuell verwalten.
Instanz skalieren, um die Abfrageleistung zu verbessern
Wenn die Abfrageleistung niedrig ist, sollten Sie die Instanz möglicherweise vergrößern.
Für jede SKU sind die vCPU- und Arbeitsspeicherkonfigurationen sowie der schnelle Cache begrenzt. Wenn Ihre Datenmenge groß ist und die Abfrageleistung schlecht ist, sollten Sie eine größere Instanz verwenden.
Lesepools bereitstellen und Leseabfragen an den Lesepool auslagern
Wenn Ihre Anwendung viele Schreib- und Lesevorgänge ausführt, sollten Sie Lesepools bereitstellen und Leseabfragen an den Lesepool auslagern.
Fügen Sie für leselastige Arbeitslasten Lesepoolinstanzen hinzu, um den Lesetraffic von der primären Instanz zu verlagern.
Anwendungsimplementierung
Verwenden Sie gute Methoden zur Verbindungsverwaltung.
Testen Sie die Reaktion Ihrer Anwendung auf Wartungsupdates.
Testen Sie die Reaktion Ihrer Anwendung auf Failover.
Vermeiden Sie große Transaktionen.
Vermeiden Sie eine große Anzahl von untergeordneten Transaktionen.
Verwenden Sie die neueste Version des Auth-Proxys.
Best Practices für die Verbindungsverwaltung anwenden
Greifen Sie auf Best Practices für das Verbindungsmanagement zurück, z. B. Verbindungs-Pooling und exponentiellen Backoff.
Eine gute Verbindungsverwaltung optimiert die Ressourcennutzung Ihrer Anwendung und hilft Ihnen, die Verbindungslimits für AlloyDB einzuhalten.
Reaktion Ihrer Anwendung auf Wartungsupdates testen
Testen Sie die Reaktion der Anwendung auf Wartungsupdates, die jederzeit während eines Wartungsfensters auftreten können.
Sie können ein Wartungsupdate simulieren, indem Sie Vorgänge auf Compute-Skalierungsebene ausführen oder statische PostgreSQL-Flags aktualisieren, die eine Wartung mit kurzer Ausfallzeit (LDTM) auslösen.
Während der Laufzeit des Upgrades ist Ihre Instanz für einen kurzen Zeitraum nicht verfügbar und bestehende Verbindungen werden getrennt. Durch das Testen von LDTM erhalten Sie ein besseres Verständnis dafür, wie Ihre Anwendung mit geplanten Wartungsarbeiten umgeht und wie schnell das System wiederhergestellt werden kann.
Reaktion der Anwendung auf Failover testen
Testen Sie die Reaktion der Anwendung auf Failover, die jederzeit auftreten können.
Sie können ein Failover manuell über die Google Cloud Console, die Google Cloud CLI oder die API starten. Weitere Informationen finden Sie unter Failover initialisieren.
Große Transaktionen vermeiden
Kleine, kurze Transaktionen sind zu bevorzugen. Umfangreiche Datenbankupdates führen Sie besser in mehreren kleinen Transaktionen statt in einer einzelnen großen Transaktion durch.
Vermeiden Sie eine große Anzahl von untergeordneten Transaktionen.
Vermeiden Sie eine große Anzahl von untergeordneten Transaktionen in einer Transaktion, wenn lang laufende Transaktionen vorhanden sind.
Wenn Sie in AlloyDB eine Transaktion in einem PL/pgSQL-Fehlerblock ausführen, werden Untertransaktionen der Transaktion erstellt, die dem Fehlerblock entsprechen. Die Gesamtsystemleistung wird beeinträchtigt, wenn die Anzahl der Teiltransaktionen bei lang laufenden Transaktionen 64 überschreitet.
Verwenden Sie die neueste Version des Auth-Proxy.
Wenn Sie den AlloyDB Auth-Proxy verwenden, achten Sie darauf, dass es die neueste Version ist. Weitere Informationen finden Sie unter Auth-Proxy-Client auf dem neuesten Stand halten.
Datenimport und -export
Aus Cloud SQL for PostgreSQL-Sicherungen für die Migration wiederherstellen
Importe für kleine Instanzen beschleunigen
Wiederherstellung aus Cloud SQL for PostgreSQL-Sicherungen für die Migration
Weitere Informationen zur Migration finden Sie unter Von Cloud SQL for PostgreSQL zu AlloyDB migrieren.
Informationen zum Migrieren Ihrer Daten von Cloud SQL for PostgreSQL zu AlloyDB mithilfe der kontinuierlichen Datenreplizierung finden Sie unter Database Migration Service für PostgreSQL zu AlloyDB.
Importe für kleine Instanzen beschleunigen
Wenn Sie große Datensätze in kleine Instanzen importieren, können Sie vorübergehend die CPU-Zahl und den RAM einer Instanz erhöhen, um die Leistung zu optimieren.
Sicherung und Wiederherstellung
Schützen Sie Ihre Daten mit den entsprechenden AlloyDB-Funktionen.
Schützen Sie Ihre Instanz und Ihre Sicherungen vor versehentlichem Löschen.
Daten mit den entsprechenden AlloyDB-Funktionen schützen
Verwenden Sie Sicherungen, die Wiederherstellung zu einem bestimmten Zeitpunkt (Point-in-Time-Recovery, PITR) und Exporte für Redundanz und Schutz. Beide ergänzen sich, schützen vor unterschiedlichen Szenarien und sind Teil einer robusten Datenschutzstrategie.
Sicherungen benötigen nicht viele Ressourcen. Damit können Sie die Daten einer Instanz zum Zeitpunkt der Sicherung wiederherstellen. Die Sicherungsfunktion von AlloyDB hat jedoch einige Einschränkungen. Wenn Sie die Instanz löschen, werden auch die Sicherungen gelöscht. Sie können keine einzelne Datenbank oder Tabelle sichern. Wenn die Region, in der sich die Instanz befindet, nicht verfügbar ist, können Sie die Instanz aus dieser Sicherung nicht wiederherstellen, auch nicht in einer verfügbaren Region.
Mit der Wiederherstellung zu einem bestimmten Zeitpunkt können Sie eine Instanz auf einem bestimmten Stand wiederherstellen. Wenn beispielsweise ein Fehler zu einem Datenverlust geführt hat, haben Sie die Möglichkeit, genau den Zustand der Datenbank wiederherzustellen, den sie zum Zeitpunkt vor Auftreten des Fehlers hatte. Bei der Wiederherstellung zu einem bestimmten Zeitpunkt wird immer eine neue Instanz erstellt. Diese Art der Wiederherstellung kann nicht so durchgeführt werden, dass dabei der wiederhergestellte Zustand in eine vorhandene Instanz integriert wird.
Exporte dauern länger, da in Cloud Storage eine externe Datei erstellt werden muss, die zum Wiederherstellen der Daten verwendet werden kann. Exporte sind vom Löschen einer Instanz nicht betroffen. Außerdem können Sie je nach Exportformat auch eine einzelne Datenbank oder sogar nur eine Tabelle exportieren.
Instanz und Sicherungen vor versehentlichem Löschen schützen
Wenn Sie den standardmäßigen Schutz vor versehentlichem Löschen aktivieren möchten, erstellen Sie eine AlloyDB-Instanz über die Google Cloud Console oder Terraform.
Verwenden Sie die Exportfunktion in AlloyDB, um Ihre Daten für zusätzlichen Schutz zu exportieren. Cloud Scheduler mit der Cloud Scheduler API verwenden, um die Exportverwaltung zu automatisieren.
Für komplexere Szenarien verwenden Sie zur Automatisierung Cloud Scheduler mit Cloud Run-Funktionen.