O modelo do SourceDB para Spanner é um pipeline em lote que copia dados de um banco de dados relacional para um banco de dados do Spanner. Esse pipeline usa o JDBC para se conectar ao banco de dados relacional. É possível usar esse modelo para copiar dados de qualquer banco de dados relacional com drivers JDBC disponíveis no Spanner. Isso só é compatível com um conjunto limitado de tipos do MySQL
Para ter uma camada extra de proteção, é possível transmitir uma chave do Cloud KMS com um nome de usuário, senha e parâmetros da string de conexão criptografados em Base64 com a chave do Cloud KMS. Consulte o endpoint de criptografia da API Cloud KMS para saber mais detalhes sobre como criptografar o nome de usuário, senha e parâmetros da string de conexão.
Requisitos de pipeline
- É necessário que os drivers do JDBC para o banco de dados relacional estejam disponíveis.
- As tabelas do Spanner precisam existir antes da execução do pipeline.
- As tabelas do Spanner precisam ter um esquema compatível.
- O banco de dados relacional precisa estar acessível na sub-rede em que o Dataflow é executado.
Parâmetros do modelo
Parâmetro | Descrição |
---|---|
sourceConfigURL |
A string do URL de conexão do JDBC. Por exemplo,
jdbc:mysql://127.4.5.30:3306/my-db?autoReconnect=true&maxReconnects=10&unicode=true&characterEncoding=UTF-8
ou a configuração do fragmento. |
instanceId |
A instância de destino do Cloud Spanner. |
databaseId |
O banco de dados de destino do Cloud Spanner. |
projectId |
É o nome do projeto do Cloud Spanner. |
outputDirectory |
Esse diretório é usado para despejar os registros com falha/ignorados/filtrados em uma migração. |
jdbcDriverJars |
Opcional: a lista separada por vírgulas de arquivos JAR do driver. Exemplo:
gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar . O padrão é vazio. |
jdbcDriverClassName |
Opcional: o nome da classe do driver do JDBC. Por exemplo, com.mysql.jdbc.Driver . O padrão é:
com .mysql.jdbc.Driver. |
username |
Opcional: o nome do usuário a ser usado para a conexão JDBC. O padrão é vazio. |
password |
Opcional: a senha a ser usada para a conexão JDBC. O padrão é vazio. |
tables |
Opcional: tabelas para migrar da origem. O padrão é vazio. |
numPartitions |
Opcional: o número de partições. Isso, junto com os limites inferior e superior, cria avanços de partições para expressões da cláusula WHERE geradas, usadas para dividir a coluna da partição de maneira uniforme. Quando a entrada for menor que 1, o número será definido como 1.
O padrão é 0 . |
spannerHost |
Opcional: o endpoint do Cloud Spanner para chamar no modelo. Exemplo:
https://batch-spanner.googleapis.com . O padrão é https://batch-spanner .googleapis.com. |
maxConnections |
Opcional: configura o pool de conexões JDBC em cada worker com o número máximo de conexões. Use um número negativo para não haver limite. Por exemplo, -1 . O padrão é 0 . |
sessionFilePath |
Opcional: caminho da sessão no Cloud Storage que contém informações de mapeamento da ferramenta de migração do Spanner. O padrão é vazio. |
transformationJarPath |
Opcional: local do jar personalizado no Cloud Storage que contém a lógica de transformação personalizada para processar registros. O padrão é vazio. |
transformationClassName |
Opcional: nome de classe totalmente qualificado com lógica de transformação personalizada. É um campo obrigatório no caso de transformationJarPath é especificado. O padrão é vazio. |
transformationCustomParameters |
Opcional: string contendo os parâmetros personalizados que serão passados para a classe de transformação personalizada. O padrão é vazio. |
disabledAlgorithms |
Opcional: algoritmos separados por vírgulas para desativar. Se esse valor for definido como nenhum, nenhum algoritmo será desativado. Use esse parâmetro com cuidado, porque os algoritmos desativados por padrão podem ter vulnerabilidades ou problemas de desempenho. Exemplo:
SSLv3, RC4 . |
extraFilesToStage |
Opcional: caminhos do Cloud Storage separados por vírgulas ou secrets do Secret Manager para que os arquivos sejam organizados no worker. Esses arquivos são salvos no diretório /extra_files em cada worker. Exemplo:
gs://<BUCKET>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID> . |
Executar o modelo
Console
- Acesse a página Criar job usando um modelo do Dataflow. Acesse Criar job usando um modelo
- No campo Nome do job, insira um nome exclusivo.
- Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é
us-central1
.Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.
- No menu suspenso Modelo do Dataflow, selecione the Sourcedb to Spanner template.
- Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
- Cliquem em Executar job.
CLI da gcloud
No shell ou no terminal, execute o modelo:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Sourcedb_to_Spanner_Flex \ --project=PROJECT_ID \ --region=REGION_NAME \ --parameters \ sourceConfigURL=SOURCE_CONFIG_URL,\ instanceId=INSTANCE_ID,\ databaseId=DATABASE_ID,\ projectId=PROJECT_ID,\ outputDirectory=OUTPUT_DIRECTORY,\
Substitua:
JOB_NAME
: um nome de job de sua escolhaVERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: a região em que você quer implantar o job do Dataflow, por exemplo,us-central1
SOURCE_CONFIG_URL
: o URL para se conectar ao host do banco de dados de origem. Pode ser um destes valores: O URL de conexão JDBC, que precisa conter o host, a porta e o nome do banco de dados de origem e pode conter, opcionalmente, propriedades como autoReconnect, maxReconnects etc. Formato: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. O caminho da configuração do fragmentoINSTANCE_ID
: o ID da instância do Cloud Spanner.DATABASE_ID
: o ID do banco de dados do Cloud Spanner.PROJECT_ID
: o ID do projeto do Cloud Spanner.OUTPUT_DIRECTORY
: o diretório de saída para eventos com falha/ignorados/filtrados
API
Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a
API e os respectivos escopos de autorização, consulte
projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launchParameter": { "jobName": "JOB_NAME", "parameters": { "sourceConfigURL": "SOURCE_CONFIG_URL", "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "projectId": "PROJECT_ID", "outputDirectory": "OUTPUT_DIRECTORY", }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Sourcedb_to_Spanner_Flex", "environment": { "maxWorkers": "10" } } }
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud em que você quer executar o job do DataflowJOB_NAME
: um nome de job de sua escolhaVERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
LOCATION
: a região em que você quer implantar o job do Dataflow, por exemplo,us-central1
SOURCE_CONFIG_URL
: o URL para se conectar ao host do banco de dados de origem. Pode ser um destes valores: O URL de conexão JDBC, que precisa conter o host, a porta e o nome do banco de dados de origem e pode conter, opcionalmente, propriedades como autoReconnect, maxReconnects etc. Formato: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. O caminho da configuração do fragmentoINSTANCE_ID
: o ID da instância do Cloud Spanner.DATABASE_ID
: o ID do banco de dados do Cloud Spanner.PROJECT_ID
: o ID do projeto do Cloud Spanner.OUTPUT_DIRECTORY
: o diretório de saída para eventos com falha/ignorados/filtrados