Migrar o esquema e os dados do Teradata

Com a combinação do serviço de transferência de dados do BigQuery e de um agente de migração especial, é possível copiar seus dados de uma instância de data warehouse local do Teradata para o BigQuery. Este documento descreve o processo passo a passo de migração de dados do Teradata usando o serviço de transferência de dados do BigQuery.

Antes de começar

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Cloud de Confiance console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Cloud de Confiance console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the following roles to the service account: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    7. Click Continue.
    8. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  5. Create a service account key:

    1. In the Cloud de Confiance console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.

Definir as permissões necessárias

Verifique se o principal que cria a transferência tem os papéis a seguir no projeto que contém o job de transferência:

  • Visualizador de registros (roles/logging.viewer)
  • Administrador de armazenamento (roles/storage.admin) ou um papel personalizado que concede as seguintes permissões:
    • storage.objects.create
    • storage.objects.get
    • storage.objects.list
  • Administrador do BigQuery (roles/bigquery.admin) ou um papel personalizado que concede as seguintes permissões:
    • bigquery.datasets.create
    • bigquery.jobs.create
    • bigquery.jobs.get
    • bigquery.jobs.listAll
    • bigquery.tables.get
    • bigquery.transfers.get
    • bigquery.transfers.update

Criar um conjunto de dados

Crie um conjunto de dados do BigQuery para armazenar os dados. Não é necessário criar tabelas.

Criar um bucket do Cloud Storage

Crie um bucket do Cloud Storage para preparar os dados durante o job de transferência.

Preparar o ambiente local

Conclua as tarefas nesta seção para preparar seu ambiente local para o job de transferência.

Requisitos de máquina local

  • O agente de migração usa uma conexão JDBC com a instância do Teradata e as APIs do Cloud de Confiance by S3NS . Verifique se o acesso à rede não está bloqueado por um firewall.
  • Certifique-se de que o Java Runtime Environment 8 ou posterior esteja instalado.
  • Verifique se você tem espaço de armazenamento suficiente para o método de extração escolhido, conforme descrito em Método de extração.
  • Se você decidiu usar a extração do Parallel Transporter (TPT) do Teradata, verifique se o utilitário tbuild está instalado. Para mais informações sobre como escolher um método de extração, consulte Método de extração.

Detalhes da conexão do Teradata

  • Verifique se você tem o nome de usuário e a senha de um usuário do Teradata com acesso de leitura às tabelas do sistema e às tabelas que estão sendo migradas.

  • Confira o nome do host e o número da porta para se conectar à instância do Teradata.

Fazer o download do driver JDBC

Faça o download do arquivo de driver JDBC terajdbc4.jar do Teradata para uma máquina que possa se conectar ao data warehouse.

Defina a variável GOOGLE_APPLICATION_CREDENTIALS

Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS para a chave da conta de serviço que você fez o download na seção Antes de começar.

Atualizar a regra de saída do VPC Service Controls

Adicione o projeto gerenciado do serviço de transferência de dados do BigQuery Cloud de Confiance by S3NS correspondente à sua região à regra de saída no perímetro do VPC Service Controls.

A tabela a seguir é uma lista de números de projetos para os locais regionais usados em transferências de dados. Adicione os números de projetos que correspondem ao local do seu conjunto de dados.

Locais multirregionais

Descrição multirregional Nome multirregional Números dos projetos
Data centers dentro de estados membro da União Europeia eu 17253722542
272853474138
420718595790
929473878322
990232121269
Data centers nos Estados Unidos us 1005756709729
140222280645
247872939591
312976397333
521896999118
525821192359
892499355189
949134172629
990232121269

Locais regionais

Descrição da região Nome da região Números dos projetos
América
Montreal northamerica-northeast1 603911341430
644379120249
665941355665
743643531530
990232121269
Toronto northamerica-northeast2 181203883014
569023246094
814935732186
833015518790
990232121269
México northamerica-south1 439376105624
737643102222
746316165749
863053761002
990232121269
São Paulo southamerica-east1 133435938206
376122552368
485381725001
796391836836
990232121269
Santiago southamerica-west1 1087357303029
348543783783
659924941015
862900136725
990232121269
Iowa us-central1 298453567688
788415223852
850878823175
986263347210
990232121269
Carolina do Sul us-east1 1055108947046
1084124504460
335013112247
724101498857
990232121269
Norte da Virgínia us-east4 1029854080039
517474920593
970314007431
98298633330
990232121269
Columbus, Ohio us-east5 1018267783826
386306739011
420397636038
778968775575
990232121269
Dallas us-south1 1000457898916
1047122215716
241710172671
955278753983
990232121269
Oregon us-west1 232019391832
341405773774
376906440760
477215631937
990232121269
Los Angeles us-west2 1082081077124
593499865061
796558996990
812061960238
990232121269
Salt Lake City us-west3 34769458069
488393466740
870087576864
878441810105
990232121269
Las Vegas us-west4 219770299440
421529192039
516260452158
653925368482
990232121269
Europa
Varsóvia europe-central2 408105394529
556626738827
613447812609
875068591969
990232121269
Finlândia europe-north1 1049140453480
148002628360
610856287987
657186468367
990232121269
Estocolmo europe-north2 264708615094
275871864623
353052212156
915614473443
990232121269
Madri europe-southwest1 1035291313153
1048466610864
16585749286
684773867031
990232121269
Bélgica europe-west1 311010690362
337985836396
348525528820
874692481832
990232121269
Berlim europe-west10 1014021387408
1021109191575
1076988971454
965306537493
990232121269
Turim europe-west12 624998300135
664251133452
672417986210
702529954322
990232121269
Londres europe-west2 1013046052024
424062913611
625972158490
707263280432
990232121269
Frankfurt europe-west3 1087781646048
143240061766
312688138599
715827071311
990232121269
Países Baixos europe-west4 110044889848
398757511504
557234723212
769143166592
990232121269
Zurique europe-west6 163551586425
378713015688
416925392034
669890417706
990232121269
Milão europe-west8 103481800693
1082157965924
23655501621
555661886352
990232121269
Paris europe-west9 1085882338778
176207547936
221990904254
670920836007
990232121269
Ásia-Pacífico
Taiwan asia-east1 21873972082
271898158674
389278959284
922460772707
990232121269
Hong Kong asia-east2 263483805684
773980783174
865347783058
90665746791
990232121269
Tóquio asia-northeast1 415417931028
53965067050
953665196151
983967577764
990232121269
Osaka asia-northeast2 205726704771
478186599828
57312416489
861476638029
990232121269
Seul asia-northeast3 320159292295
548035635347
791473645597
935702892639
990232121269
Mumbai asia-south1 13592990997
229940966341
68960523189
901420668689
990232121269
Délhi asia-south2 496191507005
54806403576
741779061357
809478923584
990232121269
Singapura asia-southeast1 541653567103
60558171982
753901882843
944188302893
990232121269
Jacarta asia-southeast2 1074047252998
17464964742
271871433529
427023413305
990232121269
Bangkok asia-southeast3 1020436856624
355273974477
603543103680
777922772431
990232121269
Sydney australia-southeast1 163046745040
591848239128
623326425100
814418810594
990232121269
Melbourne australia-southeast2 1062391852597
441829466914
714897033691
748594785463
990232121269
Oriente Médio
Doha me-central1 260539430499
380691191456
707684919235
799708208022
990232121269
Damã me-central2 1067269861014
364585730608
702115426609
932431265647
990232121269
Tel Aviv me-west1 356023739839
748664533815
869899828196
940471234508
990232121269
África
Johannesburgo africa-south1 366497204741
900693348777
930834390708
990232121269
995904484959
Outro
AWS ap-northeast-2 aws-ap-northeast-2 118757274428
227045504542
31525566793
415505940944
990232121269
AWS ap-southeast-2 aws-ap-southeast-2 179772227799
236687515237
779037664799
925378406445
990232121269
AWS eu-central-1 aws-eu-central-1 469423327197
5211207427
905007897524
989902812500
990232121269
AWS eu-west-1 aws-eu-west-1 477582827438
653238211450
795832028199
961178626984
990232121269
AWS us-east-1 aws-us-east-1 1005783963369
293187121246
622189180485
78860240845
990232121269
AWS us-west-2 aws-us-west-2 206681800614
264089603202
419256100048
79353630998
990232121269
Azure eastus2 azure-eastus2 1021739993926
1054000274357
495696597482
590387575526
990232121269
Azure westus2 azure-westus2 118244543872
242088193076
278777007439
662989519829
990232121269
Localização somente para uso interno (europe-west15) europe-west15 1075380375245
635354739083
663432613496
904125362271
990232121269
Local somente para uso interno (us-central2) us-central2 1085843140251
269725830808
498892726043
68311303080
990232121269
Local somente para uso interno (us-east7) us-east7 173063949542
661852837608
704905947583
956740768291
990232121269
Local sintético (us-synthetic1) us-synthetic1 131957618958
250975404179
740244847288
787843086952
990232121269
Local somente para uso interno (us-west8) us-west8 13105749132
248649202605
477355088721
653053504449
990232121269

O canal de comunicação entre o agente em execução no local e o serviço de transferência de dados do BigQuery é publicando mensagens do Pub/Sub em um tópico por transferência. O serviço de transferência de dados do BigQuery precisa enviar comandos ao agente para extrair dados, e o agente precisa publicar mensagens no serviço de transferência de dados do BigQuery para atualizar o status e retornar respostas de extração de dados.

Criar um arquivo de esquema personalizado

Para usar um arquivo de esquema personalizado em vez de detecção automática de esquema, crie um manualmente ou faça com que o agente de migração crie um quando você inicializar o agente.

Se você criar um arquivo de esquema manualmente e pretende usar o console Cloud de Confiance para criar uma transferência, faça upload do arquivo de esquema para um bucket do Cloud Storage no mesmo projeto que você planeja usar para a transferência.

Fazer o download do agente de migração

Faça o download do agente de migração em uma máquina que possa se conectar ao armazenamento em data warehouse. Mova o arquivo JAR do agente de migração para o mesmo diretório que o arquivo JAR do driver JDBC do Teradata.

Configurar o arquivo de credenciais para o módulo de acesso

Um arquivo de credenciais é necessário se você estiver usando o módulo de acesso do Cloud Storage com o utilitário Teradata Parallel Transporter (TPT) para extração.

Antes de criar um arquivo de credencial, crie uma chave de conta de serviço. No arquivo de chave da conta de serviço baixado, obtenha as seguintes informações:

  • client_email
  • private_key : copie todos os caracteres em -----BEGIN PRIVATE KEY----- e -----END PRIVATE KEY-----, incluindo todos os caracteres /n e sem as aspas duplas.

Depois de ter as informações necessárias, crie um arquivo de credencial. Confira abaixo um exemplo de arquivo de credenciais com um local padrão de $HOME/.gcs/credentials:

[default]
gcs_access_key_id = ACCESS_ID
gcs_secret_access_key = ACCESS_KEY

Substitua:

  • ACCESS_ID: o ID da chave de acesso ou o valor client_email no arquivo de chave da conta de serviço.
  • ACCESS_KEY: a chave de acesso secreta ou o valor private_key no arquivo de chave da conta de serviço.
.

Configurar uma transferência

Crie uma transferência com o serviço de transferência de dados do BigQuery.

Se você quiser que um arquivo de esquema personalizado seja criado automaticamente, use o agente de migração para configurar a transferência.

Não é possível criar uma transferência sob demanda usando a ferramenta de linha de comando bq. Em vez disso, use o console Cloud de Confiance ou o serviço de transferência de dados do BigQuery.

Se você estiver criando uma transferência recorrente, recomendamos especificar um arquivo de esquema para que os dados das transferências subsequentes sejam particionados corretamente quando forem carregados no BigQuery. Sem um arquivo de esquema, o serviço de transferência de dados do BigQuery infere o esquema da tabela a partir dos dados de origem que estão sendo transferidos. Todas as informações sobre particionamento, clustering, chaves primárias e rastreamento de alterações são perdidas. Além disso, as transferências subsequentes pulam as tabelas migradas anteriormente após a transferência inicial. Para mais informações sobre como criar um arquivo de esquema, consulte Arquivo de esquema personalizado.

Console

  1. No Cloud de Confiance console, acesse a página BigQuery.

    Acessar a página do BigQuery

  2. Clique em Transferências de dados.

  3. Clique em Criar transferência.

  4. Na seção Tipo de origem, faça o seguinte:

    • Escolha Migração: Teradata.
    • Em Nome da configuração de transferência, digite um nome de exibição para a transferência, como My Migration. Ele pode ter qualquer valor que permita identificar a transferência, caso seja necessário modificá-la mais tarde.
    • Opcional: em Opções de programação, deixe o valor padrão Diária (com base no horário de criação) ou escolha outro horário se quiser uma transferência recorrente, incremental. Caso contrário, escolha Sob demanda para uma transferência única.
    • Para Configurações de destino, escolha o conjunto de dados apropriado.

      Novas informações gerais sobre a migração do Teradata.

  5. Na seção Detalhes da fonte de dados, continue inserindo detalhes específicos da transferência do Teradata.

    • Em Tipo de banco de dados, escolha Teradata.
    • Em bucket do Cloud Storage, procure o nome do bucket do Cloud Storage para preparar os dados de migração. Não digite o prefixo gs://: insira apenas o nome do bucket.
    • Em Nome do banco de dados, digite o nome do banco de dados de origem no Teradata.
    • Em Padrões de nome da tabela, insira um padrão para corresponder aos nomes das tabelas no banco de dados de origem. Você pode usar expressões regulares para especificar o padrão. Exemplo:

      • sales|expenses corresponde às tabelas chamadas sales e expenses.
      • .* corresponde a todas as tabelas.
    • Em E-mail da conta de serviço, insira o endereço de e-mail associado às credenciais da conta de serviço usadas por um agente de migração.

    • Opcional: em Caminho do arquivo de esquema, insira o caminho e o nome de um arquivo de esquema personalizado. Para mais informações sobre como criar um arquivo de esquema personalizado, consulte Arquivo de esquema personalizado. Você pode deixar esse campo em branco para que o BigQuery detecte automaticamente o esquema da tabela de origem.

    • Opcional: em Diretório raiz de saída da tradução, insira o caminho e o nome do arquivo de mapeamento de esquema fornecido pelo mecanismo de tradução do BigQuery. Para mais informações sobre como gerar um arquivo de mapeamento de esquema, consulte Usar a saída do mecanismo de tradução para o esquema (prévia). Deixe esse campo em branco para que o BigQuery detecte automaticamente o esquema da tabela de origem.

    • Opcional: em Ativar o descarregamento direto para o GCS, marque a caixa de seleção para ativar o módulo de acesso para o Cloud Storage.

  6. No menu Conta de serviço, selecione uma conta de serviço entre aquelas associadas ao seu projetoCloud de Confiance . É possível associar uma conta de serviço à transferência em vez de usar suas credenciais de usuário. Para saber mais sobre o uso de contas de serviço com transferências de dados, consulte Usar contas de serviço.

  7. Opcional: na seção Opções de notificação, faça o seguinte:

    • Clique no botão Notificações por e-mail se quiser que o administrador de transferência receba uma notificação por e-mail quando uma execução de transferência falhar.
    • Clique no botão de Notificações do Pub/Sub para configurar as notificações de execução do Pub/Sub para sua transferência. Em Selecionar um tópico do Pub/Sub, escolha o nome do tópico ou clique em Criar um tópico.
  8. Clique em Salvar.

  9. Na página Detalhes da transferência, clique na guia Configuração.

  10. Anote o nome do recurso dessa transferência porque você precisa dela para executar o agente de migração.

bq

Ao criar uma transferência do Cloud Storage usando a ferramenta bq, a configuração de transferência é definida como recorrente a cada 24 horas. Para transferências sob demanda, use o console Cloud de Confiance ou a API do serviço de transferência de dados do BigQuery.

Não é possível configurar notificações usando a ferramenta bq.

Digite o comando bq mk e forneça a sinalização de criação da transferência --transfer_config. As sinalizações abaixo também são obrigatórias:

  • --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

Em que:

  • project ID é o ID do projeto; Se --project_id não for fornecido para especificar um projeto específico, o projeto padrão será usado.
  • dataset é o conjunto de dados que você quer segmentar (--target_dataset) para a configuração de transferência.
  • name é o nome de exibição (--display_name) da configuração de transferência. O nome de exibição pode ser qualquer valor que permita identificar a transferência, caso seja necessário modificá-la mais tarde.
  • service_account é o nome da conta de serviço usado para autenticar a transferência. A conta de serviço precisa pertencer ao mesmo project_id usado para criar a transferência e ter todas as permissões necessárias listadas.
  • parameters contém os parâmetros (--params) da configuração da transferência criada no formato JSON. Por exemplo: --params='{"param":"param_value"}'.
    • Para migrações do Teradata, use os seguintes parâmetros:
      • bucket é o bucket do Cloud Storage que atuará como uma área de preparo durante a migração;
      • database_type é o Teradata;
      • agent_service_account é o endereço de e-mail associado à conta de serviço que você criou;
      • database_name é o nome do banco de dados de origem no Teradata;
      • table_name_patterns é um padrão para correspondência dos nomes das tabelas no banco de dados de origem. Você pode usar expressões regulares para especificar o padrão. Esse padrão precisa seguir a sintaxe da expressão regular do Java. Por exemplo:
        • sales|expenses corresponde às tabelas chamadas sales e expenses.
        • .* corresponde a todas as tabelas.
      • is_direct_gcs_unload_enabled é uma flag booleana para ativar o descarregamento direto no Cloud Storage.
  • data_source é a fonte de dados (--data_source): on_premises.

Por exemplo, o comando a seguir cria uma transferência do Teradata chamada My Transfer usando o bucket mybucket do Cloud Storage e o conjunto de dados de destino mydataset. A transferência migrará todas as tabelas do data warehouse do Teradata mydatabase, e o arquivo de esquema opcional será 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", "is_direct_gcs_unload_enabled": true}' \
--data_source=on_premises

Após executar o comando, você recebe uma mensagem semelhante a esta:

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

Siga as instruções e cole o código de autenticação na linha de comando.

API

Use o método projects.locations.transferConfigs.create e forneça uma instância do recurso TransferConfig.

Java

Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

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());
    }
  }
}

Agente de migração

Também é possível configurar a transferência diretamente do agente de migração. Para mais informações, consulte Inicializar o agente de migração.

Inicializar o agente de migração

É necessário inicializar o agente de migração para uma nova transferência. A inicialização é necessária apenas uma vez para uma transferência, independentemente de ser recorrente. A inicialização apenas configura o agente de migração. Ela não inicia a transferência.

Se você for usar o agente de migração para criar um arquivo de esquema personalizado, verifique se tem um diretório gravável no diretório de trabalho com o mesmo nome do projeto que você quer usar para a transferência. É aqui que o agente de migração cria o arquivo de esquema. Por exemplo, se você estiver trabalhando em /home e configurando a transferência no projeto myProject, crie o diretório /home/myProject e verifique se ele pode ser gravado pelos usuários.

  1. Abra uma nova sessão. Na linha de comando, emita o comando de inicialização, que segue este formulário:

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

    O exemplo a seguir mostra o comando de inicialização quando os arquivos JAR do driver JDBC e do agente de migração estão em um diretório migration local:

    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

    Copie todos os arquivos para a pasta C:\migration (ou ajuste os caminhos no comando) e execute:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --initialize
  2. Quando solicitado, configure as seguintes opções:

    1. Escolha se quer salvar o modelo do Teradata Parallel Transporter (TPT) no disco. Se você planeja usar o método de extração de TPT, é possível modificar o modelo salvo com parâmetros adequados à sua instância do Teradata.
    2. Digite o caminho para um diretório local que o job de transferência possa usar para extração de arquivos. Verifique se você tem o espaço de armazenamento mínimo recomendado, conforme descrito em Método de extração.
    3. Digite o nome do host do banco de dados.
    4. Digite a porta do banco de dados.
    5. Escolha se quer usar o Teradata Parallel Transporter (TPT) como o método de extração.
    6. Opcional: digite o caminho de um arquivo de credenciais do banco de dados.
    7. Escolha se quer especificar um nome de configuração do serviço de transferência de dados do BigQuery.

      Se você estiver inicializando o agente de migração de uma transferência que já configurou, faça o seguinte:

      1. Digite o nome de recurso da transferência. Isso pode ser encontrado na guia Configuração da página Detalhes da transferência.
      2. Quando solicitado, digite um caminho e o nome do arquivo do arquivo de configuração do agente de migração que será criado. Consulte esse arquivo ao executar o agente de migração para iniciar a transferência.
      3. Ignore as demais etapas.

      Se você estiver usando o agente de migração para configurar uma transferência, pressione Enter para pular para a próxima solicitação.

    8. Digite o Cloud de Confiance by S3NS ID do projeto.

    9. Digite o nome do banco de dados de origem no Teradata.

    10. Insira um padrão para corresponder os nomes das tabelas no banco de dados de origem. Você pode usar expressões regulares para especificar o padrão. Exemplo:

      • sales|expenses corresponde às tabelas chamadas sales e expenses.
      • .* corresponde a todas as tabelas.
    11. Opcional: digite o caminho de um arquivo de esquema JSON local. Isso é altamente recomendado para transferências recorrentes.

      Se você não estiver usando um arquivo de esquema ou quiser que o agente de migração crie um para você, pressione Enter para pular para a próxima solicitação.

    12. Escolha se você quer criar um novo arquivo de esquema.

      Se você quiser criar um arquivo de esquema, faça o seguinte:

      1. Digite yes.
      2. Digite o nome de usuário de um usuário do Teradata que tem acesso de leitura às tabelas do sistema e das tabelas que você quer migrar.
      3. Digite a senha do usuário.

        O agente de migração cria o arquivo de esquema e gera o local dele.

      4. Modifique o arquivo de esquema para marcar o particionamento, o clustering, as chaves primárias e as colunas de controle de alterações e verifique se você quer usar esse esquema para a configuração de transferência. Consulte Arquivo de esquema personalizado para ver dicas.

      5. Pressione Enter para pular para a próxima solicitação.

      Se você não quiser criar um arquivo de esquema, digite no.

    13. Digite o nome do bucket de destino do Cloud Storage para preparar os dados de migração antes de carregar no BigQuery. Se você tiver feito o agente de migração criar um arquivo de esquema personalizado, ele também será enviado para esse bucket.

    14. Digite o nome do conjunto de dados de destino no BigQuery.

    15. Digite um nome de exibição para a configuração de transferência.

    16. Digite um caminho e o nome do arquivo do arquivo de configuração do agente de migração que será criado.

  3. Depois que todos os parâmetros solicitados são inseridos, o agente de migração cria um arquivo de configuração e o envia para o caminho local especificado. Consulte a próxima seção para ver mais detalhes sobre o arquivo de configuração.

Arquivo de configuração do agente de migração

O arquivo de configuração criado na etapa de inicialização é semelhante a este exemplo:


{
  "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"
  }
}
   

Opções do job de transferência no arquivo de configuração do agente de migração

  • transfer-configuration: informações sobre essa configuração de transferência no BigQuery.
  • teradata-config: informações específicas para esta extração do Teradata:

    • connection: informações sobre o nome do host e a porta
    • local-processing-space: a pasta de extração em que o agente extrairá os dados da tabela antes de fazer upload para o Cloud Storage.
    • database-credentials-file-path: (Opcional) O caminho para um arquivo que contém credenciais para se conectar ao banco de dados Teradata automaticamente. O arquivo precisa conter duas linhas para as credenciais. É possível usar um nome de usuário/senha, conforme mostrado no exemplo a seguir:
      username=abc
      password=123
      Também é possível usar um secret do SecretManager:
      username=abc
      secret_resource_id=projects/my-project/secrets/my-secret-name/versions/1
      Ao usar um arquivo de credenciais, tome cuidado para controlar o acesso à pasta onde você o armazena no sistema de arquivos local, pois ele não é criptografado. Se nenhum caminho for fornecido, você será solicitado a fornecer um nome de usuário e uma senha quando iniciar um agente.
    • max-local-storage: a quantidade máxima de armazenamento local a ser usada para a extração no diretório de preparo especificado. O valor padrão é 50GB. O formato compatível é: numberKB|MB|GB|TB.

      Em todos os modos de extração, os arquivos serão excluídos do diretório de preparo local após serem enviados para o Cloud Storage.

    • use-tpt: orienta o agente de migração a usar o Teradata Parallel Transporter (TPT) como um método de extração.

      Para cada tabela, o agente de migração gera um script TPT, inicia um processo tbuild e aguarda a conclusão. Depois que o processo tbuild for concluído, o agente listará e fará upload dos arquivos extraídos para o Cloud Storage e, em seguida, excluirá o script TPT. Para mais informações, consulte Método de extração.

    • transfer-views: direciona o agente de migração para também transferir dados de visualizações. Use essa opção apenas se você precisar personalizar os dados durante a migração. Em outros casos, migre visualizações para Visualizações do BigQuery. Essa opção tem os seguintes pré-requisitos:

      • Essa opção só pode ser usada nas versões 16.10 e mais recentes do Teradata.
      • Uma visualização precisa ter uma coluna de números inteiros "partition" definida, apontando para um ID de partição para a linha especificada na tabela subjacente.
    • max-sessions: especifica o número máximo de sessões usadas pelo job de extração (FastExport ou TPT). Se definido como 0, o banco de dados do Teradata determinará o número máximo de sessões para cada job de extração.

    • gcs-upload-chunk-size: um arquivo grande é enviado em blocos para o Cloud Storage. Esse parâmetro e max-parallel-upload são usados para controlar quantos dados são enviados ao Cloud Storage ao mesmo tempo. Por exemplo, se gcs-upload-chunk-size for 64 MB e max-parallel-upload for 10 MB, teoricamente, um agente de migração poderá fazer upload de 640 MB (64 MB * 10) de dados ao mesmo tempo. Se o upload do bloco falhar, ele precisará fazer novas tentativas. O tamanho da parte precisa ser pequeno.

    • max-parallel-upload: esse valor determina o número máximo de linhas de execução usadas pelo agente de migração para fazer upload de arquivos no Cloud Storage. Caso não seja especificado, o padrão será o número de processadores disponíveis para a máquina virtual Java. A regra geral é escolher o valor com base no número de núcleos que você tem na máquina que executa o agente. Portanto, se você tiver núcleos n, o número ideal de linhas de execução precisará ser n. Se os núcleos forem hyperthread, o número ideal será (2 * n). Há também outras configurações como a largura de banda da rede que você precisa considerar ao ajustar max-parallel-upload. Ajustar esse parâmetro pode melhorar o desempenho do upload para o Cloud Storage.

    • spool-mode: na maioria dos casos, o modo NoSpool é a melhor opção. NoSpool é o valor padrão na configuração do agente. É possível alterar esse parâmetro se uma das desvantagens do NoSpool se aplicarem ao seu caso.

    • max-unload-file-size: determina o tamanho máximo do arquivo extraído. Esse parâmetro não é aplicado a extrações TPT.

    • max-parallel-extract-threads: essa configuração é usada apenas no modo FastConnect. Ele determina o número de linhas de execução paralelas usadas para extrair os dados do Teradata. Ajustar esse parâmetro pode melhorar o desempenho da extração.

    • tpt-template-path: use essa configuração para fornecer um script de extração de TPT personalizado como entrada. Use esse parâmetro para aplicar transformações aos dados de migração.

    • tpt-export-count: o operador de exportação é responsável por extrair dados do banco de dados do Teradata. Esse parâmetro substitui a contagem de exportação padrão no script TPT. Ele precisa ser menor ou igual ao valor do parâmetro max-sessions para garantir que cada instância tenha pipes suficientes para o banco de dados.

    • tpt-file-writer-count: o operador de gravação de arquivos é responsável por receber os dados do operador de exportação e gravar em um arquivo físico no sistema de armazenamento. Esse parâmetro substitui a contagem padrão de gravadores de arquivos no script TPT. O ideal é que a contagem de gravadores de arquivos corresponda à contagem de exportações. Caso contrário, a transferência se torna um gargalo na extração ou na gravação.

    • schema-mapping-rule-path: (opcional) o caminho para um arquivo de configuração que contém um mapeamento de esquema para substituir as regras de mapeamento padrão. Alguns tipos de mapeamento funcionam apenas com o modo Teradata Parallel Transporter (TPT).

      Exemplo: mapeamento do tipo TIMESTAMP do Teradata para o tipo DATETIME do BigQuery:

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

      Atributos:

      • database: (opcional) name é uma expressão regular para bancos de dados a serem incluídos. Todos os bancos de dados são incluídos por padrão.
      • tables: (opcional) contém uma matriz de tabelas. name é uma expressão regular para tabelas a serem incluídas. Todas as tabelas estão incluídas por padrão.
      • match: (Obrigatório)
        • Valores aceitos type: COLUMN_TYPE.
        • Valores aceitos: value: TIMESTAMP, DATETIME.
      • action: (Obrigatório)
        • Valores aceitos type: MAPPING.
        • Valores aceitos: value: TIMESTAMP, DATETIME.
    • compress-output: (opcional) determina se os dados precisam ser compactados antes de armazenar no Cloud Storage. Isso é aplicado apenas em tpt-mode. Por padrão, esse valor é false.

    • gcs-module-config-dir: (opcional) o caminho para o arquivo de credenciais para acessar o bucket do Cloud Storage. O diretório padrão é $HOME/.gcs, mas você pode usar esse parâmetro para mudar o diretório.

    • gcs-module-connection-count: (opcional) especifica o número de conexões TCP com o serviço do Cloud Storage. O valor padrão é 10.

    • gcs-module-buffer-size: (opcional) especifica o tamanho dos buffers a serem usados para as conexões TCP. O padrão é 8 MB (8388608 bytes). Para facilitar o uso, você pode usar os seguintes multiplicadores:

      • k (1000)
      • K (1024)
      • m (1000 * 1000)
      • M (1024*1024)
    • gcs-module-buffer-count: (opcional) especifica o número de buffers a serem usados com as conexões TCP especificadas pelo gcs-module-connection-count. Recomendamos usar um valor igual ao dobro do número de conexões TCP com o serviço do Cloud Storage. O valor padrão é 2 * gcs-module-connection-count.

    • gcs-module-max-object-size: (opcional). Esse parâmetro controla os tamanhos dos objetos do Cloud Storage. O valor desse parâmetro pode ser um número inteiro ou um número inteiro seguido, sem um espaço, por um dos seguintes multiplicadores:

      • k (1000)
      • K (1024)
      • m (1000 * 1000)
      • M (1024*1024)
    • gcs-module-writer-instances: (opcional): especifica o número de instâncias de gravador do Cloud Storage. Por padrão, o valor é 1. É possível aumentar esse valor para aumentar a capacidade de processamento durante a fase de gravação da exportação do TPT.

Otimizar a extração de dados do agente

Ao ajustar os parâmetros do agente, você pode otimizar o processo de extração de dados e tornar o processo de transferência geral eficiente.

A tabela a seguir fornece informações sobre os parâmetros que podem ser usados para ajustar sua migração:

Parâmetro Valor recomendado Descrição
gcs-module-writer-instances 4 Aumenta a paralelização para extração de TPT e operações de gravação do Cloud Storage. Ajuste esse valor para equilibrar a otimização da transferência e a carga da instância do Teradata.
gcs-module-connection-count 10 Define o número de conexões TCP com o Cloud Storage. Aumentar esse valor melhora a paralelização durante a fase de upload do Cloud Storage.
gcs-module-buffer-size 32 minutos Define o tamanho dos buffers para conexões TCP. Os testes indicam que 32m oferece os melhores resultados.
tpt-export-count Precisa ser menor ou igual ao valor de max-sessions. Substitui a contagem padrão de operadores de exportação no script TPT. O valor precisa ser menor ou igual ao valor de max-sessions para garantir que cada instância tenha pipes suficientes para o banco de dados.
tpt-file-writer-count Precisa ser igual ao valor de export-count. Substitui a contagem padrão de operadores de gravador de arquivos no script TPT. O ideal é que esse valor corresponda ao valor tpt-export-count para evitar gargalos.

Considere as seguintes práticas recomendadas para configuração:

  • Restrição de memória: verifique se o resultado do cálculo abaixo é menor que a memória total da máquina virtual (VM) que executa o agente. Use unidades consistentes para todos os valores no cálculo.

    $$ \text{gcs-module-writer-instances} \times \text{gcs-module-buffer-size} \times \text{gcs-module-buffer-count} < \text{Total VM memory} $$
  • Ordem de ajuste:

    1. Ajuste primeiro o valor do parâmetro gcs-module-writer-instances para encontrar o melhor equilíbrio entre performance e carga.
    2. Se forem necessários mais ganhos de performance, aumente o valor de gcs-module-connection-count.
  • Escalonamento automático: por padrão, o valor do parâmetro gcs-module-buffer-size geralmente é definido como o dobro da contagem de conexões, mas recomendamos ajustar explicitamente o valor para 32m nessas cargas de trabalho.

Executar o agente de migração

Depois de inicializar o agente de migração e criar o arquivo de configuração, use as seguintes etapas para executar o agente e iniciar a migração:

  1. Execute o agente especificando os caminhos para o driver JDBC, o agente de migração e o arquivo de configuração criado na etapa de inicialização anterior.

    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

    Copie todos os arquivos para a pasta C:\migration (ou ajuste os caminhos no comando) e execute:

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

    Se você estiver pronto para continuar a migração, pressione Enter, e o agente prosseguirá se o caminho de classe fornecido durante a inicialização for válido.

  2. Quando solicitado, digite o nome de usuário e a senha da conexão do banco de dados. Se o nome de usuário e a senha forem válidos, a migração de dados será iniciada.

    Opcional No comando para iniciar a migração, você também pode usar uma sinalização que transmita um arquivo de credenciais para o agente, em vez de digitar toda vez o nome de usuário e a senha. Consulte o parâmetro opcional database-credentials-file-path no arquivo de configuração do agente para obter mais informações. Ao usar um arquivo de credenciais, siga as etapas apropriadas para controlar o acesso à pasta onde você o armazena no sistema de arquivos local, porque ele não é criptografado.

  3. Deixe esta sessão aberta até que a migração seja concluída. Se você tiver criado uma transferência de migração recorrente, mantenha esta sessão aberta indefinidamente. Se esta sessão for interrompida, as execuções de transferência atuais e futuras falham.

  4. Monitore periodicamente se o agente está em execução. Se uma execução de transferência estiver em andamento e nenhum agente responder em 24 horas, a execução da transferência falhará.

  5. Se o agente de migração parar de funcionar enquanto a transferência estiver em andamento ou programada, o console do Cloud de Confiance vai mostrar o status do erro e solicitar que você reinicie o agente. Para reiniciar o agente de migração, volte ao início desta seção. Não é necessário repetir o comando de inicialização. A transferência é retomada do ponto em que as tabelas não foram concluídas.

Acompanhar o progresso da migração

Confira o status da migração no console Cloud de Confiance . Também é possível configurar as notificações do Pub/Sub ou por e-mail. Consulte Notificações do serviço de transferência de dados do BigQuery.

O serviço de transferência de dados do BigQuery programa e inicia uma execução de transferência conforme uma programação especificada na criação da configuração de transferência. É importante que o agente de migração esteja em execução quando uma execução de transferência estiver ativa. Se não houver atualizações do agente em 24 horas, uma execução de transferência falha.

Exemplo de status da migração no console Cloud de Confiance :

Status da migração

Fazer upgrade do agente de migração

Se uma nova versão do agente de migração estiver disponível, você precisará atualizá-lo manualmente. Para receber avisos sobre o serviço de transferência de dados do BigQuery, inscreva-se nas Notas de lançamento.

A seguir