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 PostgreSQL
Funções e autorizações necessárias para exportar do Cloud SQL para PostgreSQL
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 PostgreSQL
Quando usa o Cloud SQL para fazer uma exportação, quer seja a partir da Google Cloud consola, da CLI gcloud ou da API, está a usar o utilitáriopg_dump
com as opções necessárias para garantir que o ficheiro de exportação resultante é válido para importação novamente para o Cloud SQL.
Se planeia importar os seus dados para o Cloud SQL, tem de seguir as instruções fornecidas no artigo Exportar dados de um servidor de base de dados externo para que o ficheiro de despejo de SQL seja formatado corretamente para o 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, use o menu pendente para selecionar a base de dados a partir da qual 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 pg_dump.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
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, "sqlExportOptions": { "clean": [TRUE|FALSE], "ifExists": [TRUE|FALSE] } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
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
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, "sqlExportOptions": { "clean": [TRUE|FALSE], "ifExists": [TRUE|FALSE] } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
Importe dados para o Cloud SQL para PostgreSQL
Funções e autorizações necessárias para a importação para o Cloud SQL para PostgreSQL
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 PostgreSQL
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 PostgreSQL no local:
- Crie um ficheiro de despejo SQL com as instruções em Exportar dados com pg_dump.
- Crie um contentor no Cloud Storage seguindo as instruções em Criar contentores.
- Carregue o ficheiro de despejo SQL para o contentor do Cloud Storage através do procedimento em Carregar objetos.
- 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 usar um utilizador diferente para a importação, especifique a propriedade
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import.importContext.importUser
. - 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 PostgreSQL no local:
- Crie um ficheiro de despejo SQL com as instruções em Exportar dados com pg_dump.
- Crie um contentor no Cloud Storage seguindo as instruções em Criar contentores.
- Carregue o ficheiro de despejo SQL para o contentor do Cloud Storage através do procedimento em Carregar objetos.
- 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 usar um utilizador diferente para a importação, especifique a propriedade
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import.importContext.importUser
. - 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.