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. (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. Remova os caracteres de espaço em branco da string codificada em Base64. (Por exemplo: jdbc:mysql://some-host:3306/sampledb).
- driverJars: caminhos do Cloud Storage separados por vírgulas para drivers JDBC. (Examplo: gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar).
- query: a consulta a ser executada na origem para extrair os dados. (Exemplo: select * from sampledb.sample_table).
- outputTopic: o tópico do Pub/Sub a ser publicado, no formato projects/<PROJECT_ID>/topics/<TOPIC_NAME>. (Exemplo: projects/your-project-id/topics/your-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;]*
. (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. (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 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 : 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://
- defaultLogLevel: define o nível de registro nos workers. As opções aceitas são OFF, ERROR, WARN, INFO, DEBUG, TRACE. O padrão é INFO.
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.