In diesem Dokument wird beschrieben, wie Sie Daten in Spanner Omni im Avro- und CSV-Format migrieren, sichern und übertragen. Mit der Spanner Omni-Befehlszeile können Sie Datenbankinhalte zwischen Spanner Omni und Speicherlösungen wie Cloud Storage, Amazon Simple Storage Service (Amazon S3), S3-kompatiblem lokalen Speicher oder lokalen Dateisystemen (NFS) verschieben. Die Datenflüsse für Import und Export in Spanner Omni unterstützen keine Modelle, Lokalisierungsgruppen oder Platzierungen.
Import- und Exportvorgänge werden auf Spanner Omni-Servern ausgeführt und nutzen die verfügbaren Systemressourcen gemeinsam. Der Import ist ressourcenintensiv und kann zu einer hohen RAM-, CPU- und Festplattennutzung führen, was sich auf aktive Arbeitslasten auswirken kann. Diese Aufgaben werden in der Regel mit einer niedrigeren Priorität als regulärer Traffic ausgeführt. Sie sollten Ihre Bereitstellung jedoch auf mögliche Auswirkungen auf die Leistung überwachen.
Vergleich von Dateiformaten
In der folgenden Tabelle werden die Funktionen der Avro- und CSV-Dateiformate für den Import und Export von Spanner-Daten verglichen.
| Funktion | Avro | CSV |
|---|---|---|
| Ganze Datenbank importieren oder exportieren | Ja | Nein |
| Zuvor exportierte Tabellen importieren | Ja | Ja |
| Zu einem früheren Zeitstempel exportieren | Ja | Ja |
| Mit Spanner importieren oder exportieren | Ja | Ja |
| Daten aus anderen Datenbanken importieren | Nein | Ja |
Beim Exportieren im Avro- und CSV-Format werden alle Tabellen in der Datenbank exportiert. Beim Avro-Format wird auch das Schema exportiert, sodass Sie es wieder importieren können. Beim CSV-Format wird das Schema nicht exportiert.
Hinweis
Bevor Sie einen Import- oder Exportvorgang starten, müssen Sie Ihre Berechtigungen überprüfen und den Zugriff auf Ihren Datenspeicherort konfigurieren.
Berechtigungen
Prüfen Sie, ob Sie die folgenden Berechtigungen haben, bevor Sie beginnen:
spanner.databases.importspanner.databases.export
Weitere Informationen zu Identity and Access Management (IAM) in Spanner Omni finden Sie in der IAM-Übersicht. Informationen zum Aktualisieren der Rollen eines Nutzers finden Sie unter Nutzer aktualisieren.
Datenquelle und ‑ziel
Sie können Daten in einem Amazon Simple Storage Service-Bucket (Amazon S3), einem Cloud Storage-Bucket, einem Amazon S3-kompatiblen lokalen Speicher (z. B. MinIO) oder einem lokalen Dateisystem (NFS) speichern. Wenn Sie ein lokales Dateisystem verwenden, muss sichergestellt sein, dass die Daten auf allen Servern in der Bereitstellung unter demselben Pfad verfügbar sind.
Sie haben zwei Möglichkeiten, Zugriff auf den Datenspeicher zu gewähren:
Der Bereitstellung externen Speicher hinzufügen: Dies ist die bevorzugte Methode, wenn Sie einen Bucket wiederverwenden möchten.
Einmalanmeldedaten erstellen: Diese Anmeldedaten müssen länger als die Dauer des Import- oder Exportvorgangs gültig sein (z. B. 48 Stunden).
Die Anmeldedaten müssen Berechtigungen zum Auflisten und Lesen von Objekten im Bucket für Importe enthalten. Für Exporte nach Amazon S3 benötigen Sie die folgenden zusätzlichen Amazon S3-Berechtigungen:
s3:PutObjects3:AbortMultipartUploads3:ListBucketMultipartUploads
Weitere Informationen finden Sie unter IAM-Berechtigungen.
Spanner-Avro-Dateien importieren
So importieren Sie Daten, die Sie zuvor aus einer anderen Spanner-Datenbank (Spanner oder Spanner Omni) im Avro-Format exportiert haben:
Voraussetzungen für den Avro-Import
Bevor Sie mit dem Avro-Import beginnen, müssen Sie sicherstellen, dass Ihre Umgebung die folgenden Anforderungen erfüllt:
Sie haben die Zieldatenbank erstellt.
Die Schemaobjekte, die Sie importieren, sind noch nicht in der Datenbank vorhanden. Beim Avro-Import werden diese Tabellen vor dem Importieren von Daten erstellt.
Avro-Importanleitung
Ermitteln Sie den Pfad zum Ordner mit den exportierten Daten. Der Ordner enthält Folgendes:
Eine
spanner-export.json-DateiEine
ENTITY_NAME-manifest.json-Datei für jede exportierte Einheit (z. B. Tabelle, Sequenz oder Schema).Alle Avro-Dateien, die in den Manifestdateien aufgeführt sind.
Wenn Sie den Datenspeicher bereits als externen Speicher hinzugefügt haben, müssen Sie keine Anmeldedaten in den Pfad aufnehmen. Sie können den Pfad direkt angeben. Wenn Sie Einmalanmeldedaten verwenden, nutzen Sie die folgenden URL-Formate:
Cloud Storage:
gs://BUCKET_NAME/BASE_FOLDER[?accesskey=ACCESS_KEY&secret=SECRET_KEY]. HMAC-Anmeldedaten verwenden Weitere Informationen finden Sie unter HMAC-Schlüssel.Amazon S3:
s3://S3_BUCKET/BASE_FOLDER[?accesskey=ACCESS_KEY&secret=SECRET_KEY[&sessiontoken=SESSION_TOKEN]]Lokaler Dateiordner*:
file:///PATH_TO_DIR
Führen Sie den folgenden Befehl aus, um den Import zu starten:
spanner databases import DATABASE_ID --url="URL" --format=avro [--avro-skip-wait-for-index-creation]
Zusätzliche Hinweise
Beachten Sie beim Importieren von Avro-Dateien Folgendes:
Hinweis zum Importieren generierter Spalten und Änderungsstreams in der Spanner-Dokumentation.
Hinweis zum Importieren von Sequenzen in der Spanner-Dokumentation.
Hinweis zum Importieren von verschachtelten Tabellen und Fremdschlüsseln in der Spanner-Dokumentation
Wenn Sie den Import bestimmter Entitäten überspringen möchten, entfernen Sie sie aus der Datei
spanner-export.json.Das Erstellen von Indexen kann bei großen Datasets viel Zeit in Anspruch nehmen. Wenn Sie nicht auf das Erstellen von Indexen warten möchten, verwenden Sie das optionale Flag
--avro-skip-wait-for-index-creation.
Wenn der Importvorgang erfolgreich gestartet wird, wird eine ID für einen Vorgang mit langer Ausführungszeit zurückgegeben. Mit dieser ID können Sie den Status des Vorgangs verfolgen.
CSV-Dateien importieren
So importieren Sie Textdaten, die Sie aus einer anderen Datenbank exportiert haben:
Voraussetzungen für den CSV-Import
Bevor Sie mit dem CSV-Import beginnen, müssen Sie Folgendes tun:
Ihre Tabellen müssen einen der folgenden unterstützten Datentypen haben:
BOOL,INT64,FLOAT64,NUMERIC,STRING,DATE,TIMESTAMP,BYTESundJSON.Zieldatenbank erstellen
Erstellen Sie alle Tabellen, in die Sie Daten importieren möchten. Beim CSV-Import werden keine Tabellen erstellt.
Die CSV-Datei darf keine Kopfzeile enthalten.
Anleitung zum CSV-Import
Wenn Sie CSV-Dateien importieren möchten, müssen Sie eine Manifestdatei erstellen, in der die zu importierenden Daten beschrieben werden. Die Manifestdatei hat die folgende Struktur, die hier im Protobuf-Format definiert ist:
message ImportManifest {
// The per-table import manifest.
message TableManifest {
// Required. The name of the destination table.
string table_name = 1;
// Required. The CSV files to import. This value can be either a path or a glob pattern.
repeated string file_patterns = 2;
// The schema for a table column.
message Column {
// Required for each column that you specify. The name of the column in the
// destination table.
string column_name = 1;
// Required for each column that you specify. The type of the column.
string type_name = 2;
}
// Optional. The schema for the table columns.
repeated Column columns = 3;
}
// Required. The TableManifest of the tables to be imported.
repeated TableManifest tables = 1;
enum ProtoDialect {
GOOGLE_STANDARD_SQL = 0;
POSTGRESQL = 1;
}
// Optional. The dialect of the receiving database. Defaults to GOOGLE_STANDARD_SQL.
ProtoDialect dialect = 2;
}
Hier sehen Sie ein Beispiel für ein Manifest:
{
"tables": [
{
"table_name": "Albums",
"file_patterns": [
"gs://bucket1/Albums_1.csv",
"gs://bucket1/Albums_2.csv"
]
},
{
"table_name": "Singers",
"file_patterns": [
"gs://bucket1/Singers*.csv"
],
"columns": [
{"column_name": "SingerId", "type_name": "INT64"},
{"column_name": "FirstName", "type_name": "STRING"},
{"column_name": "LastName", "type_name": "STRING"}
]
}
]
}
Die URL im folgenden Importbefehl muss auf den Ordner verweisen, der eine Manifestdatei im JSON-Format enthält, wie im Manifestbeispiel beschrieben. Diese Datei kann sich in Cloud Storage, Amazon S3 oder einem lokalen Dateiordner befinden. Dabei wird dasselbe URL-Format für Anmeldedaten verwendet, das in der Avro-Importanleitung beschrieben ist. Führen Sie den folgenden Befehl aus, um den Import zu starten:
spanner databases import DATABASE_ID --url="URL" --format=csv
Optionen für den CSV-Import
Verwenden Sie die folgenden Flags, um anzupassen, wie Spanner Omni Textdateien verarbeitet:
--csv-date-format: Überschreibt das Format für Datumsspalten. Der Standardwert ist%Y-%m-%d. Beispiel:%d/%m/%Y.--csv-timestamp-format: Überschreibt das Format für Zeitstempelspalten. Verwenden Sie diese Option nur, wenn das Format in der CSV-Datei nicht von Spanner Omni unterstützt wird. Beispiel:%d/%m/%Y %H:%M:%S%Ez.--csv-delimiter: Überschreibt das Trennzeichen. Das Standardtrennzeichen ist ein Komma.--csv-quote-char: Überschreibt das Anführungszeichen. Der Standardwert ist ein doppeltes Anführungszeichen.--csv-escape-char: Überschreibt das Escape-Zeichen. Der Standardwert ist ein doppeltes Anführungszeichen.--csv-null-string: Überschreibt den String, derNULL-Werte darstellt. Die Standardeinstellung ist\N.--csv-has-trailing-delimiters: Gibt an, ob die CSV-Dateien nachgestellte Trennzeichen haben. Der Standardwert istfalse.
In Avro-Dateien exportieren
Wenn Sie Daten in Avro-Dateien exportieren möchten, folgen Sie der Anleitung zum URL-Format unter Avro-Import.
Jeder Server in der Bereitstellung kann Daten in den bereitgestellten Datenspeicher schreiben. Wenn Sie einen lokalen Dateipfad als Ziel verwenden, müssen alle Server Zugriff auf denselben Pfad haben und parallel in diesen Pfad schreiben können.
Das System exportiert alle Tabellen und Einheiten in der Datenbank. Geben Sie einen neuen, leeren Ordnerpfad für die exportierten Daten an.
Führen Sie den folgenden Befehl aus, um den Export zu starten:
spanner databases export DATABASE_ID --url="URL" --format=avro
CSV-Exporte unterstützen nur Tabellen und exportieren nicht das Datenbankschema.
In CSV-Dateien exportieren
Beim CSV-Export werden nur das Datenbankschema und die Supporttabellen exportiert. Führen Sie den folgenden Befehl aus, um Daten in CSV-Dateien zu exportieren:
spanner databases export DATABASE_ID --url="URL" --format=csv
Fehlerbehebung
Wenn ein Import fehlschlägt, werden Schemaaktualisierungen und importierte Daten nicht automatisch rückgängig gemacht. Bereinigen Sie die Datenbank manuell, bevor Sie den Vorgang noch einmal versuchen.
Die Geschwindigkeit eines Importvorgangs hängt von mehreren Faktoren ab, z. B. von der Anzahl der Dateien im Ordner, den verfügbaren Rechenressourcen in der Bereitstellung und der Festplattengeschwindigkeit. Wenn genügend Ressourcen verfügbar sind, importiert das System Dateien parallel.