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.
Transportieren Sie PostgreSQL-Datenbanken zwischen zwei Amazon RDS-DB-Instances mithilfe von pg_transport
Erstellt von Raunak Rishabh (AWS) und Jitender Kumar (AWS)
Umgebung: PoC oder Pilotprojekt | Quelle: Datenbanken: Relational | Ziel: Amazon RDS for PostgreSQL |
R-Typ: Umziehen | Arbeitslast: Open Source | Technologien: Migration; Datenbanken |
AWS-Dienste: Amazon RDS |
Übersicht
Dieses Muster beschreibt die Schritte für die Migration extrem großer Datenbanken zwischen zwei Amazon Relational Database Service (Amazon RDS) für PostgreSQL-DB-Instances mithilfe der Erweiterung pg_transport. Diese Erweiterung bietet einen physischen Transportmechanismus, um jede Datenbank zu verschieben. Durch das Streamen der Datenbankdateien mit minimaler Verarbeitung bietet es eine extrem schnelle Methode für die Migration großer Datenbanken zwischen DB-Instances mit minimaler Ausfallzeit. Diese Erweiterung verwendet ein Pull-Modell, bei dem die Ziel-DB-Instance die Datenbank aus der Quell-DB-Instance importiert.
Voraussetzungen und Einschränkungen
Voraussetzungen
Beide DB-Instances müssen dieselbe Hauptversion von PostgreSQL ausführen.
Die Datenbank darf auf dem Ziel nicht existieren. Andernfalls schlägt der Transport fehl.
In der Quelldatenbank darf keine andere Erweiterung als pg_transport aktiviert sein.
Alle Quelldatenbankobjekte müssen sich im Standard-Tablespace pg_default befinden.
Die Sicherheitsgruppe der Quell-DB-Instance sollte Traffic von der Ziel-DB-Instance zulassen.
Installieren Sie einen PostgreSQL-Client wie psql
oder PgAdmin um mit der Amazon RDS PostgreSQL-DB-Instance zu arbeiten. Sie können den Client entweder in Ihrem lokalen System installieren oder eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance verwenden. In diesem Muster verwenden wir psql auf einer EC2-Instance.
Einschränkungen
Sie können Datenbanken nicht zwischen verschiedenen Hauptversionen von Amazon RDS for PostgreSQL transportieren.
Die Zugriffsrechte und der Besitz von der Quelldatenbank werden nicht auf die Zieldatenbank übertragen.
Sie können Datenbanken nicht auf Read Replicas oder auf übergeordneten Instanzen von Read Replicas transportieren.
Sie können Reg-Datentypen nicht in Datenbanktabellen verwenden, die Sie mit dieser Methode transportieren möchten.
Sie können insgesamt bis zu 32 Transporte (einschließlich Importe und Exporte) gleichzeitig auf einer DB-Instance ausführen.
Sie können Tabellen nicht umbenennen oder einschließen/ausschließen. Alles wird unverändert migriert.
Vorsicht
Erstellen Sie Sicherungskopien, bevor Sie die Erweiterung entfernen, da durch das Entfernen der Erweiterung auch abhängige Objekte und einige Daten entfernt werden, die für den Betrieb der Datenbank von entscheidender Bedeutung sind.
Berücksichtigen Sie die Instanzklasse und die Prozesse, die in anderen Datenbanken auf der Quellinstanz ausgeführt werden, wenn Sie die Anzahl der Worker und
work_mem
Werte für pg_transport bestimmen.Wenn der Transport beginnt, werden alle Verbindungen in der Quelldatenbank beendet und die Datenbank wird in den schreibgeschützten Modus versetzt.
Hinweis: Wenn der Transport in einer Datenbank ausgeführt wird, hat er keine Auswirkungen auf andere Datenbanken auf demselben Server.
Versionen der Produkte
Amazon RDS for PostgreSQL 10.10 und höher und Amazon RDS for PostgreSQL 11.5 und höher. Aktuelle Versionsinformationen finden Sie unter Transport von PostgreSQL-Datenbanken zwischen DB-Instances in der Amazon RDS-Dokumentation.
Architektur
![Transport von PostgreSQL-Datenbanken zwischen Amazon RDS-DB-Instances](images/pattern-img/d5fb7ea3-32b7-4602-b382-3cf5c075c7c9/images/aec4d8d2-37a8-4136-9042-f9667ac4aebb.png)
Tools
pg_transport bietet einen physischen Transportmechanismus zum Verschieben jeder Datenbank. Durch das Streamen der Datenbankdateien mit minimaler Verarbeitung werden Daten beim physischen Transport viel schneller übertragen als bei herkömmlichen Dump- und Ladeprozessen und es sind nur minimale Ausfallzeiten erforderlich. PostgreSQL-Transportdatenbanken verwenden ein Pull-Modell, bei dem die Ziel-DB-Instance die Datenbank aus der Quell-DB-Instance importiert. Sie installieren diese Erweiterung auf Ihren DB-Instances, wenn Sie die Quell- und Zielumgebungen vorbereiten, wie in diesem Muster erklärt.
Mit psql
können Sie eine Verbindung zu Ihren PostgreSQL-DB-Instances herstellen und mit ihnen arbeiten. Informationen zur Installation von psql auf Ihrem System finden Sie auf der PostgreSQL-Downloadseite .
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Parametergruppe für das Zielsystem. | Geben Sie einen Gruppennamen an, der sie als Zielparametergruppe identifiziert, zum Beispiel | DBA |
Ändern Sie die Parameter für die Parametergruppe. | Legen Sie die folgenden Parameter fest:
Weitere Informationen zu diesen Parametern finden Sie in der Amazon RDS-Dokumentation. | DBA |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Parametergruppe für das Quellsystem. | Geben Sie einen Gruppennamen an, der sie als Quellparametergruppe identifiziert, z. B. | DBA |
Ändern Sie die Parameter für die Parametergruppe. | Legen Sie die folgenden Parameter fest:
Weitere Informationen zu diesen Parametern finden Sie in der Amazon RDS-Dokumentation. | DBA |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine neue Amazon RDS for PostgreSQL PostgreSQL-DB-Instance, in die Sie Ihre Quelldatenbank transportieren möchten. | Ermitteln Sie die Instanzklasse und die PostgreSQL-Version auf der Grundlage Ihrer Geschäftsanforderungen. | DBA, Systemadministrator, Datenbankarchitekt |
Ändern Sie die Sicherheitsgruppe des Ziels, um Verbindungen über den DB-Instance-Port von der EC2-Instance aus zuzulassen. | Standardmäßig ist der Port für die PostgreSQL-Instanz 5432. Wenn Sie einen anderen Port verwenden, müssen die Verbindungen zu diesem Port für die EC2-Instance geöffnet sein. | DBA, Systemadministrator |
Ändern Sie die Instanz und weisen Sie die neue Zielparametergruppe zu. | z. B. | DBA |
Starten Sie die Amazon RDS-DB-Zielinstanz neu. | Die Parameter | DBA, Systemadministrator |
Stellen Sie mit psql von der EC2-Instance aus eine Connect zur Datenbank her. | Verwenden Sie den -Befehl:
| DBA |
Erstellen Sie die Erweiterung pg_transport. | Führen Sie die folgende Abfrage als Benutzer mit der
| DBA |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Ändern Sie die Sicherheitsgruppe der Quelle, um Verbindungen auf dem DB-Instance-Port von der Amazon EC2 EC2-Instance und der Ziel-DB-Instance aus zuzulassen | Standardmäßig ist der Port für die PostgreSQL-Instanz 5432. Wenn Sie einen anderen Port verwenden, müssen die Verbindungen zu diesem Port für die EC2-Instance geöffnet sein. | DBA, Systemadministrator |
Ändern Sie die Instanz und weisen Sie die neue Quellparametergruppe zu. | z. B. | DBA |
Starten Sie die Amazon RDS-DB-Quell-Instance neu. | Die Parameter | DBA |
Stellen Sie mit psql von der EC2-Instance aus eine Connect zur Datenbank her. | Verwenden Sie den -Befehl:
| DBA |
Erstellen Sie die Erweiterung pg_transport und entfernen Sie alle anderen Erweiterungen aus den zu transportierenden Datenbanken. | Der Transport schlägt fehl, wenn in der Quelldatenbank andere Erweiterungen als pg_transport installiert sind. Dieser Befehl muss von einem Benutzer mit der | DBA |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Führen Sie einen Probelauf durch. | Verwenden Sie die
Der letzte Parameter dieser Funktion (gesetzt auf Diese Funktion zeigt alle Fehler an, die beim Ausführen des Haupttransports auftreten würden. Beheben Sie die Fehler, bevor Sie den Haupttransport ausführen. | DBA |
Wenn der Probelauf erfolgreich ist, initiieren Sie den Datenbanktransport. | Führen Sie die
Der letzte Parameter dieser Funktion (gesetzt auf | DBA |
Führen Sie die Schritte nach dem Transport durch. | Nachdem der Datenbanktransport abgeschlossen ist:
| DBA |