Nesta página, descrevemos como importar dados para instâncias do Cloud SQL. É possível importar dados de arquivos dump SQL ou CSV.
Clique no link a seguir e conheça as Práticas recomendadas para importar e exportar dados.
Depois de concluir uma operação de importação, verifique os resultados.
Como importar dados de um arquivo dump SQL para o Cloud SQL
Antes de começar
- Verifique se você configurou os papéis e permissões necessários.
-
Crie um arquivo dump SQL. Use as instruções do marcador abaixo que se aplicam à sua situação. Essas instruções definem certas sinalizações que tornam o arquivo dump compatível com o Cloud SQL.
- Se você estiver importando dados de um servidor MySQL local:
- Crie um arquivo dump SQL seguindo as instruções em Como exportar dados usando mysqldump.
- Crie um bucket no Cloud Storage seguindo as instruções em Como criar buckets de armazenamento.
- Faça o upload do arquivo dump SQL para o bucket do Cloud Storage usando o procedimento em Como fazer upload de objetos.
- Se você estiver importando dados de outra instância do Cloud SQL, consulte as instruções em Como exportar dados do Cloud SQL para um arquivo dump SQL.
- A operação de importação tenta executar os comandos SQL no arquivo
sqldump
, como excluir e recriar tabelas, entradas e índices. Para ajuda sobre a criação de um banco de dados, consulte Como criar um banco de dados. - Não use um usuário do sistema (por exemplo, root@localhost) como
DEFINER
para acionadores, visualizações ou procedimentos armazenados. Você não terá acesso a esse usuário no Cloud SQL. - Se o arquivo dump SQL contiver cláusulas
DEFINER
(visualizações, gatilhos ou procedimentos armazenados), dependendo da ordem de execução dessas instruções, a importação poderá falhar. Saiba mais sobre o uso deDEFINER
e as possíveis soluções alternativas no Cloud SQL. - Para informações sobre como criar um arquivo dump SQL que pode ser importado para o Cloud SQL, consulte Como criar um arquivo dump SQL.
- Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.
- Selecione a instância para abrir a página Visão geral correspondente.
- Clique em Importar na barra de botões.
- Em Escolha o arquivo do qual você quer importar dados, insira o caminho
para o bucket e o arquivo dump SQL que será usado para a importação. Ou navegue até o
arquivo:
- Clique em Pesquisar.
- Em Local, clique duas vezes no nome do bucket na lista.
- Selecione o arquivo na lista.
- Clique em Selecionar.
É possível importar um arquivo compactado (
.gz
) ou descompactado (.sql
). - Em Formato, selecione SQL.
Selecione o banco de dados que receberá os dados importados.
Isso faz com que o Cloud SQL execute a instrução
USE DATABASE
antes da importação.- Clique em Importar para iniciar a importação.
-
Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.
Se precisar de ajuda para criar um bucket, consulte Como criar buckets do Storage.
Faça upload do arquivo no seu bucket.
Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.
- Descreva a instância para a qual está fazendo a importação:
gcloud sql instances describe [INSTANCE_NAME]
- Copie o campo
serviceAccountEmailAddress
. - Use
gsutil iam
para conceder o papel do IAMstorage.objectAdmin
à conta de serviço do bucket.gsutil iam ch serviceAccount:[SERVICE-ACCOUNT]:objectAdmin \ gs://[BUCKET-NAME]
Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM. - Importe o banco de dados:
gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[IMPORT_FILE_NAME] \ --database=[DATABASE_NAME]
Para informações sobre como usar o comando
import sql
, consulte a página de referência do comandosql import sql
.Se o comando retornar um erro como "ERROR_RDBMS", analise as permissões. Esse erro costuma surgir de problemas de permissões.
- Se não for necessário manter as permissões do IAM
definidas anteriormente, remova-as usando
gsutil iam
. - Se você estiver importando dados de um servidor MySQL local:
- Crie um arquivo dump SQL seguindo as instruções em Como exportar dados usando mysqldump.
- Crie um bucket no Cloud Storage seguindo as instruções em Como criar buckets de armazenamento.
- Faça o upload do arquivo dump SQL para o bucket do Cloud Storage usando o procedimento em Como fazer upload de objetos.
- Se você estiver importando dados de outra instância do Cloud SQL, consulte as instruções em Como exportar dados do Cloud SQL para um arquivo dump SQL.
-
Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.
Se precisar de ajuda para criar um bucket, consulte Como criar buckets do Storage.
Faça upload do arquivo no seu bucket.
Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.
- Forneça à instância o
papel do IAM
storage.objectAdmin
no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM. - Importe seu arquivo dump:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do bucket do Cloud Storage
- path_to_sql_file: o caminho para o arquivo SQL
- database_name: o nome de um banco de dados dentro da instância do Cloud SQL
Método HTTP e URL:
POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON da solicitação:
{ "importContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_sql_file", "database": "database_name" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import. - Se você não precisa manter as permissões do IAM definidas anteriormente, remova-as agora.
- Verifique se você configurou os papéis e permissões necessários.
- O banco de dados e a tabela em que você está importando já precisam existir em sua instância do Cloud SQL.
Para ajuda sobre a criação de um banco de dados, consulte
Como criar um banco de dados.
Para criar uma tabela, use a
instrução SQL
CREATE TABLE
no clientemysql
. - O arquivo CSV precisa estar de acordo com os requisitos de formato do arquivo CSV
abaixo.
Se o arquivo não atender a esses requisitos, também será possível usar a instrução
LOAD DATA LOCAL INFILE
no clientemysql
para carregar um arquivo local no banco de dados. Isso requer o uso da opção--local-infile
para o clientemysql
. - Se você estiver importando dados exportados de um servidor MySQL
local:
- Crie um bucket no Cloud Storage seguindo as instruções em Como criar buckets de armazenamento.
- Faça o upload do arquivo dump SQL para o bucket do Cloud Storage usando o procedimento em Como fazer upload de objetos.
- Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.
- Selecione a instância para abrir a página Visão geral correspondente.
- Clique em Importar na barra de botões.
- Em Escolha o arquivo do qual você quer importar dados, insira o
caminho para o bucket e o arquivo CSV para a importação. Ou navegue até o
arquivo:
- Clique em Pesquisar.
- Em Local, clique duas vezes no nome do bucket na lista.
- Selecione o arquivo na lista.
- Clique em Selecionar.
É possível importar um arquivo compactado (
.gz
) ou descompactado (.csv
). - Em Formato, selecione CSV.
- Especifique o Banco de dados e a Tabela na instância do Cloud SQL em que você quer importar o arquivo CSV.
- Você pode, opcionalmente, especificar um usuário para usar na importação.
- Clique em Importar para iniciar a importação.
-
Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.
Se precisar de ajuda para criar um bucket, consulte Como criar buckets do Storage.
Faça upload do arquivo no seu bucket.
Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.
- Faça upload dos dados do arquivo CSV para o bucket.
- Descreva a instância usada para exportar:
gcloud sql instances describe [INSTANCE_NAME]
- Copie o campo serviceAccountEmailAddress.
- Use
gsutil iam
para conceder o papel do IAMstorage.objectAdmin
à conta de serviço do bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM. - Importe o arquivo:
gcloud sql import csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \ --database=[DATABASE_NAME] --table=[TABLE_NAME]
Para informações sobre como usar o comando
import csv
, consulte a página de referência do comandosql import csv
. - Se não for necessário manter as permissões do IAM
definidas anteriormente, remova-as usando
gsutil iam
. -
Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.
Se precisar de ajuda para criar um bucket, consulte Como criar buckets do Storage.
Faça upload do arquivo no seu bucket.
Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.
- Forneça à instância o
papel do IAM
storage.objectAdmin
no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM. - Importe o arquivo:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do bucket do Cloud Storage
- path_to_csv_file: o caminho para o arquivo CSV
- database_name: o nome de um banco de dados dentro da instância do Cloud SQL
- table_name: o nome da tabela do banco de dados
Método HTTP e URL:
POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON da solicitação:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": "database_name", "csvImportOptions": { "table": "table_name" } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import. - Se você não precisar manter as permissões do Cloud IAM definidas anteriormente, remova-as.
- fecha todas as conexões;
- encerra todas as tarefas que possam estar consumindo recursos.
ALTER TABLE
CREATE TABLE
DROP TABLE
RENAME TABLE
TRUNCATE TABLE
- O usuário pode não ter todas as permissões necessárias do Cloud Storage.
- A tabela de banco de dados pode não existir.
- Verifique se você tem pelo menos as permissões
WRITER
no bucket eREADER
no arquivo de exportação. Para mais informações sobre como configurar o controle de acesso no Cloud Storage, consulte Criar e gerenciar listas de controle de acesso. - Verifique se a tabela existe. Se a tabela existir, confirme se você tem as permissões corretas no bucket.
Como importar dados de um arquivo dump SQL no Cloud Storage
Para importar dados de um arquivo dump SQL para uma instância do Cloud SQL:
Console
gcloud
REST v1beta4
Crie um arquivo dump SQL. Use as instruções do marcador abaixo que se aplicam à sua situação. Essas instruções definem certas sinalizações que tornam o arquivo dump compatível com o Cloud SQL.
Como importar dados de arquivos CSV para o Cloud SQL
Antes de começar
Requisitos de formato do arquivo CSV
Arquivos CSV precisam ter uma linha para cada linha de dados e campos separados por vírgula. O formato de arquivos CSV aceito pelo Cloud SQL é equivalente ao uso das seguintes instruções do MySQL: LOAD DATA INFILE ... CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"'. Para criar um CSV neste formato, ao exportar seus dados de um banco de dados atual, verifique se sua exportação usa as mesmas opções ou delimitadores como aqueles usados pelo Cloud SQL para importação. Para ver um exemplo, consultee [Creating a CSV file](/sql/docs/mysql/import-export/exporting#csv){: target="_blank"}.Como importar dados de um arquivo CSV no Cloud Storage
Para importar dados para uma instância do Cloud SQL usando um arquivo CSV:
Console
gcloud
REST v1beta4
Se você receber um erro como ERROR_RDBMS
, verifique se a
tabela existe. Se a tabela existir, confirme se você tem as permissões
corretas no bucket. Para receber ajuda para configurar o controle de acesso no
Cloud Storage, consulte
Criar e gerenciar listas de controle de acesso.
Papéis e permissões necessárias
Para este procedimento, é necessário importar um arquivo do Cloud Storage. Para importar
dados do Cloud Storage, a conta de serviço da instância
do Cloud SQL ou o usuário precisa ter o papel
Administrador do Cloud SQL
ou um papel personalizado com a permissão cloudsql.instances.import
e o papel do IAM roles/storage.LegacyObjectReader
(que tem a permissão
storage.objects.get
).
Se a conta ou o usuário também estiver realizando operações de exportação, conceda o conjunto de papéis do IAM "Administrador de objetos do Storage"
(storage.objectAdmin
). Para receber ajuda com
os papéis do IAM, consulte Cloud Identity and Access Management para o Cloud Storage.
Encontre o nome da conta de serviço da instância na página Visão geral da instância no Console do Google Cloud. Verifique os papéis do bucket do Cloud Storage usando a ferramenta gsutil:
gsutil iam get gs://[BUCKET_NAME]
Saiba mais sobre como usar o IAM com buckets.
Solução de problemas
Clique nos links da tabela para ver detalhes:
Para este problema... | O problema pode ser... | Tente o seguinte... |
---|---|---|
Não é possível ver o status da operação. | A interface do usuário mostra apenas sucesso ou falha. | Use estes comandos do banco de dados para saber mais. |
408 Error (Timeout) durante a exportação. |
A exportação do SQL pode demorar muito, dependendo do tamanho do banco de dados e do conteúdo exportado. | Use várias exportações de CSV para reduzir o tamanho de cada operação. |
A exportação de CSV funcionou, mas a exportação de SQL falhou. | A exportação de SQL tem mais chances de ter problemas de compatibilidade com o Cloud SQL. | Use exportações de CSV para exportar apenas o que você precisa. |
A exportação está demorando muito. | O Cloud SQL não é compatível com operações síncronas simultâneas. | Use o descarregamento de exportação. Saiba mais. |
A importação está demorando demais. | Muitas conexões ativas podem interferir nas operações de importação. | Feche as conexões não usadas ou reinicie a instância do Cloud SQL antes de iniciar uma operação de importação. |
Error 1412: Table definition has changed . |
A tabela foi alterada durante a exportação. | Remova todas as instruções de alteração de tabela da operação de despejo. |
Falha na importação. | O arquivo exportado pode conter usuários do banco de dados que ainda não existem. | Limpe o banco de dados com falha antes de tentar realizar a importação novamente. Crie os usuários do banco de dados antes de fazer a importação. |
Conexão fechada durante a operação de exportação. | A consulta precisa produzir dados nos primeiros sete minutos. | Teste a consulta manualmente. Saiba mais. |
Erro desconhecido durante a exportação. | Possível problema de largura de banda. | Verifique se a instância e o bucket do Cloud Storage estão na mesma região. |
Você quer automatizar as exportações. | O Cloud SQL não oferece uma maneira de automatizar exportações. | Crie seu próprio pipeline para executar essa funcionalidade. Saiba mais. |
ERROR_RDBMS: system error occurred . |
Permissões do Cloud Storage ou tabela não existente. | Verifique as permissões OU verifique se a tabela existe. |
Erro durante a importação: a tabela não existe. | Uma tabela obrigatória não existe no momento. | Desative FOREIGN_KEY_CHECKS
no início da importação. |
Mensagem de erro: Access denied; you need (at least one of) the SUPER
privilege(s) for this operation |
Pode haver um evento, uma visualização, uma função ou um procedimento no arquivo dump usando superusuario@localhost (como o root@localhost). Isso não é compatível com o Cloud SQL. | Saiba mais
sobre o uso de DEFINER e as possíveis soluções alternativas no Cloud SQL. |
Mensagem de erro: ERROR 1045 (28000) at line {line_number}: Access denied for user 'cloudsqlimport'@'localhost' |
Há um DEFINER no arquivo dump que não existe no banco de dados. |
Veja mais informações sobre o uso de DEFINER e possíveis soluções alternativas no Cloud SQL. |
Mensagem de erro: Unknown table 'COLUMN_STATISTICS' in information_schema |
Isso acontece se você usar o binário mysqldump do MySQL 8.0 para fazer dump
de dados de um banco de dados MySQL 5.7 e importá-los para um banco de dados MySQL 8.0. |
Se você fizer dump de dados de um banco de dados MySQL 5.7 e importá-los para um banco de dados
MySQL 8.0, use o binário mysqldump do MySQL 5.7. Se você usar o binário
mysqldump do MySQL 8.0, precisará adicionar a
sinalização --column-statistics=0 . |
Não é possível ver o status da operação
Não é possível ver o status de uma operação em andamento.
O problema pode ser
O Console do Google Cloud informa apenas o sucesso ou falha no momento da conclusão e não foi projetado para retornar avisos.
O que você pode tentar
Conecte-se ao banco de dados e execute SHOW WARNINGS
.
Erro 408 (tempo limite) durante a exportação
Você vê a mensagem de erro 408 Error (Timeout)
ao executar um job de exportação no Cloud SQL.
O problema pode ser
Os formatos CSV e SQL são exportados de maneira diferente. O formato SQL exporta todo o banco de dados e provavelmente leva mais tempo para ser concluído. O formato CSV permite definir quais elementos do banco de dados serão incluídos na exportação.
O que você pode tentar
Use o formato CSV e execute vários jobs de exportação menores para reduzir o tamanho e a duração de cada operação.
A exportação de CSV funcionou, mas a exportação de SQL falhou
A exportação de CSV funcionou, mas a exportação de SQL falhou.
Possível problema
Os formatos CSV e SQL são exportados de maneira diferente. O formato SQL exporta todo o banco de dados e provavelmente leva mais tempo para ser concluído. O formato CSV permite definir quais elementos do banco de dados serão incluídos na exportação.
O que você pode tentar
Use exportações de CSV para exportar apenas o que você precisa.
A exportação está demorando muito
A exportação está demorando muito, bloqueando outras operações.
O problema pode ser
O Cloud SQL não é compatível com operações síncronas simultâneas.
O que você pode tentar
Tente exportar conjuntos de dados cada vez menores.
A importação está demorando demais
A importação está demorando muito, o que bloqueia outras operações.
O problema pode ser
Muitas conexões ativas podem interferir nas operações de importação. As conexões consomem CPU e memória, limitando os recursos disponíveis.
O que você pode tentar
Feche operações não usadas. Verifique o uso de CPU e da memória para garantir que há vários recursos disponíveis. A melhor maneira de garantir o máximo de recursos para a operação de importação é reiniciar a instância antes de começar a operação. Uma reinicialização:
mysqldump: Error 1412: Table definition has changed
Você vê a mensagem de erro mysqldump: Error 1412: Table definition has
changed, retry transaction when dumping the table
.
Possível problema
Durante o processo de exportação, houve uma alteração na tabela.
O que você deve tentar
A transação de despejo poderá falhar se você usar as seguintes instruções durante a operação de exportação:
Falha na importação
A importação falha quando um ou mais usuários referenciados no arquivo de despejo SQL exportado não existem.
O problema pode ser
Antes de importar um arquivo de dump SQL, todos os usuários do banco de dados que têm objetos ou receberam permissões nos objetos no banco de dados despejado precisam existir. Caso contrário, a restauração não recriará os objetos com a propriedade e/ou as permissões originais.
O que você pode tentar
Limpe o banco de dados com falha antes de tentar realizar a importação novamente. Crie os usuários do banco de dados antes de importar o dump SQL.
Conexão fechada durante a operação de exportação
Conexão fechada durante a operação de exportação.
O problema pode ser
A conexão com o Cloud Storage pode expirar porque a consulta em execução na exportação não está produzindo nenhum dado nos primeiros sete minutos desde que a exportação foi iniciada.
O que você pode tentar
Teste a consulta manualmente conectando-se a partir de qualquer cliente e enviando a saída da consulta para STDOUT com o comando abaixo:
COPY (INSERT_YOUR_QUERY_HERE) TO STDOUT WITH ( FORMAT csv, DELIMITER ',', ENCODING 'UTF8', QUOTE '"', ESCAPE '"' )
.
Esse é o comportamento esperado, porque quando a exportação é iniciada, o cliente deve começar a enviar dados imediatamente. Caso a conexão continue sem dados enviados, ela acaba sendo interrompida e, por fim, resultando em falha na exportação e deixando a operação em um estado incerto. Além disso, é isso que a mensagem de erro do gcloud está tentando dizer com esta mensagem:
operation is taking longer than expected
.
Erro desconhecido durante a exportação
Você verá a mensagem de erro Unknown error
ao tentar exportar um banco de dados para um bucket do Cloud Storage.
O problema pode ser
A transferência pode falhar devido a um problema de largura de banda.
O que você pode tentar
A instância do Cloud SQL pode estar em uma região diferente do bucket do Cloud Storage. A leitura e a gravação de dados de um continente para outro envolve o uso excessivo de rede e pode causar problemas intermitentes como esse. Verifique as regiões da instância e do bucket.
Querer automatizar exportações
Você quer automatizar as exportações.
O problema pode ser
O Cloud SQL não oferece uma maneira de automatizar exportações.
O que você pode tentar
É possível criar seu próprio sistema de exportação automatizada usando produtos do Google Cloud, como Cloud Scheduler, Pub/Sub e Cloud Functions.
Houve um erro de sistema ERROR_RDBMS
Você vê a mensagem de erro [ERROR_RDBMS] system error occurred
.
O problema pode ser
O que você pode tentar
Erro durante a importação: a tabela não existe
Uma operação de importação falha com um erro de que uma tabela não existe.
Possível problema
As tabelas podem ter dependências de chave externa em outras tabelas e, dependendo da ordem das operações, uma ou mais delas ainda não existem durante a operação de importação.
O que você deve tentar
Adicione a seguinte linha no início do arquivo dump:
SET FOREIGN_KEY_CHECKS=0;
Além disso, adicione esta linha ao final do arquivo dump:
SET FOREIGN_KEY_CHECKS=1;
Essas configurações desativam as verificações de integridade de dados enquanto a operação de importação está em andamento e as reativam após o carregamento dos dados. Isso não afeta a integridade dos dados no banco de dados porque eles já foram validados durante a criação do arquivo dump.
Acesso negado. Você precisa de (pelo menos um dos) privilégios de SUPER para esta operação
Você verá o erro Access denied; you need (at least one of) the SUPER privilege(s) for this operation
.
Possível problema
Pode haver um evento, uma visualização, uma função ou um procedimento no arquivo dump usando superusuario@localhost (como root@localhost). Isso não é compatível com o Cloud SQL.
O que você pode tentar
Consulte este documento
sobre como importar um banco de dados com cláusulas DEFINER
.
Mensagem de erro: ERROR 1045 (28000) at line {line_number}: Access denied for user 'cloudsqlimport'@'localhost'
Você verá o erro ERROR 1045 (28000) at line {line_number}: Access denied
for user 'cloudsqlimport'@'localhost'
.
Possível problema
A causa raiz é que um usuário no arquivo dump com a
cláusula DEFINER
não existe no banco de dados, e que esse usuário
tem referência cruzada nas definições de objetos no banco de dados.
O que você pode tentar
Consulte este documento
sobre como importar um banco de dados com cláusulas DEFINER
no arquivo
dump. Talvez seja necessário criar primeiro um ou mais usuários no banco de dados.
Mensagem de erro: tabela desconhecida "COLUMN_STATISTICS" em information_schema
Você vê a mensagem de erro Unknown table 'COLUMN_STATISTICS' in information_schema
.
Possível problema
Isso acontece se você usar o binário mysqldump
do MySQL 8.0 para fazer dump
de dados de um banco de dados MySQL 5.7 e importá-los para um banco de dados MySQL 8.0.
O que você pode tentar
Se você fizer dump de dados de um banco de dados MySQL 5.7 e importá-los para um banco de dados
MySQL 8.0, use o binário mysqldump
do MySQL 5.7. Se você usar o binário
mysqldump
do MySQL 8.0, precisará adicionar a
sinalização --column-statistics=0
.
A seguir
- Saiba como verificar o status de operações de importação e exportação.
- Saiba mais sobre importação e exportação de dados.
- Saiba mais sobre o Cloud Storage.