Schema und Daten aus Teradata migrieren

Durch die Kombination des BigQuery Data Transfer Service und eines speziellen Migrations-Agents können Sie Ihre Daten von einer lokalen Teradata Data Warehouse-Instanz nach BigQuery kopieren. In diesem Dokument wird der schrittweise Prozess der Datenmigration aus Teradata mithilfe des BigQuery Data Transfer Service beschrieben.

Vorbereitung

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub APIs aktivieren.

    Aktivieren Sie die APIs

  5. Erstellen Sie ein Dienstkonto:

    1. Wechseln Sie in der Google Cloud Console zur Seite Dienstkonto erstellen.

      Zur Seite „Dienstkonto erstellen“
    2. Wählen Sie Ihr Projekt aus.
    3. Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.

      Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel: Service account for quickstart.

    4. Klicken Sie auf Erstellen und fortfahren.
    5. Weisen Sie dem Dienstkonto die folgenden Rollen zu: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.

      Wenn Sie eine Rolle zuweisen möchten, wählen Sie die Liste Rolle auswählen aus und wählen Sie die Rolle aus.

      Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.

    6. Klicken Sie auf Weiter.
    7. Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.

      Schließen Sie das Browserfenster nicht. Sie verwenden es in der nächsten Aufgabe.

  6. Erstellen Sie einen Dienstkontoschlüssel:

    1. Klicken Sie in der Google Cloud Console auf die E-Mail-Adresse des von Ihnen erstellten Dienstkontos.
    2. Klicken Sie auf Schlüssel.
    3. Klicken Sie auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
    4. Klicken Sie auf Erstellen. Daraufhin wird eine JSON-Schlüsseldatei auf Ihren Computer heruntergeladen.
    5. Klicken Sie auf Schließen.
  7. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  8. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  9. BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub APIs aktivieren.

    Aktivieren Sie die APIs

  10. Erstellen Sie ein Dienstkonto:

    1. Wechseln Sie in der Google Cloud Console zur Seite Dienstkonto erstellen.

      Zur Seite „Dienstkonto erstellen“
    2. Wählen Sie Ihr Projekt aus.
    3. Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.

      Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel: Service account for quickstart.

    4. Klicken Sie auf Erstellen und fortfahren.
    5. Weisen Sie dem Dienstkonto die folgenden Rollen zu: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.

      Wenn Sie eine Rolle zuweisen möchten, wählen Sie die Liste Rolle auswählen aus und wählen Sie die Rolle aus.

      Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.

    6. Klicken Sie auf Weiter.
    7. Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.

      Schließen Sie das Browserfenster nicht. Sie verwenden es in der nächsten Aufgabe.

  11. Erstellen Sie einen Dienstkontoschlüssel:

    1. Klicken Sie in der Google Cloud Console auf die E-Mail-Adresse des von Ihnen erstellten Dienstkontos.
    2. Klicken Sie auf Schlüssel.
    3. Klicken Sie auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
    4. Klicken Sie auf Erstellen. Daraufhin wird eine JSON-Schlüsseldatei auf Ihren Computer heruntergeladen.
    5. Klicken Sie auf Schließen.
  12. Der heruntergeladene Schlüssel hat folgendes Format:

    {
      "type": "service_account",
      "project_id": "PROJECT_ID",
      "private_key_id": "KEY_ID",
      "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
      "client_email": "SERVICE_ACCOUNT_EMAIL",
      "client_id": "CLIENT_ID",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
    }
    

    Bewahren Sie den Schlüssel sicher auf, da er zur Authentifizierung als Ihr Dienstkonto verwendet werden kann. Sie können diese Datei bei Bedarf verschieben und umbenennen.

Erforderliche Berechtigungen festlegen

Achten Sie darauf, dass das Hauptkonto, das die Übertragung erstellt, die folgenden Rollen in dem Projekt hat, das den Übertragungsjob enthält:

  • Loganzeige (roles/logging.viewer)
  • Storage-Administrator (roles/storage.admin) oder eine benutzerdefinierte Rolle mit folgenden Berechtigungen:
    • storage.objects.create
    • storage.objects.get
    • storage.objects.list
  • BigQuery-Administrator (roles/bigquery.admin) oder eine benutzerdefinierte Rolle, die folgende Berechtigungen gewährt:
    • bigquery.datasets.create
    • bigquery.jobs.create
    • bigquery.jobs.get
    • bigquery.jobs.listAll
    • bigquery.transfers.get
    • bigquery.transfers.update

Dataset erstellen

Erstellen Sie ein BigQuery-Dataset zum Speichern Ihrer Daten. Sie müssen keine Tabellen erstellen.

Cloud Storage-Bucket erstellen

Erstellen Sie einen Cloud Storage-Bucket für das Staging der Daten während des Übertragungsjobs.

Lokale Umgebung vorbereiten

Führen Sie die Aufgaben in diesem Abschnitt aus, um Ihre lokale Umgebung für den Übertragungsjob vorzubereiten.

Lokale Anforderungen an Maschinen

  • Der Migrations-Agent verwendet eine JDBC-Verbindung mit der Teradata-Instanz und Google Cloud APIs. Achten Sie darauf, dass der Netzwerkzugriff nicht von einer Firewall blockiert wird.
  • Prüfen Sie, ob die Java-Laufzeitumgebung 8 oder höher installiert ist.
  • Achten Sie darauf, dass Sie genügend Speicherplatz für die ausgewählte Extraktionsmethode haben, wie unter Extraktionsmethode beschrieben.
  • Wenn Sie sich für die TPT-Extraktion (Teradata Parallel Transporter) entscheiden, muss das Dienstprogramm tbuild installiert sein. Weitere Informationen zur Auswahl einer Extraktionsmethode finden Sie unter Extraktionsmethode.

Details zur Teradata-Verbindung

  • Sie benötigen den Nutzernamen und das Passwort eines Teradata-Nutzers mit Lesezugriff auf die Systemtabellen und die zu migrierenden Tabellen.

  • Sie müssen den Hostnamen und die Portnummer kennen, um eine Verbindung zur Teradata-Instanz herzustellen.

JDBC-Treiber herunterladen

Laden Sie die JDBC-Treiberdateiterajdbc4.jar von Teradata auf einen Computer herunter, der eine Verbindung zum Data Warehouse herstellen kann.

Legen Sie die Variable GOOGLE_APPLICATION_CREDENTIALS fest:

Legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS für den Dienstkontoschlüssel fest, den Sie im Abschnitt Vorbereitung heruntergeladen haben.

VPC Service Controls-Regel für ausgehenden Traffic aktualisieren

Fügen Sie der Regel für ausgehenden Traffic im VPC Service Controls-Perimeter ein von BigQuery Data Transfer Service verwaltetes Google Cloud-Projekt (Projektnummer: 990232121269) hinzu.

Für die Kommunikation zwischen dem lokal ausgeführten Agent und dem BigQuery Data Transfer Service wird Pub/Sub-Nachrichten in einem Übertragungsthema veröffentlicht. BigQuery Data Transfer Service muss Befehle an den Agent senden, um Daten zu extrahieren. Außerdem muss der Agent Nachrichten zurück in BigQuery Data Transfer Service veröffentlichen, um den Status zu aktualisieren und Antworten zur Datenextraktion zurückzugeben.

Benutzerdefinierte Schemadatei erstellen

Wenn Sie anstelle der automatischen Schemaerkennung eine benutzerdefinierte Schemadatei verwenden möchten, erstellen Sie sie manuell oder lassen Sie den Migrations-Agent bei der Initialisierung des Agent eine erstellen.

Wenn Sie eine Schemadatei manuell erstellen und die Google Cloud Console zum Erstellen einer Übertragung verwenden möchten, laden Sie die Schemadatei in einen Cloud Storage-Bucket in dem Projekt hoch, das Sie für die Übertragung verwenden möchten.

Den Migrations-Agent herunterladen

Laden Sie den Migrations-Agent auf einen Computer herunter, der eine Verbindung zum Data Warehouse herstellen kann. Verschieben Sie die JAR-Datei des Migrations-Agent in dasselbe Verzeichnis wie die Teradata-JAR-Datei des JDBC-Treibers.

Übertragung einrichten

Erstellen Sie eine Übertragung mit dem BigQuery Data Transfer Service.

Wenn Sie eine benutzerdefinierte Schemadatei automatisch erstellen möchten, verwenden Sie den Migrations-Agent, um die Übertragung einzurichten.

Sie können On-Demand-Übertragungen nicht mit dem bq-Befehlszeilentool erstellen. Sie müssen stattdessen die Google Cloud Console oder die BigQuery Data Transfer Service API verwenden.

Wenn Sie eine wiederkehrende Übertragung erstellen, empfehlen wir dringend, eine Schemadatei anzugeben, damit Daten aus nachfolgenden Übertragungen beim Laden in BigQuery ordnungsgemäß partitioniert werden können. Ohne Schemadatei leitet BigQuery Data Transfer Service das Tabellenschema von den übertragenen Quelldaten ab und alle Informationen zu Partitionierung, Clustering, Primärschlüssel und Änderungsverfolgung gehen verloren. Außerdem überspringen nachfolgende Übertragungen zuvor migrierte Tabellen nach der ersten Übertragung. Weitere Informationen zum Erstellen einer Schemadatei finden Sie unter Benutzerdefinierte Schemadatei.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.

    Zur Seite "BigQuery"

  2. Klicken Sie auf Datenübertragungen.

  3. Klicken Sie auf Create Transfer (Übertragung erstellen).

  4. Führen Sie im Abschnitt Quelltyp folgende Schritte aus:

    • Wählen Sie Migration: Teradata.
    • Geben Sie als Konfigurationsname für Übertragung den Namen für die Übertragung ein, der angezeigt werden soll, z. B. My Migration. Der angezeigte Name kann ein beliebiger Wert sein, mit dem Sie die Übertragung leicht identifizieren können, wenn Sie sie später ändern müssen.
    • Optional: Für Zeitplanoptionen können Sie den Standardwert Täglich (basierend auf der Zeit der Erstellung) belassen oder eine andere Zeit für eine wiederkehrende, inkrementelle Übertragung wählen. Andernfalls wählen Sie für eine einmalige Übertragung On-Demand.
    • Wählen Sie für Zieleinstellungen das entsprechende Dataset aus.

      Neue Teradata-Migration allgemein.

  5. Fahren Sie im Abschnitt Details zur Datenquelle mit spezifischen Details für Ihre Teradata-Übertragung fort.

    • Wählen Sie als Datenbanktyp Teradata aus.
    • Suchen Sie unter Cloud Storage-Bucket nach dem Namen des Cloud Storage-Buckets für das Staging der Migrationsdaten. Geben Sie nicht das Präfix gs:// ein, sondern geben Sie nur den Bucket-Namen ein.
    • Geben Sie unter Datenbankname den Namen der Quellendatenbank in Teradata ein.
    • Geben Sie für Tabellennamensmuster ein Muster ein, das mit den Tabellennamen in der Quelldatenbank übereinstimmt. Sie können das Muster mit regulären Ausdrücken angeben. Beispiel:

      • sales|expenses führt zu Übereinstimmungen mit Tabellen, die sales und expenses heißen.
      • .* führt zu Übereinstimmung mit allen Tabellen.
    • Geben Sie unter E-Mail-Adresse des Dienstkontos die E-Mail-Adresse ein, die den Anmeldedaten eines Dienstkontos zugeordnet ist, die von einem Migrations-Agent verwendet werden.

    • Optional: Wenn Sie eine benutzerdefinierte Schemadatei verwenden, geben Sie den Pfad und den Dateinamen dieser Datei in das Feld Schemadateipfad ein. Wenn Sie keine benutzerdefinierte Schemadatei bereitstellen, erkennt BigQuery das Tabellenschema automatisch auf Basis der übertragenen Quelldaten. Sie können Ihre eigene Schemadatei erstellen, wie in der folgenden Abbildung gezeigt, oder den Migrations-Agent verwenden, um eine Schemadatei zu erstellen. Informationen zum Erstellen einer Schemadatei finden Sie unter Migrations-Agent initialisieren.

  6. Wählen Sie im Menü Dienstkonto ein Dienstkonto aus den Dienstkonten aus, die mit Ihrem Google Cloud-Projekt verknüpft sind. Sie können Ihre Übertragung mit einem Dienstkonto verknüpfen, anstatt Ihre Nutzeranmeldedaten zu verwenden. Weitere Informationen zur Verwendung von Dienstkonten mit Datenübertragungen finden Sie unter Dienstkonten verwenden.

  7. Optional: Gehen Sie im Abschnitt Benachrichtigungsoptionen so vor:

    • Klicken Sie auf die Ein/Aus-Schaltfläche E-Mail-Benachrichtigungen, wenn der Übertragungsadministrator eine E-Mail-Benachrichtigung erhalten soll, falls eine Übertragung fehlschlägt.
    • Klicken Sie auf die Ein/Aus-Schaltfläche Pub/Sub-Benachrichtigungen, um Pub/Sub-Ausführungsbenachrichtigungen für Ihre Übertragung zu konfigurieren. Wählen Sie unter Pub/Sub-Thema auswählen Ihr Thema aus oder klicken Sie auf Thema erstellen.
  8. Klicken Sie auf Speichern.

  9. Klicken Sie auf der Seite Übertragungsdetails auf den Tab Konfiguration.

  10. Notieren Sie sich den Ressourcennamen für diese Übertragung, da Sie ihn für die Ausführung des Migrations-Agent benötigen.

bq

Wenn Sie eine Cloud Storage-Übertragung mit dem bq-Tool erstellen, wird die Übertragungskonfiguration alle 24 Stunden wiederholt. Verwenden Sie für On-Demand-Übertragungen die Google Cloud Console oder die BigQuery Data Transfer Service API.

Sie können Benachrichtigungen nicht mit dem bq-Tool konfigurieren.

Geben Sie den Befehl bq mk ein und geben Sie das --transfer_config-Flag für die Übertragungserstellung an. Die folgenden Flags sind ebenfalls erforderlich:

  • --data_source
  • --display_name
  • --target_dataset
  • --params
bq mk \
--transfer_config \
--project_id=project ID \
--target_dataset=dataset \
--display_name=name \
--service_account_name=service_account \
--params='parameters' \
--data_source=data source

Dabei gilt:

  • project ID ist die Projekt-ID. Wenn --project_id nicht bereitgestellt wird, um ein bestimmtes Projekt anzugeben, wird das Standardprojekt verwendet.
  • dataset ist das Dataset, auf das Sie die Übertragungskonfiguration abzielen möchten (--target_dataset).
  • name ist der Anzeigename (--display_name) für die Übertragungskonfiguration. Der angezeigte Name der Übertragung kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.
  • service_account ist der Name des Dienstkontos, der zur Authentifizierung der Übertragung verwendet wird. Das Dienstkonto sollte zum selben project_id gehören, das für die Erstellung der Übertragung verwendet wurde, und sollte alle aufgeführten erforderlichen Berechtigungen haben.
  • parameters enthält die Parameter (--params) für die erstellte Übertragungskonfiguration im JSON-Format. Beispiel: --params='{"param":"param_value"}'.
    • Verwenden Sie für Teradata-Migrationen folgende Parameter:
      • bucket ist der Cloud Storage-Bucket, der während der Migration als Staging-Bereich fungiert.
      • database_type ist Teradata.
      • agent_service_account ist die E-Mail-Adresse, die mit dem Dienstkonto, das Sie erstellt haben, verknüpft ist.
      • database_name ist der Name der Quelldatenbank in Teradata.
      • table_name_patterns ist ein oder mehrere Muster zum Abgleich der Tabellennamen in der Quelldatenbank. Sie können das Muster mit regulären Ausdrücken angeben. Das Muster sollte der Java-Syntax für reguläre Ausdrücke folgen. Beispiel:
        • sales|expenses führt zu Übereinstimmungen mit Tabellen, die sales und expenses heißen.
        • .* führt zu Übereinstimmung mit allen Tabellen.
  • data_source ist die Datenquelle (--data_source): on_premises.

Beispiel: Mit folgendem Befehl wird eine Teradata-Übertragung namens My Transfer mit dem Cloud Storage-Bucket mybucket und dem Ziel-Dataset mydataset erstellt. Bei der Übertragung werden alle Tabellen aus dem Teradata Data Warehouse mydatabase migriert. Die optionale Schemadatei ist myschemafile.json.

bq mk \
--transfer_config \
--project_id=123456789876 \
--target_dataset=MyDataset \
--display_name='My Migration' \
--params='{"bucket": "mybucket", "database_type": "Teradata",
"database_name":"mydatabase", "table_name_patterns": ".*",
"agent_service_account":"myemail@mydomain.com", "schema_file_path":
"gs://mybucket/myschemafile.json"}' \
--data_source=on_premises

Nachdem Sie den Befehl ausgeführt haben, erhalten Sie eine Meldung wie die Folgende:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

Folgen Sie der Anleitung und fügen Sie den Authentifizierungscode in die Befehlszeile ein.

API

Verwenden Sie die Methode projects.locations.transferConfigs.create und geben Sie eine Instanz der Ressource TransferConfig an.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create a teradata transfer config.
public class CreateTeradataTransfer {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    String databaseType = "Teradata";
    String bucket = "cloud-sample-data";
    String databaseName = "MY_DATABASE_NAME";
    String tableNamePatterns = "*";
    String serviceAccount = "MY_SERVICE_ACCOUNT";
    String schemaFilePath = "/your-schema-path";
    Map<String, Value> params = new HashMap<>();
    params.put("database_type", Value.newBuilder().setStringValue(databaseType).build());
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("database_name", Value.newBuilder().setStringValue(databaseName).build());
    params.put("table_name_patterns", Value.newBuilder().setStringValue(tableNamePatterns).build());
    params.put("agent_service_account", Value.newBuilder().setStringValue(serviceAccount).build());
    params.put("schema_file_path", Value.newBuilder().setStringValue(schemaFilePath).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Teradata Config Name")
            .setDataSourceId("on_premises")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    createTeradataTransfer(projectId, transferConfig);
  }

  public static void createTeradataTransfer(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = client.createTransferConfig(request);
      System.out.println("Cloud teradata transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Cloud teradata transfer was not created." + ex.toString());
    }
  }
}

Migrations-Agent

Sie können die Übertragung optional direkt vom Migrations-Agent aus einrichten. Weitere Informationen finden Sie unter Migrations-Agent initialisieren.

Den Migrations-Agent initialisieren

Sie müssen den Migrations-Agent für eine neue Übertragung initialisieren. Die Initialisierung ist nur einmal für eine Übertragung erforderlich, unabhängig davon, ob diese wiederholt wird oder nicht. Bei der Initialisierung wird nur der Migrations-Agent konfiguriert und nicht die Übertragung gestartet.

Wenn Sie mithilfe des Migrations-Agents eine benutzerdefinierte Schemadatei erstellen, muss in Ihrem Arbeitsverzeichnis ein beschreibbares Verzeichnis mit dem Namen des Projekts vorhanden sein, das Sie für die Übertragung verwenden möchten. Hier erstellt der Migrations-Agent die Schemadatei. Wenn Sie beispielsweise in /home arbeiten und die Übertragung im Projekt myProject einrichten, erstellen Sie das Verzeichnis /home/myProject und stellen Sie sicher, dass es für Nutzer beschreibbar ist.

  1. Öffnen Sie eine neue Sitzung. Führen Sie in der Befehlszeile den Initialisierungsbefehl aus, der folgende Form hat:

    java -cp \
    OS-specific-separated-paths-to-jars (JDBC and agent) \
    com.google.cloud.bigquery.dms.Agent \
    --initialize
    

    Das folgende Beispiel zeigt den Initialisierungsbefehl, wobei sich die JAR-Dateien für den JDBC-Treiber und den Migrations-Agent in einem lokalen migration-Verzeichnis befinden:

    Unix, Linux, Mac OS

    java -cp \
    /usr/local/migration/terajdbc4.jar:/usr/local/migration/mirroring-agent.jar \
    com.google.cloud.bigquery.dms.Agent \
    --initialize
    

    Windows

    Kopieren Sie alle Dateien in den Ordner C:\migration (oder passen Sie die Pfade im Befehl an) und führen Sie dann Folgendes aus:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --initialize
    
  2. Konfigurieren Sie folgende Optionen, sobald Sie dazu aufgefordert werden:

    1. Wählen Sie aus, ob die TPT-Vorlage (Teradata Parallel Transporter) auf dem Laufwerk gespeichert werden soll. Wenn Sie die TPT-Extraktionsmethode verwenden möchten, können Sie die gespeicherte Vorlage mit Parametern ändern, die zu Ihrer Teradata-Instanz passen.
    2. Geben Sie den Pfad zu einem lokalen Verzeichnis ein, das der Übertragungsjob für die Dateiextraktion verwenden kann. Stellen Sie sicher, dass Sie über den empfohlenen Mindestspeicherplatz verfügen, wie unter Extraktionsmethode beschrieben.
    3. Geben Sie den Datenbankhostnamen ein.
    4. Geben Sie den Datenbankport ein.
    5. Wählen Sie aus, ob TPT (Teradata Parallel Transporter) als Extraktionsmethode verwendet werden soll.
    6. Optional: Geben Sie den Pfad zu einer Datei mit Datenbankanmeldedaten ein.
    7. Wählen Sie aus, ob ein Namen für die BigQuery Data Transfer Service-Konfiguration angegeben werden soll.

      Wenn Sie den Migrations-Agent für eine Übertragung initialisieren, die Sie bereits eingerichtet haben, gehen Sie so vor:

      1. Geben Sie den Ressourcennamen der Übertragung ein. Sie finden ihn auf der Seite Übertragungsdetails auf dem Tab Konfiguration.
      2. Geben Sie bei entsprechender Aufforderung Pfad und Dateinamen der zu erstellenden Konfigurationsdatei des Migrations-Agenten ein. Sie verweisen auf diese Datei, wenn Sie den Migrations-Agent ausführen, um die Übertragung zu starten.
      3. Überspringen Sie die restlichen Schritte.

      Wenn Sie eine Übertragung mit dem Migrations-Agent einrichten, drücken Sie die Eingabetaste, um zur nächsten Eingabeaufforderung zu springen.

    8. Geben Sie die Google Cloud-Projekt-ID ein.

    9. Geben Sie den Namen der Quelldatenbank in Teradata ein.

    10. Geben Sie ein Muster ein, das mit den Tabellennamen in der Quelldatenbank übereinstimmt. Sie können das Muster mit regulären Ausdrücken angeben. Beispiel:

      • sales|expenses führt zu Übereinstimmungen mit Tabellen, die sales und expenses heißen.
      • .* führt zu Übereinstimmung mit allen Tabellen.
    11. Optional: Geben Sie den Pfad zu einer lokalen JSON-Schemadatei ein. Dies wird für wiederkehrende Übertragungen dringend empfohlen.

      Wenn Sie keine Schemadatei verwenden oder wenn Sie möchten, dass der Migrations-Agent eine für Sie erstellt, drücken Sie die Eingabetaste, um zur nächsten Eingabeaufforderung zu springen.

    12. Wählen Sie aus, ob eine neue Schemadatei erstellt werden soll.

      Wenn Sie eine Schemadatei erstellen möchten, gehen Sie so vor:

      1. Geben Sie yes ein.
      2. Geben Sie den Nutzernamen eines Teradata-Nutzers ein, der Lesezugriff auf die Systemtabellen und die zu migrierenden Tabellen hat.
      3. Geben Sie das Passwort für diesen Nutzer ein.

        Der Migrations-Agent erstellt die Schemadatei und gibt ihren Speicherort aus.

      4. Ändern Sie die Schemadatei, um Partitionierung, Clustering, Primärschlüssel und die Änderungsverfolgungsspalten zu ändern und prüfen Sie, ob Sie dieses Schema für die Übertragungskonfiguration verwenden möchten. Tipps finden Sie unter Benutzerdefinierte Schemadatei.

      5. Drücken Sie Enter, um zur nächsten Eingabeaufforderung zu springen.

      Wenn Sie keine Schemadatei erstellen möchten, geben Sie no ein.

    13. Geben Sie den Namen des Cloud Storage-Ziel-Buckets für das Staging von Migrationsdaten ein, bevor Sie in BigQuery laden. Wenn der Migrations-Agent eine benutzerdefinierte Schemadatei erstellt hat, wird diese auch in diesen Bucket hochgeladen.

    14. Geben Sie den Namen des Ziel-Datasets in BigQuery ein.

    15. Geben Sie einen Anzeigenamen für die Übertragungskonfiguration ein.

    16. Geben Sie Pfad und Dateinamen für die zu erstellende Konfigurationsdatei des Migrations-Agent ein.

  3. Nach der Eingabe aller angeforderten Parameter erstellt der Migrations-Agent eine Konfigurationsdatei und gibt sie in den von Ihnen angegebenen lokalen Pfad aus. Im nächsten Abschnitt erfahren Sie mehr über die Konfigurationsdatei.

Konfigurationsdatei für den Migrations-Agent

Die im Initialisierungsschritt erstellte Konfigurationsdatei sieht in etwa so aus:


{
  "agent-id": "81f452cd-c931-426c-a0de-c62f726f6a6f",
  "transfer-configuration": {
    "project-id": "123456789876",
    "location": "us",
    "id": "61d7ab69-0000-2f6c-9b6c-14c14ef21038"
  },
  "source-type": "teradata",
  "console-log": false,
  "silent": false,
  "teradata-config": {
    "connection": {
      "host": "localhost"
    },
    "local-processing-space": "extracted",
    "database-credentials-file-path": "",
    "max-local-storage": "50GB",
    "gcs-upload-chunk-size": "32MB",
    "use-tpt": true,
    "transfer-views": false,
    "max-sessions": 0,
    "spool-mode": "NoSpool",
    "max-parallel-upload": 4,
    "max-parallel-extract-threads": 1,
    "session-charset": "UTF8",
    "max-unload-file-size": "2GB"
  }
}
   

Optionen für Übertragungsjobs in der Konfigurationsdatei des Migrations-Agents

  • transfer-configuration: Informationen zu dieser Übertragungskonfiguration in BigQuery.
  • teradata-config: Informationen speziell für diese Teradata-Extraktion:

    • connection: Informationen zu Hostnamen und Port
    • local-processing-space: Der Extraktionsordner, in den der Agent Tabellendaten extrahiert, bevor er sie in den Cloud-Speicher hochlädt.
    • database-credentials-file-path: (Optional) Der Pfad zu einer Datei, die Anmeldedaten für die automatische Verbindung zur Teradata-Datenbank enthält. Die Datei sollte zwei Zeilen für die Anmeldedaten enthalten. Sie können einen Nutzernamen und ein Passwort verwenden, wie im folgenden Beispiel gezeigt:
      username=abc
      password=123
      
      Sie können stattdessen auch ein Secret von SecretManager verwenden:
      username=abc
      secret_resource_id=projects/my-project/secrets/my-secret-name/versions/1
      
      Achten Sie bei der Verwendung einer Datei mit Anmeldedaten darauf, den Zugriff auf den Ordner zu kontrollieren, in dem Sie die Datei im lokalen Dateisystem speichern, da diese nicht verschlüsselt wird. Wenn kein Pfad angegeben wird, werden Sie beim Starten eines Agents zur Eingabe eines Nutzernamens und eines Kennworts aufgefordert.
    • max-local-storage: Die maximale Menge lokalen Speichers, die für die Extraktion im angegebenen Staging-Verzeichnis verwendet werden soll. Der Standardwert ist 50GB. Das unterstützte Format ist: numberKB|MB|GB|TB.

      In allen Extraktionsmodi werden Dateien nach dem Hochladen in Cloud Storage aus dem lokalen Staging-Verzeichnis gelöscht.

    • use-tpt: Weist den Migrations-Agent an, Teradata Parallel Transporter (TPT) als Extraktionsmethode zu verwenden.

      Für jede Tabelle generiert der Migrations-Agent ein TPT-Skript, startet einen tbuild-Prozess und wartet auf den Abschluss. Sobald der tbuild-Prozess abgeschlossen ist, listet der Agent die extrahierten Dateien auf und lädt sie in den Cloud-Speicher hoch. Anschließend wird das TPT-Skript gelöscht. Weitere Informationen finden Sie unter Extraktionsmethode.

    • transfer-views: Weist den Migrations-Agent an, auch Daten aus Ansichten zu übertragen. Verwenden Sie diese Option nur, wenn Sie während der Migration die Datenanpassung vornehmen müssen. In anderen Fällen sollten Sie Ansichten zu BigQuery-Ansichten migrieren. Für diese Option gelten die folgenden Voraussetzungen:

      • Sie können diese Option nur mit Teradata Version 16.10 und höher verwenden.
      • Eine Ansicht sollte eine Ganzzahlspalte „Partition“ definiert haben, die auf eine ID der Partition für die angegebene Zeile in der zugrunde liegenden Tabelle verweist.
    • max-sessions: Gibt die maximale Anzahl der vom Exportjob (FastExport oder TPT) verwendeten Sitzungen an. Bestimmen Sie 0, so ermittelt die Teradata-Datenbank die maximale Anzahl von Sitzungen für jeden Exportjob.

    • gcs-upload-chunk-size: Eine große Datei wird in Blöcken in Cloud Storage hochgeladen. Dieser Parameter steuert zusammen mit max-parallel-upload, wie viele Daten gleichzeitig in Cloud Storage hochgeladen werden. Beispiel: Wenn gcs-upload-chunk-size 64 MB beträgt und max-parallel-upload 10 MB ist, kann ein Migrations-Agent theoretisch 640 MB (64 MB * 10) an Daten gleichzeitig hochladen. Wenn der Block nicht hochgeladen werden kann, muss der gesamte Block wiederholt werden. Die Blockgröße muss klein sein.

    • max-parallel-upload: Dieser Wert bestimmt die maximale Anzahl von Threads, die vom Migrations-Agent zum Hochladen von Dateien in Cloud Storage verwendet werden. Wenn nichts angegeben ist, wird standardmäßig die Anzahl der Prozessoren verwendet, die für die Java-VM verfügbar sind. Als Faustregel gilt: Wählen Sie den Wert anhand der Anzahl der Kerne auf der Maschine aus, auf der der Agent ausgeführt wird. Wenn Sie also n Kerne haben, sollte die optimale Anzahl von Threads n sein. Wenn die Kerne hyper-threaded sind, sollte die optimale Zahl (2 * n) sein. Es gibt auch andere Einstellungen wie die Netzwerkbandbreite, die Sie beim Anpassen von max-parallel-upload berücksichtigen müssen. Wenn Sie diesen Parameter anpassen, kann sich die Leistung beim Hochladen in Cloud Storage verbessern.

    • spool-mode: In den meisten Fällen ist der NoSpool-Modus die beste Option. NoSpool ist die Standardeinstellung in der Agent-Konfiguration. Sie können diesen Parameter ändern, wenn einer der Nachteile von NoSpool auf Ihren Fall zutrifft.

    • max-unload-file-size: Legt die maximale extrahierte Dateigröße fest. Dieser Parameter wird für TPT-Extraktionen nicht erzwungen.

    • max-parallel-extract-threads: Diese Konfiguration wird nur im FastExport-Modus verwendet. Sie bestimmt die Anzahl der parallelen Threads, die zum Extrahieren der Daten aus Teradata verwendet werden. Wenn Sie diesen Parameter anpassen, kann sich die Leistung bei der Extraktion verbessern.

    • tpt-template-path: Verwenden Sie diese Konfiguration, um ein benutzerdefiniertes TPT-Extraktionsskript als Eingabe bereitzustellen. Mit diesem Parameter können Sie Transformationen auf Ihre Migrationsdaten anwenden.

    • schema-mapping-rule-path: (Optional) Der Pfad zu einer Konfigurationsdatei, die eine Schemazuordnung zum Überschreiben der Standardzuordnungsregeln enthält. Einige Zuordnungstypen funktionieren nur mit dem Teradata Parallel Transporter-Modus (TPT).

      Beispiel: Zuordnung vom Teradata-Typ TIMESTAMP zum BigQuery-Typ DATETIME:

      {
      "rules": [
        {
          "database": {
              "name": "database.*",
              "tables": [
                 {
                   "name": "table.*"
                 }
              ]
          },
          "match": {
            "type": "COLUMN_TYPE",
            "value": "TIMESTAMP"
          },
          "action": {
            "type": "MAPPING",
            "value": "DATETIME"
          }
        }
      ]
      }
      

      Attribute:

      • database: (Optional) name ist ein regulärer Ausdruck für die einzubeziehenden Datenbanken. Alle Datenbanken sind standardmäßig enthalten.
      • tables: (Optional) enthält ein Array mit Tabellen. name ist ein regulärer Ausdruck für die einzuschließenden Tabellen. Alle Tabellen sind standardmäßig enthalten.
      • match: (Erforderlich)
        • type unterstützte Werte: COLUMN_TYPE.
        • value unterstützte Werte: TIMESTAMP, DATETIME.
      • action: (Erforderlich)
        • type unterstützte Werte: MAPPING.
        • value unterstützte Werte: TIMESTAMP, DATETIME.
    • compress-output: (Optional) Legt fest, ob Daten vor dem Speichern in Cloud Storage komprimiert werden sollen. Dies gilt nur im tpt-Modus. Standardmäßig ist dieser Wert false.

Ausführen des Migrations-Agent

Führen Sie nach dem Initialisieren des Migrations-Agent und dem Erstellen der Konfigurationsdatei die folgenden Schritte aus, um den Agent auszuführen und die Migration zu starten:

  1. Führen Sie den Agent aus. Dazu geben Sie die im vorhergehenden Initialisierungsschritt erstellten Pfade zum JDBC-Treiber, zum Migrations-Agent und zur Konfigurationsdatei an.

    java -cp \
    OS-specific-separated-paths-to-jars (JDBC and agent) \
    com.google.cloud.bigquery.dms.Agent \
    --configuration-file=path to configuration file
    

    Unix, Linux, Mac OS

    java -cp \
    /usr/local/migration/Teradata/JDBC/terajdbc4.jar:mirroring-agent.jar \
    com.google.cloud.bigquery.dms.Agent \
    --configuration-file=config.json
    

    Windows

    Kopieren Sie alle Dateien in den Ordner C:\migration (oder passen Sie die Pfade im Befehl an) und führen Sie dann Folgendes aus:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --configuration-file=config.json
    

    Wenn Sie mit der Migration fortfahren möchten, drücken Sie Enter. Der Agent fährt fort, wenn der bei der Initialisierung angegebene Klassenpfad gültig ist.

  2. Wenn Sie dazu aufgefordert werden, geben Sie den Nutzernamen und das Kennwort für die Datenbankverbindung ein. Wenn der Nutzername und das Passwort gültig sind, beginnt die Datenmigration.

    Optional Im Startbefehl für die Migration können Sie auch ein Flag verwenden, das eine Anmeldedatendatei an den Agent übergibt, anstatt jedes Mal den Nutzernamen und das Kennwort einzugeben. Weitere Informationen finden Sie im optionalen Parameter database-credentials-file-path in der Konfigurationsdatei des Agent. Führen Sie bei Verwendung einer Datei mit Anmeldedaten die entsprechenden Schritte aus, um den Zugriff auf den Ordner zu kontrollieren, in dem Sie die Datei im lokalen Dateisystem speichern, da diese nicht verschlüsselt wird.

  3. Lassen Sie diese Sitzung geöffnet, bis die Migration abgeschlossen ist. Wenn Sie eine wiederkehrende Migrationsübertragung erstellt haben, lassen Sie diese Sitzung unbegrenzt geöffnet. Wenn diese Sitzung unterbrochen wird, schlagen aktuelle und zukünftige Übertragungsausführungen fehl.

  4. Prüfen Sie regelmäßig, ob der Agent ausgeführt wird. Wenn eine Übertragungsausführung läuft und kein Agent innerhalb von 24 Stunden antwortet, schlägt die Übertragung fehl.

  5. Wenn der Migrations-Agent nicht mehr funktioniert, während die Übertragung ausgeführt wird oder geplant ist, zeigt die Google Cloud Console den Fehlerstatus an und fordert Sie auf, den Agent neu zu starten. Um den Migrations-Agent wieder zu starten, beginnen Sie am Anfang dieses Abschnitts mit dem Ausführen des Migrations-Agents mit dem Befehl zum Ausführen des Migrations-Agents. Sie müssen den Initialisierungsbefehl nicht wiederholen. Die Übertragung wird ab dem Punkt fortgesetzt, an dem die Tabellen nicht abgeschlossen wurden.

Migrationsfortschritt verfolgen

Sie können den Migrationsstatus in der Google Cloud Console aufrufen. Sie können auch Pub/Sub- oder E-Mail-Benachrichtigungen einrichten. Siehe BigQuery Data Transfer Service-Benachrichtigungen.

Der BigQuery Data Transfer Service plant und initiiert eine Übertragung nach einem Zeitplan, der beim Erstellen der Übertragungskonfiguration festgelegt wurde. Es ist wichtig, dass der Migrations-Agent ausgeführt wird, wenn eine Übertragung aktiv ist. Wenn innerhalb von 24 Stunden keine Updates seitens des Agents vorliegen, schlägt eine Übertragungsausführung fehl.

Beispiel für den Migrationsstatus in der Google Cloud Console:

Migrationsstatus

Migrations-Agenten aktualisieren

Ist eine neue Version des Migrations-Agents verfügbar, so müssen Sie den Migrations-Agent manuell aktualisieren. Um Benachrichtigungen zum BigQuery Data Transfer Service zu erhalten, abonnieren Sie die Versionshinweise.

Nächste Schritte