O modelo SourceDB para Spanner é um pipeline em lote que copia dados de uma base de dados relacional para uma base de dados do Spanner existente. Este pipeline usa JDBC para se ligar à base de dados relacional. Pode usar este modelo para copiar dados de qualquer base de dados relacional com controladores JDBC disponíveis para o Spanner. Isto só suporta um conjunto limitado de tipos do MySQL
Para uma camada adicional de proteção, também pode transmitir uma chave do Cloud KMS juntamente com parâmetros de nome de utilizador, palavra-passe e string de ligação codificados em Base64 encriptados com a chave do Cloud KMS. Consulte o ponto final da API Cloud KMS de encriptação para ver detalhes adicionais sobre a encriptação do nome de utilizador, da palavra-passe e dos parâmetros da string de ligação.
Requisitos do pipeline
- Os controladores JDBC para a base de dados relacional têm de estar disponíveis.
- As tabelas do Spanner têm de existir antes da execução do pipeline.
- As tabelas do Spanner têm de ter um esquema compatível.
- A base de dados relacional tem de estar acessível a partir da sub-rede onde o Dataflow é executado.
Parâmetros de modelos
Parâmetro | Descrição |
---|---|
sourceConfigURL |
A string do URL de ligação 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 de fragmentação. |
instanceId |
A instância do Cloud Spanner de destino. |
databaseId |
A base de dados do Cloud Spanner de destino. |
projectId |
Este é o nome do projeto do Cloud Spanner. |
outputDirectory |
Este diretório é usado para transferir os registos com falhas/ignorados/filtrados numa migração. |
jdbcDriverJars |
Opcional: a lista de ficheiros JAR de controladores separados por vírgulas. Por exemplo:
gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar . A predefinição é vazio. |
jdbcDriverClassName |
Opcional: o nome da classe do controlador JDBC. Por exemplo: com.mysql.jdbc.Driver . A predefinição é:
com .mysql.jdbc.Driver. |
username |
Opcional: o nome de utilizador a usar para a ligação JDBC. A predefinição é vazio. |
password |
Opcional: a palavra-passe a usar para a ligação JDBC. A predefinição é vazio. |
tables |
Opcional: tabelas a migrar da origem. A predefinição é vazio. |
numPartitions |
Opcional: o número de partições. Isto, juntamente com o limite inferior e superior, forma passos de partições para expressões da cláusula WHERE geradas usadas para dividir a coluna de partição uniformemente. Quando o valor introduzido é inferior a 1, o número é definido como 1.
Predefinição: 0 . |
spannerHost |
Opcional: o ponto final do Cloud Spanner a chamar no modelo. Por exemplo:
https://batch-spanner.googleapis.com . A predefinição é: https://batch-spanner .googleapis.com. |
maxConnections |
Opcional: configura o conjunto de ligações JDBC em cada trabalhador com o número máximo de ligações. Use um número negativo para não ter limite. Por exemplo: -1 . Predefiniçã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. A predefinição é vazia. |
transformationJarPath |
Opcional: localização do JAR personalizado no Cloud Storage que contém a lógica de transformação personalizada para o processamento de registos. A predefinição é vazia. |
transformationClassName |
Opcional: nome de classe totalmente qualificado com a lógica de transformação personalizada. É um campo obrigatório se transformationJarPath for especificado. A predefinição é vazio. |
transformationCustomParameters |
Opcional: string que contém quaisquer parâmetros personalizados a transmitir à classe de transformação personalizada. A predefinição é vazio. |
disabledAlgorithms |
Opcional: algoritmos separados por vírgulas a desativar. Se este valor for definido como nenhum, nenhum algoritmo é desativado. Use este parâmetro com
cuidado, porque os algoritmos desativados por predefinição podem ter vulnerabilidades ou problemas de desempenho. Por exemplo:
SSLv3, RC4 . |
extraFilesToStage |
Opcional: caminhos do Cloud Storage separados por vírgulas ou segredos do Secret Manager para ficheiros a preparar no trabalhador. Estes ficheiros são guardados no diretório /extra_files em cada trabalhador. Por exemplo:
gs://<BUCKET>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID> . |
Execute o modelo
Consola
- Aceda à página do fluxo de dados Criar tarefa a partir de um modelo. Aceda a Criar tarefa a partir de modelo
- No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
- Opcional: para Ponto final regional, selecione um valor no menu pendente. A região
predefinida é
us-central1
.Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.
- No menu pendente Modelo do fluxo de dados, selecione the Sourcedb to Spanner template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- Clique em Executar tarefa.
CLI gcloud
Na 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 o seguinte:
JOB_NAME
: um nome de tarefa exclusivo à sua escolhaVERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: 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 pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
SOURCE_CONFIG_URL
: o URL para estabelecer ligação ao anfitrião da base de dados de origem. Pode ser uma das seguintes opções: 1. O URL de ligação JDBC, que tem de conter o anfitrião, a porta e o nome da base 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 da base 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 falhas/ignorados/filtrados
API
Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos 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 o seguinte:
PROJECT_ID
: o ID do projeto onde quer executar a tarefa do Dataflow Google CloudJOB_NAME
: um nome de tarefa exclusivo à sua escolhaVERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: 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 pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
LOCATION
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
SOURCE_CONFIG_URL
: o URL para estabelecer ligação ao anfitrião da base de dados de origem. Pode ser uma das seguintes opções: 1. O URL de ligação JDBC, que tem de conter o anfitrião, a porta e o nome da base 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 da base 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 falhas/ignorados/filtrados