Carregue dados do MySQL para o BigQuery

Pode carregar dados do MySQL para o BigQuery através do conetor do Serviço de transferência de dados do BigQuery para o MySQL. Suporta instâncias do MySQL alojadas no seu ambiente local, no Cloud SQL e noutros fornecedores de nuvem pública, como os serviços Web da Amazon (AWS) e o Microsoft Azure. Com o Serviço de transferência de dados do BigQuery, pode agendar tarefas de transferência recorrentes que adicionam os seus dados mais recentes do MySQL ao BigQuery.

Antes de começar

Funções necessárias

Se pretender configurar notificações de execução de transferências para o Pub/Sub, certifique-se de que tem a autorização de pubsub.topics.setIamPolicygestão de identidade e de acesso (IAM) . Não são necessárias autorizações do Pub/Sub se configurar apenas notificações por email. Para mais informações, consulte o artigo Notificações de execução do Serviço de transferência de dados do BigQuery.

Para receber as autorizações de que precisa para criar uma transferência de dados do MySQL, peça ao seu administrador para lhe conceder a função do IAM de administrador do BigQuery (roles/bigquery.admin) no seu projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para criar uma transferência de dados do MySQL. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para criar uma transferência de dados do MySQL:

  • bigquery.transfers.update
  • bigquery.datasets.get

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Ligações de rede

Se não estiver disponível um endereço IP público para a ligação à base de dados MySQL, tem de configurar uma associação de rede.

Para ver instruções detalhadas sobre a configuração de rede necessária, consulte os seguintes documentos:

Limitações

As transferências de dados do MySQL estão sujeitas às seguintes limitações:

  • O número máximo de ligações simultâneas a uma base de dados MySQL é determinado pelo parâmetro de configuração do MySQL max_connections. Por predefinição, este valor está definido como 151 ligações, mas pode ser configurado para um limite superior, conforme necessário. Como resultado, o número de execuções de transferência simultâneas para uma única base de dados MySQL está limitado a esse valor máximo. Esta limitação também significa que o número de tarefas de transferência simultâneas deve ser limitado a um valor inferior ao número máximo de ligações simultâneas suportadas pela base de dados MySQL.
  • No MySQL, alguns tipos de dados são mapeados para o tipo de string no BigQuery para evitar qualquer perda de dados. Por exemplo, os tipos numéricos definidos no MySQL que não têm uma precisão e uma escala definidas são mapeados para o tipo de string no BigQuery.
  • Uma única configuração de transferência só pode suportar uma execução de transferência de dados num determinado momento. No caso em que uma segunda transferência de dados esteja agendada para ser executada antes de a primeira transferência estar concluída, apenas a primeira transferência de dados é concluída, enquanto todas as outras transferências de dados que se sobreponham à primeira transferência são ignoradas.
    • Para evitar transferências ignoradas numa única configuração de transferência, recomendamos que aumente a duração do tempo entre transferências de dados grandes configurando a frequência de repetição.

Carregue dados do MySQL para o BigQuery

Adicione dados do MySQL ao BigQuery configurando uma configuração de transferência através de uma das seguintes opções:

Consola

  1. Aceda à página Transferências de dados.

    Aceda a Transferências de dados

  2. Clique em Criar transferência.

  3. Na secção Tipo de origem, para Origem, selecione MySQL.

  4. Na secção Nome da configuração de transferência, para Nome a apresentar, introduza um nome para a transferência. O nome da transferência pode ser qualquer valor que lhe permita identificar a transferência se precisar de a modificar mais tarde.

  5. Na secção Opções de agendamento, faça o seguinte:

    • Selecione uma frequência de repetição. Se selecionar a opção Horas, Dias (predefinição), Semanas ou Meses, também tem de especificar uma frequência. Também pode selecionar a opção Personalizado para criar uma frequência de repetição mais específica. Se selecionar a opção A pedido, esta transferência de dados só é executada quando aciona manualmente a transferência.
    • Se aplicável, selecione a opção Começar agora ou Começar a uma hora definida e indique uma data de início e um tempo de execução.
  6. Na secção Definições de destino, para Conjunto de dados, selecione o conjunto de dados que criou para armazenar os dados ou clique em Criar novo conjunto de dados e crie um para usar como conjunto de dados de destino.

  7. Na secção Detalhes da origem de dados, faça o seguinte:

    • Para Anexo de rede, selecione um anexo de rede existente ou clique em Criar anexo de rede. Para mais informações, consulte a secção Ligações de rede deste documento.
    • Para Anfitrião, introduza o nome de anfitrião ou o endereço IP do servidor de base de dados MySQL.
    • Para Número da porta, introduza o número da porta do servidor de base de dados MySQL.
    • Em Nome da base de dados, introduza o nome da base de dados do MySQL.
    • Para Nome de utilizador, introduza o nome de utilizador do utilizador do MySQL que inicia a ligação à base de dados do MySQL.
    • Para Palavra-passe, introduza a palavra-passe do utilizador do MySQL que inicia a ligação à base de dados do MySQL.
    • Para o Modo de encriptação, selecione Completo no menu para ativar a validação SSL completa quando se ligar à base de dados MySQL ou selecione Desativar para não ter validação SSL.
    • Para transferir objetos do MySQL, faça uma das seguintes ações:

      • Clique em Procurar para selecionar as tabelas do MySQL necessárias para a transferência e, de seguida, clique em Selecionar.
      • Introduza manualmente os nomes das tabelas nos objetos MySQL a transferir.

    Detalhes da origem de dados na página Criar transferência

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

    • Para ativar as notificações por email, clique no botão Notificações por email para o ativar. Quando ativa esta opção, o administrador da transferência recebe uma notificação por email quando uma execução de transferência falha.
    • Para configurar notificações executadas pelo Pub/Sub para a transferência, clique no botão Notificações do Pub/Sub para o ativar. Pode selecionar o nome do tópico ou clicar em Criar um tópico para criar um.
  9. Clique em Guardar.

bq

Introduza o comando bq mk e forneça a flag de criação de transferência --transfer_config:

bq mk
    --transfer_config
    --project_id=PROJECT_ID
    --data_source=DATA_SOURCE
    --display_name=DISPLAY_NAME
    --target_dataset=DATASET
    --params='PARAMETERS'

Substitua o seguinte:

  • PROJECT_ID (opcional): o ID do seu Trusted Cloud projeto. Se a flag --project_id não for fornecida para especificar um projeto em particular, é usado o projeto predefinido.
  • DATA_SOURCE: a origem de dados, que é mysql.
  • DISPLAY_NAME: o nome a apresentar da configuração de transferência de dados. O nome da transferência pode ser qualquer valor que lhe permita identificar a transferência se precisar de a modificar mais tarde.
  • DATASET: o conjunto de dados de destino para a configuração de transferência de dados.
  • PARAMETERS: os parâmetros da configuração de transferência criada no formato JSON. Por exemplo: --params='{"param":"param_value"}'. Seguem-se os parâmetros para uma transferência do MySQL:

    • networkAttachment (opcional): o nome da associação de rede para se ligar à base de dados MySQL.
    • connector.database: o nome da base de dados MySQL.
    • connector.endpoint.host: o nome do anfitrião ou o endereço IP da base de dados.
    • connector.endpoint.port: o número da porta da base de dados.
    • connector.authentication.username: o nome de utilizador do utilizador da base de dados.
    • connector.authentication.password: a palavra-passe do utilizador da base de dados. connector.connectionType
    • connector.connectionType (opcional): o tipo de associação para determinar o URL de associação. Pode ser SERVICE, SID ou TNS. Quando não é fornecido, a predefinição é SERVICE.
    • connector.encryptionMode: o modo de encriptação. Pode ser FULL para validação SSL completa quando se liga à base de dados MySQL ou DISABLE para não haver validação SSL.
    • assets: uma lista dos nomes das tabelas do MySQL a transferir da base de dados do MySQL como parte da transferência.

Por exemplo, o comando seguinte cria uma transferência do MySQL denominada My Transfer:

bq mk
    --transfer_config
    --target_dataset=mydataset
    --data_source=mysql
    --display_name='My Transfer'
    --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.encryptionMode":"FULL",
        "connector.database":"DB1",
        "connector.endpoint.host":"54.74.220.23",
        "connector.endpoint.port":3306}'

API

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

Quando guarda a configuração de transferência, o conetor MySQL aciona automaticamente uma execução de transferência de acordo com a opção de agendamento. Com cada execução de transferência, o conetor do MySQL transfere todos os dados disponíveis do MySQL para o BigQuery.

Para executar manualmente uma transferência de dados fora da sua programação normal, pode iniciar uma execução de preenchimento.

Mapeamento de tipos de dados

A tabela seguinte mapeia os tipos de dados do MySQL para os tipos de dados do BigQuery correspondentes.

Tipo de dados do MySQL Tipo de dados do BigQuery
BIT BOOLEAN
TINYINT INTEGER
BOOL, BOOLEAN BOOLEAN
SMALLINT INTEGER
MEDIUMINT INTEGER
INT, INTEGER INTEGER
BIGINT BIGNUMERIC
FLOAT FLOAT
DOUBLE FLOAT
DECIMAL BIGNUMERIC
DATE DATE
DATETIME TIMESTAMP
TIMESTAMP TIMESTAMP
TIME TIME
YEAR DATE
CHAR STRING
VARCHAR STRING
BINARY BYTES
VARBINARY BYTES
TINYBLOB BYTES
TINYTEXT STRING
BLOB BYTES
TEXT STRING
MEDIUMBLOB BYTES
MEDIUMTEXT STRING
LONGBLOB BYTES
LONGTEXT STRING
ENUM STRING
SET STRING

Resolver problemas

Se estiver a ter problemas com a configuração da transferência de dados, consulte a secção Problemas de transferência do MySQL.

O que se segue?