Esta página descreve a exportação e a importação de dados para instâncias do Cloud SQL através de ficheiros de despejo de SQL.
Antes de começar
As exportações usam recursos da base de dados, mas não interferem com as operações normais da base de dados, a menos que a instância tenha um aprovisionamento insuficiente.
Para ver as práticas recomendadas, consulte o artigo Práticas recomendadas para importar e exportar dados.
Após concluir uma operação de importação, valide os resultados.
Exporte dados do Cloud SQL para MySQL
Funções e autorizações necessárias para exportar a partir do Cloud SQL para MySQL
Para exportar dados do Cloud SQL para o Cloud Storage, o utilizador que inicia a exportação tem de ter uma das seguintes funções:
- A função Editor do Cloud SQL
- Uma função personalizada,
incluindo as seguintes autorizações:
cloudsql.instances.get
cloudsql.instances.export
Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:
- A
storage.objectAdmin
função de gestão de identidade e de acesso (IAM) - Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.create
storage.objects.list
(apenas para exportar ficheiros em paralelo)storage.objects.delete
(apenas para exportar ficheiros em paralelo)
Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.
Exporte para um ficheiro de captura SQL a partir do Cloud SQL para MySQL
Para criar um ficheiro de captura SQL, exporte dados do Cloud SQL para o Cloud Storage. Depois de o ficheiro estar no Cloud Storage, pode importá-lo para outra base de dados do Cloud SQL. Também pode transferir dados do Cloud Storage para o seu ambiente local se quiser aceder a eles localmente.A exportação do Cloud SQL usa o utilitário mysqldump com as opções --single-transaction
e --hex-blob
. Com a opção --single-transaction
, o mysqldump
inicia uma transação antes da execução. Em vez de bloquear toda a base de dados, isto permite que o mysqldump
leia a base de dados no estado atual, o que resulta numa
transferência de dados consistente.
Se o seu ficheiro de despejo SQL contiver cláusulas DEFINER (vistas, acionadores, stored_procedures, etc.), a utilização deste ficheiro para importação pode falhar, consoante a ordem em que estas declarações são executadas. Saiba mais sobre a utilização de DEFINER e possíveis soluções alternativas no Cloud SQL.
Para exportar dados de uma base de dados numa instância do Cloud SQL para um ficheiro de despejo SQL num contentor do Cloud Storage:
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Clique em Exportar.
- Na secção Formato de ficheiro, clique em SQL para criar um ficheiro de captura SQL.
- Na secção Dados a exportar, clique em Uma ou mais bases de dados nesta instância para exportar bases de dados específicas.
- Use o menu pendente para selecionar as bases de dados a partir das quais quer exportar.
- Na secção Destino, selecione Procurar para pesquisar um contentor ou uma pasta do Cloud Storage para a sua exportação.
- Clique em Exportar para iniciar a exportação.
gcloud
- Crie um contentor do Cloud Storage.
- Encontre a conta de serviço da instância do Cloud SQL a partir da qual está a fazer a exportação. Pode fazê-lo executando o comando
gcloud sql instances describe
. Procure o camposerviceAccountEmailAddress
no resultado.gcloud sql instances describe INSTANCE_NAME
- Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função IAM à conta de serviço. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a base de dados para o seu contentor do Cloud Storage:
gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \ --database=DATABASE_NAME \ --offload
O comando
export sql
não contém acionadores nem procedimentos armazenados, mas contém vistas. Para exportar acionadores e/ou procedimentos armazenados, use a ferramenta mysqldump.Para mais informações sobre a utilização do comando
export sql
, consulte a página de referência do comandosql export sql
. - Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
REST v1
- Crie um contentor para a exportação:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
legacyBucketWriter
função de IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a sua base de dados:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_DUMP_FILE: o caminho para o ficheiro de captura SQL
- DATABASE_NAME_1: o nome de uma base de dados na instância do Cloud SQL
- DATABASE_NAME_2: o nome de uma base de dados na instância do Cloud SQL
- Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE", "databases": ["DATABASE_NAME"], "offload": TRUE | FALSE } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
REST v1beta4
- Crie um contentor para a exportação:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
storage.objectAdmin
função de IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a sua base de dados:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_DUMP_FILE: o caminho para o ficheiro de captura SQL
- DATABASE_NAME_1: o nome de uma base de dados na instância do Cloud SQL
- DATABASE_NAME_2: o nome de uma base de dados na instância do Cloud SQL
- Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE", "databases": ["DATABASE_NAME"], "offload": TRUE | FALSE } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Exporte a partir do seu servidor MySQL local através do mysqldump
Se estiver a exportar dados de uma base de dados do MySQL no local para importação para uma base de dados do Cloud SQL, tem de usar o utilitário mysqldump
com as seguintes flags:
--databases
Tem de usar a opção--databases
para especificar uma lista explícita de bases de dados a exportar, e esta lista não pode conter a base de dados do sistemamysql
.--hex-blob
Se a sua base de dados contiver campos binários, tem de usar esta flag para garantir que os campos binários são importados corretamente.--set-gtid-purged=OFF
As informações de GTID não podem ser incluídas no ficheiro de captura SQL e o registo binário não pode ser desativado pelo ficheiro de captura SQL. (Não é necessário para o MySQL 5.5 ou a replicação externa.)--single-transaction
Inicia uma transação antes da execução. Em vez de bloquear toda a base de dados, isto permite que o mysqldump leia a base de dados no estado atual, o que resulta num despejo de dados consistente.
Numa linha de comandos, execute mysqldump
:
mysqldump --databases DATABASE_NAME -h INSTANCE_IP -u USERNAME -p \ --hex-blob --single-transaction --set-gtid-purged=OFF \ --default-character-set=utf8mb4 > SQL_FILE.sql
Para obter ajuda com o mysqldump
, consulte a
referência do mysqldump.
Replicação externa para o Cloud SQL para MySQL
Para criar um ficheiro de despejo para utilização numa configuração de servidor externo, consulte o artigo Replicação a partir de um servidor externo.
Importe dados para o Cloud SQL para MySQL
Funções e autorizações necessárias para a importação para o Cloud SQL para MySQL
Para importar dados do Cloud Storage para o Cloud SQL, o utilizador que inicia a importação tem de ter uma das seguintes funções:
- A função Administrador do Cloud SQL
- Uma função personalizada,
incluindo as seguintes autorizações:
cloudsql.instances.get
cloudsql.instances.import
Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:
- A função de IAM
storage.objectAdmin
- Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.get
storage.objects.list
(apenas para importar ficheiros em paralelo)
Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.
Importe um ficheiro de captura SQL para o Cloud SQL para MySQL
Os ficheiros SQL são ficheiros de texto simples com uma sequência de comandos SQL.
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Clique em Importar.
- Na secção Escolha o ficheiro a partir do qual quer importar dados, introduza o caminho
para o contentor e o ficheiro de despejo de SQL a usar para a importação, procure um ficheiro
existente ou carregue um ficheiro local.
Pode importar um ficheiro comprimido (
.gz
) ou não comprimido (.sql
). - Em Formato, selecione SQL.
Selecione a base de dados para a qual quer importar os dados.
Isto faz com que o Cloud SQL execute a declaração
USE DATABASE
antes da importação.Se quiser especificar um utilizador para realizar a importação, selecione o utilizador.
Se o seu ficheiro de importação contiver declarações que têm de ser realizadas por um utilizador específico, use este campo para especificar esse utilizador.
- Clique em Importar para iniciar a importação.
gcloud
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Descreva a instância para a qual está a importar:
gcloud sql instances describe INSTANCE_NAME
- Copie o campo
serviceAccountEmailAddress
. - Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função do IAM à conta de serviço do contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE-ACCOUNT \ --role=roles/storage.objectAdmin
- Importe a base de dados:
gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \ --database=DATABASE_NAME
Para obter informações sobre a utilização do comando
import sql
, consulte a página de referência do comandosql import sql
.Se o comando devolver um erro como
ERROR_RDBMS
, reveja as autorizações. Este erro deve-se frequentemente a problemas de autorizações. - Se não precisar de manter as autorizações de IAM que
definiu anteriormente, remova-as através do comando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
-
Crie um ficheiro de captura SQL. O conjunto de instruções associado define determinadas flags que tornam o ficheiro de despejo compatível com o Cloud SQL.
- Se estiver a importar dados de um servidor MySQL nas instalações:
- Crie um ficheiro de captura SQL.
- Crie um contentor no Cloud Storage.
- Carregue o ficheiro de captura SQL para o contentor do Cloud Storage.
- Se estiver a importar dados de outra instância do Cloud SQL, consulte as instruções em Exportar dados do Cloud SQL para um ficheiro de despejo SQL.
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância as funções de IAM
legacyBucketWriter
eobjectViewer
para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe o ficheiro de despejo:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_sql_file: o caminho para o ficheiro SQL
- database_name: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_sql_file", "database": "database_name" } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as agora.
REST v1beta4
-
Crie um ficheiro de captura SQL. O conjunto de instruções associado define determinadas flags que tornam o ficheiro de despejo compatível com o Cloud SQL.
- Se estiver a importar dados de um servidor MySQL nas instalações:
- Crie um ficheiro de captura SQL.
- Crie um contentor no Cloud Storage.
- Carregue o ficheiro de captura SQL para o contentor do Cloud Storage.
- Se estiver a importar dados de outra instância do Cloud SQL, consulte as instruções em Exportar dados do Cloud SQL para um ficheiro de despejo SQL.
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe o ficheiro de despejo:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_sql_file: o caminho para o ficheiro SQL
- database_name: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_sql_file", "database": "database_name" } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as agora.
O que se segue?
- Saiba como verificar o estado das operações de importação e exportação.
- Saiba mais sobre as práticas recomendadas para importar e exportar dados.
- Saiba mais sobre o Cloud Storage.
- Problemas conhecidos para importações e exportações.