Wenn Sie Daten in AlloyDB for PostgreSQL verschieben oder daraus exportieren, sollten Sie die folgenden Best Practices beachten, um die Leistung zu optimieren, die Speicherkosten zu senken und Betriebsstörungen zu vermeiden:
- Verwenden Sie für Importe oder Exporte keine Cloud Storage-Buckets vom Typ Anforderer bezahlt.
- Beim Erstellen einer SQL-Dumpdatei die korrekten Flags verwenden.
- Daten komprimieren, um Kosten zu sparen.
- Reduzieren Sie lange andauernde Import- und Exportvorgänge, indem Sie Daten in Batches verarbeiten.
- Prüfen Sie die importierte Datenbank nach dem Import.
Keine Cloud Storage-Buckets "Anforderer bezahlt" verwenden
Sie können keinen Cloud Storage-Bucket verwenden, für den „Anforderer bezahlt“ für Importe in oder Exporte aus AlloyDB aktiviert ist. AlloyDB verwendet ein von Google verwaltetes Dienstkonto, den Dienst-Agent, um Importe und Exporte auszuführen. Dieser Agent hat in der Regel nicht den Kontext oder die Konfiguration, um dem Projekt des Anforderers den Datenzugriff in Rechnung zu stellen. Dies führt dazu, dass Vorgänge mit „Anforderer bezahlt“-Buckets fehlschlagen.
Beim Erstellen einer SQL-Dumpdatei die korrekten Flags verwenden
Wenn Sie beim Exportieren von Daten in eine SQL-Dumpdatei nicht die richtigen Flags und Optionen verwenden, schlägt der Import möglicherweise fehl. Informationen zum Exportieren von Daten für den Import in AlloyDB finden Sie unter DMP-Datei exportieren und SQL-Datei exportieren.
Daten komprimieren, um Kosten zu sparen
AlloyDB unterstützt das Importieren und Exportieren komprimierter .gz-Dateien aus Cloud Storage. Durch die Komprimierung können Sie erheblich Speicherplatz in Cloud Storage sparen und Ihre Speicherkosten senken, insbesondere wenn Sie große Datenmengen exportieren. Wenn Sie einen SQL-Dump oder eine CSV-Datei mit der AlloyDB API exportieren, verwenden Sie im Ziel-URI die Dateiendung .gz, um die Daten zu komprimieren. Wenn Sie eine Datei mit der Erweiterung .gz importieren, wird sie automatisch dekomprimiert.
Lange andauernde Import- und Exportvorgänge reduzieren
Je nach Größe der Daten können Importe in und Exporte aus AlloyDB lange dauern. Wenn ein Vorgang zu lange dauert, kann er andere Vorgänge blockieren.
Verringern Sie die Zeit für die Ausführung der einzelnen Vorgänge, indem Sie kleinere Datenbatches verwenden. Sie können auch das pg_dump-Tool verwenden, um einen manuellen Export von einem Client auszuführen, der mit einer Lesepoolinstanz verbunden ist.
Importierte Datenbank prüfen
Stellen Sie nach Abschluss eines Importvorgangs mit psql oder einem anderen Client eine Verbindung zu Ihrer Datenbank her und führen Sie entsprechende Befehle aus, um zu prüfen, ob die Inhalte korrekt sind, z. B. durch Auflisten von Tabellen oder Abfragen von Zeilenanzahlen.
Exportvorgänge automatisieren
AlloyDB bietet zwar keine integrierte Methode zum Automatisieren von Exporten, Sie können aber ein Automatisierungstool mit anderenGoogle Cloud -Komponenten wie Cloud Scheduler, Pub/Sub und Cloud Run Functions erstellen.
Fehlerbehebung
In diesem Abschnitt finden Sie Vorschläge zur Behebung von Problemen, die bei Import- und Exportvorgängen auftreten können.
Importvorgänge
| Problem | Beschreibung | Empfohlene Fehlerbehebung |
|---|---|---|
ERROR: permission denied for schema public |
Bei PostgreSQL 15 und höher kann der Import von Daten aufgrund von Schemaberechtigungen fehlschlagen, wenn Sie die Zieldatenbank aus template0 erstellen. |
Verwenden Sie den folgenden Befehl, um dem Nutzer, der Daten importiert, Berechtigungen für das Schema
GRANT ALL ON SCHEMA public TO IMPORT_USER;
|
| Der Importvorgang dauert zu lange. | Zu viele aktive Verbindungen können Importvorgänge beeinträchtigen. |
Geben Sie Folgendes ein:
|
| Ein Importvorgang schlägt fehl, weil mindestens ein Nutzer, auf den in der Dumpdatei verwiesen wird, nicht vorhanden ist. | Bevor Sie eine Dumpdatei importieren, müssen alle Datenbanknutzer, die Inhaber von Objekten sind oder Berechtigungen für Objekte in der gespeicherten Datenbank erhalten haben, in der Zieldatenbank vorhanden sein. Wenn sie nicht vorhanden sind, können die Objekte beim Importvorgang nicht mit den ursprünglichen Inhabern oder Berechtigungen neu erstellt werden. | Erstellen Sie die erforderlichen Datenbanknutzer vor dem Import. |
GRANT stderr: ERROR: must be member of role ROLE_NAME
|
Dieser Fehler kann auftreten, wenn Sie eine SQL-Dumpdatei importieren, die Objekte enthält, die ROLE_NAME gehören, oder Berechtigungen, die ROLE_NAME gewährt wurden, aber der Datenbanknutzer, der den Import durchführt, kein Mitglied von ROLE_NAME ist. |
Prüfen Sie, ob die Rolle ROLE_NAME in der Zieldatenbank vorhanden ist, und weisen Sie dem Nutzer, der den Import ausführt, die Mitgliedschaft in ROLE_NAME zu, bevor Sie den Import ausführen. |
Exportvorgänge
| Problem | Beschreibung | Empfohlene Fehlerbehebung |
|---|---|---|
HTTP Error 403: The service account does not have the required
permissions for the bucket. |
Das AlloyDB-Dienstkonto hat nicht die erforderlichen Berechtigungen für den Ziel-Bucket. | Prüfen Sie, ob der Cloud Storage-Ziel-Bucket vorhanden ist und ob dem AlloyDB-Dienstkonto die Rolle roles/storage.objectAdmin oder roles/storage.objectCreator zugewiesen ist. Mit diesen Rollen kann es in den Bucket schreiben. Siehe IAM-Rollen (Identity and Access Management) für Cloud Storage.
|
| CSV-Export funktioniert, SQL-Export schlägt jedoch fehl. | CSV- und SQL-Formate werden unterschiedlich exportiert. Beim SQL-Format werden Datenbankschema und Daten exportiert. Dies dauert in der Regel länger. Im CSV-Format werden nur die Daten exportiert, die sich aus einer von Ihnen bereitgestellten SELECT-Abfrage ergeben. |
Wenn ein SQL-Export fehlschlägt oder zu langsam ist, können Sie einzelne Tabellen im CSV-Format exportieren. |
| Export dauert zu lange. | Wenn ein Export auf Ihrer primären Instanz zu lange dauert, ist der Export möglicherweise zu groß. | Exportieren Sie die Daten in kleineren Batches. Exportieren Sie beispielsweise Tabellen einzeln, anstatt eine gesamte Datenbank in einem Vorgang zu exportieren. Sie können auch das Tool pg_dump verwenden, um einen manuellen Export von einem Client auszuführen, der mit einer Lesepoolinstanz verbunden ist.
|
Create Extension-Fehler im pg_restore-Protokoll oder Import schlägt fehl. |
Die Dumpdatei enthält Verweise auf eine PostgreSQL-Erweiterung, die von AlloyDB nicht unterstützt wird oder nicht auf Ihrem Cluster installiert ist. | Wenn Sie die Verweise entfernen möchten, bearbeiten Sie die Dump-Datei oder installieren Sie die Erweiterung in Ihrem Cluster, sofern AlloyDB dies unterstützt. |
Fehler beim Verwenden von pg_dumpall. |
Das Dienstprogramm pg_dumpall mit Flags wie --globals-only erfordert möglicherweise Berechtigungen, die in AlloyDB nicht verfügbar sind. |
Wenn Sie globale Objekte wie Nutzer und Rollen ohne Passwörter exportieren möchten, verwenden Sie den folgenden Befehl, um das Flag
pg_dumpall --globals-only --no-role-passwords
|
Das Zeitlimit für den Exportvorgang wird überschritten oder Sie sehen Connection reset by peer. |
Wenn Cloud Storage innerhalb eines bestimmten Zeitraums keine Daten empfängt, kann die Verbindung zurückgesetzt werden. Dies kann passieren, wenn die für den Export erforderlichen anfänglichen Datenbankabfragen zu lange dauern. | In diesem Fall können Sie einen manuellen Export mit dem Tool pg_dump von einem Client aus versuchen, der mit einer Lesepoolinstanz verbunden ist. |
Allgemeine Probleme
| Problem | Beschreibung | Empfohlene Fehlerbehebung |
|---|---|---|
HTTP Error 409: Operation failed because another operation was
already in progress. |
Das System lässt jeweils nur einen API-basierten Import- oder Exportvorgang zu. | Senden Sie Ihre Anfrage, nachdem der aktuelle Vorgang abgeschlossen ist. |
Nächste Schritte
- Daten mithilfe von Dumpdateien importieren
- Daten mit Dumpdateien exportieren
- Daten mit CSV-Dateien importieren
- Daten mit CSV-Dateien exportieren
- Daten mit SQL-Dateien importieren
- Daten mithilfe von SQL-Dateien exportieren
- Automatische Sicherungen aktivieren
- Wiederherstellung aus einer Sicherung durchführen