Programar uma transferência do MySQL
O conector MySQL do serviço de transferência de dados do BigQuery permite que você ingira dados da sua instância do MySQL no BigQuery. Ele oferece suporte a instâncias do MySQL hospedadas no seu ambiente local, no Cloud SQL e em outros provedores de nuvem pública, como o Amazon Web Services (AWS) e o Microsoft Azure. O conector MySQL do serviço de transferência de dados do BigQuery também permite criar jobs de transferência de dados sob demanda e recorrentes para transferir dados de um banco de dados MySQL para o BigQuery.
Antes de começar
- Crie um usuário no banco de dados MySQL.
- Verifique se você concluiu todas as ações necessárias para ativar o serviço de transferência de dados do BigQuery.
- Crie um conjunto de dados do BigQuery para armazenar os dados.
- Verifique se você tem os papéis necessários para concluir as tarefas deste documento.
Funções exigidas
Se você pretende configurar notificações de execução de transferência do Pub/Sub,
verifique se você tem a permissão pubsub.topics.setIamPolicy
do Identity and Access Management (IAM). As permissões do Pub/Sub não são necessárias se você configurar apenas
notificações por e-mail. Para saber mais informações, consulte
Notificações de execução do serviço de transferência de dados do BigQuery.
Para receber as permissões necessárias para criar uma transferência de dados do MySQL,
peça ao administrador para conceder a você o
papel do IAM de Administrador do BigQuery (roles/bigquery.admin
) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar uma transferência de dados do MySQL. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar uma transferência de dados do MySQL:
-
bigquery.transfers.update
-
bigquery.datasets.get
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Conexões de rede
Se um endereço IP público não estiver disponível para a conexão do banco de dados MySQL, será necessário configurar um anexo de rede.
Para instruções detalhadas sobre a configuração de rede necessária, consulte os seguintes documentos:
- Se você estiver transferindo do Cloud SQL, consulte Configurar o acesso à instância do Cloud SQL.
- Se você estiver transferindo da AWS, consulte Configurar a VPN e o anexo de rede AWS-Google Cloud .
- Se você estiver transferindo dados do Azure, consulte Configurar a VPN e o anexo de rede do Azure-Google Cloud .
Limitações
As transferências de dados do MySQL estão sujeitas às seguintes limitações:
- O número máximo de conexões simultâneas a um banco de dados MySQL
é determinado pelo parâmetro de configuração MySQL
max_connections
. Por padrão, esse valor é definido como 151 conexões, mas pode ser configurado para um limite maior, conforme necessário. Como resultado, o número de execuções de transferência simultâneas para um único banco de dados MySQL é limitado a esse valor máximo. Essa limitação também significa que o número de trabalhos de transferência simultâneos precisa ser limitado a um valor menor que o número máximo de conexões simultâneas suportadas pelo banco de dados MySQL. - No MySQL, alguns tipos de dados são mapeados para o tipo de string no BigQuery para evitar a perda de dados. Por exemplo, os tipos numéricos definidos no MySQL que não têm uma precisão e escala definidas são mapeados para o tipo de string no BigQuery.
Configurar uma transferência de dados do MySQL
Selecione uma das seguintes opções:
Console
Acesse a página Transferências de dados.
Clique em
Criar transferência.Na seção Tipo de origem, em Origem, selecione MySQL.
No campo Nome de exibição, na seção Transferir nome da configuração, insira um nome para a transferência. O nome da transferência pode ser qualquer valor que permite identificá-la, caso você precise modificá-la mais tarde.
Na seção Opções de programação, realize estas ações:
- Selecione uma frequência de repetição. Se você selecionar as opções Horas, Dias (padrão), Semanas ou Meses, também precisará especificar uma frequência. Também é possível selecionar a opção Personalizado para criar uma frequência de repetição mais específica. Se você selecionar a opção Sob demanda, essa transferência de dados só será executada quando você acionar manualmente a transferência.
- Se aplicável, selecione a opção Começar agora ou Começar em um horário definido e informe uma data de início e um horário de execução.
Na seção Configurações de destino, em Conjunto de dados, selecione o conjunto que você criou para armazenar seus dados ou clique em Criar novo conjunto de dados e crie um para usar como o conjunto de dados de destino.
Na seção Detalhes da fonte de dados, faça o seguinte:
- Em Anexo de rede, selecione um anexo de rede existente ou clique em Criar anexo de rede. Para mais informações, consulte a seção Conexões de rede deste documento.
- Em Host, insira o nome do host ou o endereço IP do servidor do banco de dados MySQL.
- Em Número da porta, insira o número da porta do servidor do banco de dados MySQL.
- Em Nome do banco de dados, insira o nome do banco de dados MySQL.
- Em Nome de usuário, digite o nome de usuário do usuário do MySQL que está iniciando a conexão do banco de dados do MySQL.
- Em Senha, insira a senha do usuário do MySQL que iniciou a conexão do banco de dados MySQL.
- Em Modo de criptografia, selecione Completo no menu para ativar a validação SSL completa ao se conectar ao banco de dados MySQL ou selecione Desativar para não usar a validação SSL.
Para transferir objetos do MySQL, faça o seguinte:
- Clique em Procurar para selecionar as tabelas do MySQL necessárias para a transferência e clique em Selecionar.
- Insira manualmente os nomes das tabelas nos objetos MySQL para transferir.
Opcional: no menu Conta de serviço, especifique uma conta de serviço personalizada para autorizar a transferência. Verifique se a conta de serviço usada tem todos os papéis e permissões necessários. Para mais informações, consulte Transferir o proprietário como uma conta de serviço.
Opcional: na seção Opções de notificação, faça o seguinte:
- Para ativar as notificações por e-mail, clique no botão de alternância Notificações por e-mail para a posição ativada. Quando você ativa essa opção, o administrador de transferência recebe uma notificação por e-mail quando uma execução de transferência falha.
- Para configurar as notificações de execução do Pub/Sub para sua transferência, clique no botão de alternância Notificações do Pub/Sub para ativar. Selecione o nome do tópico ou clique em Criar um tópico.
Clique em Salvar.
bq
Insira o comando bq mk
e forneça a flag de criação da 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:
- PROJECT_ID (opcional): o ID do projeto do Google Cloud .
Se a flag
--project_id
não for fornecida para especificar um projeto específico, o projeto padrão será usado. - DATA_SOURCE: a fonte de dados, que é
mysql
. - DISPLAY_NAME: o nome de exibição da configuração da transferência de dados. O nome da transferência pode ser qualquer valor que permita identificá-la, caso você precise modificá-la mais tarde.
- DATASET: o conjunto de dados de destino na configuração da transferência de dados.
PARAMETERS é o parâmetro da configuração de transferência criada no formato JSON. Por exemplo,
--params='{"param":"param_value"}'
. Confira a seguir os parâmetros de uma transferência do MySQL:networkAttachment
(opcional): o nome do anexo de rede para se conectar ao banco de dados MySQL.connector.database
: o nome do banco de dados MySQL.connector.endpoint.host
: o nome do host ou endereço IP do banco de dados.connector.endpoint.port
: o número da porta do banco de dados.connector.authentication.username
: o nome de usuário do usuário do banco de dados.connector.authentication.password
: a senha do usuário do banco de dados. connector.connectionTypeconnector.connectionType
(opcional): o tipo de conexão para determinar o URL da conexão. Os valores podem serSERVICE
,SID
ouTNS
. Quando não fornecido, o padrão éSERVICE
.connector.encryptionMode
: o modo de criptografia. Pode serFULL
para validação SSL completa ao se conectar ao banco de dados MySQL ouDISABLE
para nenhuma validação SSL.assets
: uma lista dos nomes das tabelas do MySQL que serão transferidas do banco de dados do MySQL como parte da transferência.
Por exemplo, o comando abaixo cria uma transferência
MySQL chamada 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
.
Mapeamento de tipo de dados
A tabela a seguir mapeia os tipos de dados do MySQL para os tipos de dados correspondentes do BigQuery.
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 você tiver problemas para configurar a transferência de dados, consulte Problemas de transferência do MySQL.
A seguir
- Para uma visão geral do serviço de transferência de dados do BigQuery, consulte O que é o serviço de transferência de dados do BigQuery?.
- Para mais informações sobre o uso de transferências, incluindo detalhes sobre a configuração de transferência, como listar configurações e como visualizar o histórico de execução de uma transferência, consulte Como trabalhar com transferências.
- Saiba como carregar dados com operações entre nuvens.