Exporte e importe com ficheiros de captura SQL

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:

Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:

  • A storage.objectAdminfunçã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ário pg_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

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Clique em Exportar.
  4. Na secção Formato de ficheiro, clique em SQL para criar um ficheiro de captura SQL.
  5. Na secção Dados a exportar, use o menu pendente para selecionar a base de dados a partir da qual quer exportar.
  6. Na secção Destino, selecione Procurar para pesquisar um contentor ou uma pasta do Cloud Storage para a sua exportação.
  7. Clique em Exportar para iniciar a exportação.

gcloud

  1. Crie um contentor do Cloud Storage.
  2. 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 campo serviceAccountEmailAddress no resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Use gcloud storage buckets add-iam-policy-binding para conceder a storage.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.
  4. 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 comando sql export sql.

  5. Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.

REST v1

  1. 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.

  2. 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.
  3. 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:

  4. Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
Para ver a lista completa de parâmetros do pedido, consulte a página instances:export.

REST v1beta4

  1. 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.

  2. 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.
  3. 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:

  4. Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
Para ver a lista completa de parâmetros do pedido, consulte a página instances:export.

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:

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

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Clique em Importar.
  4. 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).

  5. Em Formato, selecione SQL.
  6. 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.

  7. 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.

  8. Clique em Importar para iniciar a importação.

gcloud

  1. Crie um contentor do Cloud Storage.
  2. Carregue o ficheiro para o seu contentor.

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.

  3. Descreva a instância para a qual está a importar:
    gcloud sql instances describe INSTANCE_NAME
  4. Copie o campo serviceAccountEmailAddress.
  5. Use gcloud storage buckets add-iam-policy-binding para conceder a storage.objectAdmin função do IAM à conta de serviço do contentor.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.
  6. 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 comando sql 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.

  7. 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

  1. 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:
      1. Crie um ficheiro de despejo SQL com as instruções em Exportar dados com pg_dump.
      2. Crie um contentor no Cloud Storage seguindo as instruções em Criar contentores.
      3. Carregue o ficheiro de despejo SQL para o contentor do Cloud Storage através do procedimento em Carregar objetos.
  2. Crie um contentor do Cloud Storage.
  3. Carregue o ficheiro para o seu contentor.

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.

  4. Faculte à sua instância as funções de IAM legacyBucketWritereobjectViewer para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.
  5. 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 importContext.importUser.

    Para ver a lista completa de parâmetros do pedido, consulte a página instances:import.
  6. Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as agora.

REST v1beta4

  1. 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:
      1. Crie um ficheiro de despejo SQL com as instruções em Exportar dados com pg_dump.
      2. Crie um contentor no Cloud Storage seguindo as instruções em Criar contentores.
      3. Carregue o ficheiro de despejo SQL para o contentor do Cloud Storage através do procedimento em Carregar objetos.
  2. Crie um contentor do Cloud Storage.
  3. Carregue o ficheiro para o seu contentor.

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.

  4. 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.
  5. 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 importContext.importUser.

    Para ver a lista completa de parâmetros do pedido, consulte a página instances:import.
  6. Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as agora.

O que se segue?