O modelo do Java Database Connectivity (JDBC) para Pub/Sub é um pipeline de streaming que ingere dados da origem JDBC e grava os registros resultantes em um tópico preexistente do Pub/Sub como uma string JSON.
Requisitos de pipeline
- A origem do JDBC precisa ter sido criada antes da execução do pipeline.
- O tópico de saída do Pub/Sub precisa existir antes de o pipeline ser executado.
Parâmetros do modelo
Parâmetros obrigatórios
- driverClassName: o nome da classe do driver do JDBC. Por exemplo,
com.mysql.jdbc.Driver
. - connectionUrl: a string do URL de conexão do JDBC. É possível transmitir esse valor como uma string criptografada com uma chave do Cloud KMS e, em seguida, codificada em Base64. Por exemplo: 'echo -n "jdbc:mysql://some-host:3306/sampledb" | gcloud kms encrypt --location=
- driverJars: caminhos do Cloud Storage separados por vírgulas para drivers JDBC. Por exemplo,
gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar
. - query: a consulta a ser executada na origem para extrair os dados. Por exemplo,
select * from sampledb.sample_table
. - outputTopic: o tópico do Pub/Sub em que a publicação será feita. Por exemplo,
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
.
Parâmetros opcionais
- username: o nome de usuário a ser usado para a conexão JDBC. É possível transmitir esse valor como uma string criptografada com uma chave do Cloud KMS e, em seguida, codificada em Base64. Por exemplo,
echo -n 'some_username' | glcloud kms encrypt --location=my_location --keyring=mykeyring --key=mykey --plaintext-file=- --ciphertext-file=- | base64
. - password: a senha a ser usada para a conexão JDBC. É possível transmitir esse valor como uma string criptografada com uma chave do Cloud KMS e, em seguida, codificada em Base64. Por exemplo,
echo -n 'some_password' | glcloud kms encrypt --location=my_location --keyring=mykeyring --key=mykey --plaintext-file=- --ciphertext-file=- | base64
. - connectionProperties: a string de propriedades a ser usada para a conexão JDBC. O formato da string precisa ser
[propertyName=property;]*
. Por exemplo,unicode=true;characterEncoding=UTF-8
. - KMSEncryptionKey: a chave de criptografia do Cloud KMS a ser usada para descriptografar o nome de usuário, a senha e a string de conexão. Se a chave do Cloud KMS for transmitida, o nome de usuário, a senha e a string de conexão precisarão ser enviados criptografados e codificados em base64. Por exemplo,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
. - disabledAlgorithms: algoritmos separados por vírgula a serem desativados. Se esse valor for definido como
none
, nenhum algoritmo será desativado. Use esse parâmetro com cuidado, porque os algoritmos desativados por padrão podem ter vulnerabilidades ou problemas de desempenho. Por exemplo,SSLv3, RC4
. - extraFilesToStage: 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. Por exemplo,
gs://<BUCKET_NAME>/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 JDBC to Pub/Sub template.
- Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
- Cliquem em Executar job.
gcloud
No shell ou no terminal, execute o modelo:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Jdbc_to_PubSub \ --region REGION_NAME \ --parameters \ driverClassName=DRIVER_CLASS_NAME,\ connectionURL=JDBC_CONNECTION_URL,\ driverJars=DRIVER_PATHS,\ username=CONNECTION_USERNAME,\ password=CONNECTION_PASSWORD,\ connectionProperties=CONNECTION_PROPERTIES,\ query=SOURCE_SQL_QUERY,\ outputTopic=OUTPUT_TOPIC,\ KMSEncryptionKey=KMS_ENCRYPTION_KEY
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 onde você quer implantar o job do Dataflow, por exemplo,us-central1
DRIVER_CLASS_NAME
: o nome da classe doJDBC_CONNECTION_URL
: o URL de conexão de JDBCDRIVER_PATHS
: os caminho(s) do Cloud Storage separado(s) por vírgula do(s) driver(s) JDBCCONNECTION_USERNAME
: o nome de usuário da conexão JDBC.CONNECTION_PASSWORD
: a senha de conexão JDBCCONNECTION_PROPERTIES
: as propriedades da conexão JDBC, se necessárioSOURCE_SQL_QUERY
: a consulta SQL a ser executada no banco de dados de origem.OUTPUT_TOPIC
: o Pub/Sub a ser publicadoKMS_ENCRYPTION_KEY
: a chave de criptografia do Cloud KMS
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", "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Jdbc_to_PubSub" "parameters": { "driverClassName": "DRIVER_CLASS_NAME", "connectionURL": "JDBC_CONNECTION_URL", "driverJars": "DRIVER_PATHS", "username": "CONNECTION_USERNAME", "password": "CONNECTION_PASSWORD", "connectionProperties": "CONNECTION_PROPERTIES", "query": "SOURCE_SQL_QUERY", "outputTopic": "OUTPUT_TOPIC", "KMSEncryptionKey":"KMS_ENCRYPTION_KEY" }, "environment": { "zone": "us-central1-f" } } }
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 onde você quer implantar o job do Dataflow, por exemplo,us-central1
DRIVER_CLASS_NAME
: o nome da classe doJDBC_CONNECTION_URL
: o URL de conexão de JDBCDRIVER_PATHS
: os caminho(s) do Cloud Storage separado(s) por vírgula do(s) driver(s) JDBCCONNECTION_USERNAME
: o nome de usuário da conexão JDBC.CONNECTION_PASSWORD
: a senha de conexão JDBCCONNECTION_PROPERTIES
: as propriedades da conexão JDBC, se necessárioSOURCE_SQL_QUERY
: a consulta SQL a ser executada no banco de dados de origem.OUTPUT_TOPIC
: o Pub/Sub a ser publicadoKMS_ENCRYPTION_KEY
: a chave de criptografia do Cloud KMS
A seguir
- Saiba mais sobre os modelos do Dataflow.
- Confira a lista de modelos fornecidos pelo Google.