22. Oktober 2020

Häufige PostgreSQL-Herausforderungen und wie man sie meistert

PostgreSQL ist vielleicht das beliebteste Open-Source-Datenbank in der Welt, und sein Anstieg in den letzten zehn Jahren war geradezu bemerkenswert. Seine Vollständigkeit und Zuverlässigkeit erregen die Aufmerksamkeit großer, etablierter Organisationen. Darüber hinaus ist es ein kostenloses Open-Source-Datenbankverwaltungssystem. Dies dient als Hauptverkaufsargument für kleine Unternehmen, die mit einem begrenzten Budget arbeiten.

Das heißt, all diese Vorteile kommen nicht ohne eine Kehrseite. PostgreSQL, wie jeder andere Mainstream DBMS, hat seine Schattenseiten, die jeder Entwickler im Voraus kennen sollte. In diesem Artikel werden die häufigsten Probleme, mit denen PostgreSQL-Entwickler konfrontiert sind, und die besten Möglichkeiten, sie zu umgehen, erörtert.

Performance-Probleme

Es gibt kein einziges Datenbankverwaltungssystem, bei dem nicht gelegentlich Leistungsprobleme auftreten. PostgreSQL ist für diese Probleme nicht anfällig, aber sie treten gelegentlich auf, und es ist ratsam, dass jeder System weiß, wie man sie erkennt und beseitigt.

Viele Entwickler und Systemen glauben, dass die Parameteroptimierung in postgresql.conf die einzige Möglichkeit ist, Leistungsprobleme zu beseitigen. Obwohl Konfigurationsparameter von Vorteil sein können, bringen sie Sie nicht immer an die Wurzel des Problems. In vielen Fällen wird sich das Problem letztendlich von dem unterscheiden, worauf Sie sich konzentrieren.

Einige Leute verwenden die Ansicht pg_stat_statements, um langsame Abfragen zu erkennen, indem sie sich ihre Ladezeiten ansehen. Andere bevorzugen PostgreSQL-Erklärung, das für eine genauere und umfassendere Abfrageaufschlüsselung verehrt wird. Zusammen mit Analysieren hilft die Funktion beim Boosten PostgreSQL-Client Leistung, indem der vom Planer von PostgreSQL generierte Ausführungsplan und die Laufzeit angezeigt werden.

Probleme mit der Replikationsverzögerung

Fälle von Problemen mit Replikationsverzögerungen sind selten, aber ihre starken Auswirkungen auf die Anwendungsleistung machen es wert, sie in diese Liste aufzunehmen. Das Identifizieren von PostgreSQL-Replikationsverzögerungen ist eine relativ einfache Aufgabe, aber es gibt mehrere Möglichkeiten, das Problem zu betrachten, die möglicherweise den geeignetsten Weg zu seiner Lösung bestimmen.

PostgreSQL verwendet die Streaming-Replikation – eine in Version 9.0 eingeführte Funktion –, die es schnell machen sollte, da Änderungen als eine Reihe von Protokolleinträgen genau dann protokolliert werden, wenn der WAL-Empfänger sie abfängt. Sobald diese Protokolldatensätze in die WAL-Datei eingefügt wurden, gibt der PostgreSQL-Startprozess diese Daten wieder und der Streaming-Replikationsprozess beginnt.

Die meisten Verzögerungen treten auf, wenn die WAL-Segment kann nicht gefunden werden oder es liegen Netzwerkprobleme, Konfigurationsprobleme, fehlerhafte Hardware oder beschäftigte Knoten vor. Sie können das Dienstprogramm pg_stat_replication verwenden, um eine Ansicht des Streaming-Replikationsstatus zu erhalten. Es hat sich auch gezeigt, dass ClusterControl bei der Überwachung von Datenbankknoten hilft.

Ausfallzeit beim Aktualisieren des Schemas

Das Aktualisieren eines PostgreSQL-Datenbankschemas ist einfach, wenn Sie dabei offline gehen können. Sie müssen nur die Anwendung schließen, eine Schemasicherung erstellen, die Aktualisierungsvorgänge durchführen, Ihre Arbeit überprüfen und testen und Ihre Anwendung neu starten, in der Hoffnung, dass Sie alles richtig gemacht haben.

Allerdings wird es nicht so einfach, wenn die Art Ihrer Bewerbung es erfordert Keine Ausfallzeit. Dies erfordert ein komplexes, mehrphasiges Verfahren, bei dem möglicherweise ein abwärtskompatibler Ansatz verwendet wird, um Ihre Datenbank zu ändern. Der Sinn besteht darin, die Datenbank sowohl für Ihre alten als auch für Ihre neuen Anwendungsversionen nutzbar zu machen.

Migrationsvorgänge, die nicht abwärtskompatibel sind, können Sie in kleinere Schritte aufteilen, um eine Datenbank zu erstellen, die von beiden Versionen Ihrer Anwendung verwendet werden kann. Dazu muss der Benutzer häufig eine neue Tabelle, Ansicht oder Spalte erstellen, die von Ihrer neuen Anwendungsversion verwendet wird.

Sicherheit verhärten

Lassen Sie zunächst klar, dass die PostgreSQL-Datenbank einige der besten bietet Datensicherheit Funktionen für Ihren Server und Ihre Daten. Das Problem tritt auf, wenn es an der Zeit ist, sie zu identifizieren und bereitzustellen.

Die Sicherheitshärtung in PostgreSQL kann in drei Kategorien unterteilt werden: Serverkonfiguration, Datenverschlüsselung und Netzwerkkonfiguration. Es ist immer ratsam, eine Datenverschlüsselung während des Fluges und im Ruhezustand durchzuführen. Für die In-Flight-Datenverschlüsselung muss der Client-Datenbankzugriff auf die Verwendung von SSL eingestellt sein. Der Server sollte auch sichere Verbindungen erfordern oder akzeptieren.

Die Verschlüsselung im Ruhezustand kann in vielen verschiedenen Phasen des Stacks durchgeführt werden; wo Sie es implementieren, wird in erster Linie durch Infrastruktur- und Anwendungsanforderungen bestimmt. Das pgcrypto-Modul wird für Verschlüsselungs- und Entschlüsselungszwecke auf Datenbankebene verwendet. Die Technik ist als letzter Ausweg hilfreich, wenn es keine andere praktikable Verschlüsselungsmethode gibt und bestimmte Datensätze verschlüsselt werden müssen.

en können immer Daten verschlüsseln auf Cloud- oder Dateisystemebene – ein Ansatz, der nahtloser ist und weniger Auswirkungen auf die Leistung hat.

Das Risiko von Datenverlust

Obwohl es viele Möglichkeiten gibt, das Risiko eines Datenverlusts zu verringern, können Sie diese Möglichkeit niemals auf Null reduzieren. Daher muss jeder Datenbank über eine solide Sicherungsstrategie verfügen, um sicherzustellen, dass Anwendungen so schnell wie möglich gesichert und ausgeführt werden, nachdem a Cyber-Angriff, ein katastrophales Ereignis oder ein Problem mit der Datenintegrität.

Datensicherungen sollten im Mittelpunkt jeder Datenbankverwaltungsstrategie stehen. Für PostgreSQL-Benutzer gibt es mehrere Möglichkeiten, eine Backup-Strategie einzurichten, abhängig von den Präferenzen und anderen funktionalen Faktoren. Beispielsweise kann die integrierte pg_dump-Funktion verwendet werden, um regelmäßige Backups mit der Installation einer virtuellen Maschine oder Bare Metal zu erstellen, wenn kein Managed Service Layer vorhanden ist. Die Ausgabe von pg_dump besteht aus einer Textdatei, die Sie auf einer nicht an die Datenbank angeschlossenen Plattform speichern und später abrufen können, wenn die Chips leer sind. Bei der Datenwiederherstellung geht es normalerweise einfach darum, die Datei dem PostgreSQL-Programm als Eingabe zur Verfügung zu stellen.

Während die Verwendung von pg_dump großartig für benutzerdefinierte Backup-Pläne ist, Cloud-Services wie Stratoscale SMD und AWS RDS bieten Backup und Disaster Recovery als integrierte Funktionen, sodass Sie sich keine Gedanken über den Aufbau einer Backup-Strategie von Grund auf machen müssen.

Endnote

Die Datenbankverwaltung ist nur dann einfach, wenn Sie die Planungsphase richtig hinbekommen und mit alltäglichen Herausforderungen und praktikablen Minderungsstrategien vertraut sind. Hoffentlich helfen Ihnen die oben genannten Tipps, sich auf Hindernisse vorzubereiten und schnell und nahtlos wieder aufzustehen.

Webseiten

Über den Autor 

Peter Hatsch


{"email": "E-Mail-Adresse ungültig", "url": "Website-Adresse ungültig", "erforderlich": "Erforderliches Feld fehlt"}