Exportar e importar com arquivos BAK e arquivos de registro de transações

Nesta página, descrevemos como exportar e importar dados para instâncias do Cloud SQL usando arquivos BAK e importar dados para instâncias do Cloud SQL usando arquivos de registro de transações.

Antes de começar

As exportações usam recursos do banco de dados, mas não interferem nas operações normais do banco de dados, a menos que a instância tenha um provisionamento menor do que deveria ser.

Para ver as práticas recomendadas, consulte Práticas recomendadas para importação e exportação de dados.

Depois de concluir uma operação de importação, verifique os resultados.

Exportar dados do Cloud SQL para SQL Server

O Cloud SQL é compatível com a exportação de arquivos BAK integrados.

Se você quiser criar uma nova instância a partir de um arquivo exportado, considere restaurar um backup para uma instância diferente ou clonar a instância do Google Analytics.

O Cloud SQL realiza um backup completo do banco de dados selecionado durante uma operação de exportação.

Permissões e papéis necessários para exportar do Cloud SQL para SQL Server

Para exportar dados do Cloud SQL para o Cloud Storage, o usuário que inicia a exportação precisa ter um dos seguintes papéis:

Além disso, a conta de serviço da instância do Cloud SQL precisa ter um dos seguintes papéis:

  • O papel storage.objectAdmin do Identity and Access Management (IAM)
  • Um papel personalizado, incluindo as seguintes permissões:
    • storage.objects.create
    • storage.objects.list (somente para exportação listrada)
    • storage.objects.delete (somente para exportação listrada)

Para receber ajuda com os papéis do IAM, consulte Gerenciamento de identidade e acesso.

Exportar dados para um arquivo BAK do Cloud SQL para SQL Server

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Clique em Exportar.
  4. Na seção Formato do arquivo, clique em BAK.
  5. Na seção Dados a serem exportados, use o menu suspenso para selecionar o banco de dados do qual você quer exportar.
  6. Na seção Destino, selecione Procurar para pesquisar um bucket ou uma pasta do Cloud Storage para a exportação.
  7. Clique em Exportar para iniciar a exportação.

gcloud

  1. Criar um bucket do Cloud Storage.
  2. Encontre a conta de serviço da instância do Cloud SQL da qual você está exportando. É possível fazer isso executando o comando gcloud sql instances describe. Procure o campo serviceAccountEmailAddress na saída.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Use gsutil iam para conceder o papel do IAM storage.objectAdmin à conta de serviço. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Exporte o banco de dados:
    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \
    --database=DATABASE_NAME
      

    Para informações sobre como usar o comando gcloud sql export bak, consulte a página de referência do comando.

  5. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.

REST v1

  1. Crie um bucket do Cloud Storage para a exportação.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Forneça à instância o papel do IAM legacyBucketWriter no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  3. Exporte o banco de dados:

    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_dump_file: o caminho para o arquivo dump SQL
    • database_name_1: o nome de um banco de dados dentro da instância do Cloud SQL
    • database_name_2: o nome de um banco de dados dentro da instância do Cloud SQL
    • offload: ativa a exportação sem servidor. Defina como true para usar a exportação sem servidor.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"],
          "offload": true | false
        }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

  4. Se você não precisar manter o papel do IAM definido anteriormente, remova-o agora.
Para ver a lista completa de parâmetros da solicitação, consulte a página instances:export

REST v1beta4

  1. Crie um bucket do Cloud Storage para a exportação.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  3. Exporte o banco de dados:

    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_dump_file: o caminho para o arquivo dump SQL
    • database_name_1: o nome de um banco de dados dentro da instância do Cloud SQL
    • database_name_2: o nome de um banco de dados dentro da instância do Cloud SQL
    • offload: ativa a exportação sem servidor. Defina como true para usar a exportação sem servidor.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"],
          "offload": true | false
        }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

  4. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.
Para ver a lista completa de parâmetros da solicitação, consulte a página instances:export

Exportar backups de bancos de dados diferenciais

Antes de exportar um backup do banco de dados diferencial, você precisa exportar uma base diferencial.

Se outros serviços ou recursos, como recuperação pontual e réplica de leitura, acionarem um backup completo entre a exportação de backup completo e a exportação de backup diferencial, será necessário acionar novamente uma exportação de backup completo.

Para entender melhor, considere o seguinte exemplo:

  1. Você faz uma solicitação de backup completo às 7h.
  2. Você ativa a recuperação pontual às 9h. Isso aciona um backup completo na sua instância.
  3. Você tenta fazer um backup diferencial às 17h. Essa solicitação de exportação falha com uma mensagem de erro porque o último backup completo foi acionado pela recuperação pontual.

O Cloud SQL não é compatível com solicitações de exportação de banco de dados com --differential-base ou --bak-type=DIFF em instâncias de réplica.

gcloud

  1. Criar um bucket do Cloud Storage.
  2. Encontre a conta de serviço da instância do Cloud SQL de onde você está exportando. É possível fazer isso executando o comando gcloud sql instances describe. Procure o campo serviceAccountEmailAddress na saída.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Use gsutil iam para conceder o papel do IAM storage.objectAdmin à conta de serviço. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Exporte o banco de dados como a base diferencial.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --differential-base
    

    Para informações sobre como usar o comando gcloud sql export bak, consulte a página de referência do comando.

  5. Exportar um backup diferencial.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF
      

    Para informações sobre como usar o comando gcloud sql export bak, consulte a página de referência do comando.

  6. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.

REST v1

  1. Crie um bucket do Cloud Storage para a exportação.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Forneça à instância o papel do IAM legacyBucketWriter no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  3. Exporte o backup completo do banco de dados como a base diferencial.

    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_dump_file: o caminho para o arquivo dump SQL
    • database_name_1: o nome de um banco de dados dentro da instância do Cloud SQL
    • database_name_2: o nome de um banco de dados dentro da instância do Cloud SQL
    • offload: para ativar e usar a exportação sem servidor, defina o valor como true.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
          "offload": true | false
          "bakExportOptions": {
            "differentialBase":true
          }
    
        }
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  4. Exportar um backup diferencial.

    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_dump_file: o caminho para o arquivo dump SQL
    • database_name_1: o nome de um banco de dados dentro da instância do Cloud SQL
    • database_name_2: o nome de um banco de dados dentro da instância do Cloud SQL
    • offload: ativa a exportação sem servidor. Defina como true para usar a exportação sem servidor.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
          "offload": true | false
          "bakExportOptions": {
            bakType:"DIFF"
          }
    
        }
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  5. Se você não precisar manter o papel do IAM definido anteriormente, remova-o agora.
Para ver a lista completa de parâmetros da solicitação, consulte a página instances:export

REST v1beta4

  1. Crie um bucket do Cloud Storage para a exportação.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  3. Exporte o backup completo do banco de dados como a base diferencial.

    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_dump_file: o caminho para o arquivo dump SQL
    • database_name_1: o nome de um banco de dados dentro da instância do Cloud SQL
    • database_name_2: o nome de um banco de dados dentro da instância do Cloud SQL
    • offload: para ativar e usar a exportação sem servidor, defina o valor como true.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
      "exportContext":
        {
           "fileType": "BAK",
           "uri": "gs://bucket_name/path_to_dump_file",
           "databases": ["database_name"]
           "offload": true | false
           "bakExportOptions": {
             "differentialBase":true
           }
    
         }
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  4. Exportar um backup diferencial:

    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_dump_file: o caminho para o arquivo dump SQL
    • database_name_1: o nome de um banco de dados dentro da instância do Cloud SQL
    • database_name_2: o nome de um banco de dados dentro da instância do Cloud SQL
    • offload: para ativar e usar exportações sem servidor, defina esse valor como true.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
      "exportContext":
        {
           "fileType": "BAK",
           "uri": "gs://bucket_name/path_to_dump_file",
           "databases": ["database_name"]
           "offload": true | false
           "bakExportOptions": {
            bakType:"DIFF"
           }
    
         }
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  5. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.
Para ver a lista completa de parâmetros da solicitação, consulte a página instances:export

Usar exportação listrada

As vantagens da exportação listrada são as seguintes:

  • reduções no tempo necessário para que as operações sejam concluídas
  • bancos de dados com mais de 5 TB podem ser exportados

Uma desvantagem em potencial do uso da exportação litrada é que o backup, em vez de um arquivo, é dividido em um conjunto de arquivos. Esse conjunto é chamado de "conjunto de listras". Consulte Backup de dispositivos em um conjunto de mídia listrado (conjunto de listras). No Cloud SQL, é possível exportar para uma pasta vazia no Cloud Storage em vez de gerar um único arquivo. Para mais informações, consulte Como usar a exportação listrada.

Como planejar suas operações

A exportação litrada pode melhorar o desempenho das exportações. No entanto, se o caso de uso exigir um único arquivo de saída ou se o banco de dados tiver menos de 5 TB e se o desempenho mais rápido não for essencial, use uma exportação não listrada.

Se você decidir usar a exportação listrada, considere o número de listras. Especifique esse valor no comando da CLI da gcloud ou na chamada da API REST. No entanto, se você quiser um número ideal de listras para desempenho ou não souber um número, omita esse número. Um número ideal de listras é definido automaticamente.

O número máximo de listras atualmente aceito pelo Cloud SQL para SQL Server é 64.

Como usar a exportação listrada

gcloud

  1. Criar um bucket do Cloud Storage.
  2. Encontre a conta de serviço da instância do Cloud SQL da qual você está exportando. Para isso, execute o comando gcloud sql instances describe. Procure o campo serviceAccountEmailAddress na saída.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Use gsutil iam para conceder o papel do IAM storage.objectAdmin à conta de serviço. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Para exportar o banco de dados, especifique o parâmetro --striped e/ou um valor para --stripe_count. Definir um valor para --stripe_count implica que o parâmetro --striped é pretendido. Ocorrerá um erro se você especificar --no-striped, mas especificar um valor para --stripe_count:
    gcloud beta sql export bak INSTANCE_NAME \
    gs://BUCKET_NAME/STRIPED_EXPORT_FOLDER \
    --database=DATABASE_NAME --striped --stripe_count=NUMBER
      

    Para informações sobre como usar o comando gcloud beta sql export bak, consulte a página de referência do comando.

  5. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.

REST v1

  1. Crie um bucket do Cloud Storage para a exportação.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Forneça à instância o papel do IAM legacyBucketWriter no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  3. Exporte o banco de dados:

    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_folder: o caminho para a pasta (no bucket do Cloud Storage) para a qual exportar o conjunto listrado
    • database_name: o nome de um banco de dados na instância do Cloud SQL
    • true | false: defina como true para usar a exportação listrada. Se você especificar true sem definir uma contagem de listras, um número ideal de listras será definido automaticamente
    • number_of_stripes: o número de listras a serem usadas. Se especificado, striped fica implícito como true

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

  4. Se você não precisar manter o papel do IAM definido anteriormente, remova-o agora.
Para ver a lista completa de parâmetros da solicitação, consulte a página instances:export

REST v1beta4

  1. Crie um bucket do Cloud Storage para a exportação.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Forneça à instância o papel do IAM legacyBucketWriter no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  3. Exporte o banco de dados:

    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_folder: o caminho para a pasta (no bucket do Cloud Storage) para a qual exportar o conjunto listrado
    • database_name: o nome de um banco de dados na instância do Cloud SQL
    • true | false: defina como true para usar a exportação listrada. Se você especificar true sem definir uma contagem de listras, um número ideal de listras será definido automaticamente
    • number_of_stripes: o número de listras a serem usadas. Se especificado, striped fica implícito como true

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

  4. Se você não precisar manter o papel do IAM definido anteriormente, remova-o agora.
Para ver a lista completa de parâmetros da solicitação, consulte a página instances:export

Importar para o Cloud SQL para SQL Server

Permissões e papéis necessários para importar para o Cloud SQL para SQL Server

Para importar dados do Cloud Storage para o Cloud SQL, o usuário que inicia a importação precisa ter um dos seguintes papéis:

Além disso, a conta de serviço da instância do Cloud SQL precisa ter um dos seguintes papéis:

  • O papel storage.objectAdmin do IAM
  • Um papel personalizado, incluindo as seguintes permissões:
    • storage.objects.get
    • storage.objects.list (somente para importação listrada)

Para receber ajuda com os papéis do IAM, consulte Gerenciamento de identidade e acesso.

Importar dados de um arquivo BAK para o Cloud SQL para SQL Server

Para usar a importação listrada, consulte Usar a importação listrada.

Vários frameworks de importação estão disponíveis. Por exemplo, o Cloud SQL para SQL Server é compatível com a captura de dados alterados (CDC) para as seguintes versões de banco de dados:

  • SQL Server 2017 Standard
  • SQL Server 2017 Enterprise
  • SQL Server 2019 Standard
  • SQL Server 2019 Enterprise

Ao importar um banco de dados ativado pela CDC, a sinalização KEEP_CDC é mantida.

Se a versão da instância for um Microsoft SQL Server Enterprise Edition, será possível importar arquivos BAK criptografados.

As instâncias do Microsoft SQL Server Standard Edition também importam arquivos BAK criptografados, mas somente por meio da CLI gcloud.

As únicas extensões BAK compatíveis são .bak e .bak.gz. Os backups criptografados GPG não são compatíveis no momento.

Para as instruções abaixo, prepare-se para especificar um novo banco de dados. Não crie um banco de dados antes de iniciar a importação do arquivo BAK.

Para importar dados para uma instância do Cloud SQL usando um arquivo BAK:

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Clique em Importar.
  4. No campo Escolher o arquivo do qual você quer importar dados, insira o caminho para o bucket e o arquivo BAK que será usado para a importação.

    É possível importar um arquivo compactado (.gz) ou descompactado.

  5. Na seção Formato, selecione BAK.
  6. Especifique o Banco de dados na instância do Cloud SQL em que você quer importar o arquivo BAK.
  7. Clique em Importar para iniciar a importação.

gcloud

  1. Crie um bucket do Cloud Storage para a importação.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Verifique se você configurou os papéis e permissões necessários.
  3. Faça upload dos dados do arquivo BAK para o bucket.
  4. Descreva a instância para a qual está fazendo a importação:
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copie o campo serviceAccountEmailAddress.
  6. Use gsutil iam para conceder o papel do IAM storage.objectViewer à conta de serviço do bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  7. Importe os dados do arquivo:
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME
    
    Para importações criptografadas, use o seguinte comando:
    
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME
    --database=DATABASE_NAME --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME
     --pvk-path=gs://BUCKET_NAME/KEY_NAME --prompt-for-pvk-password
    
  8. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as usando gsutil iam.

REST v1

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Importe os dados do 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_bak_file: o caminho para o arquivo BAK
    • database_name: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
        }
    }
    
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    Para usar um usuário diferente na importação, especifique a propriedade importContext.importUser.

    Para ver a lista completa de parâmetros da solicitação, consulte a página instances:import.
  5. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

REST v1beta4

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Importe os dados do 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_bak_file: o caminho para o arquivo BAK
    • database_name: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
        }
    }
    
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    Para usar um usuário diferente na importação, especifique a propriedade importContext.importUser.

    Para ver a lista completa de parâmetros da solicitação, consulte a página instances:import.
  5. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

Se você receber um erro como ERROR_RDBMS, verifique se o arquivo BAK existe no bucket e se 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.

Importar backups de bancos de dados diferenciais

Antes de importar um backup diferencial do banco de dados, você precisa de uma importação de backup completa, e seu banco de dados precisa estar no estado RESTORING após a importação de backup completo.

O Cloud SQL não é compatível com a importação de backups de banco de dados diferenciais em instâncias ativadas com recuperação pontual. Isso ocorre porque a importação de um backup de banco de dados com --no-recovery é um pré-requisito para importar backups de banco de dados diferenciais. Além disso, não é possível ativar a recuperação pontual em uma instância se o banco de dados estiver no estado RESTORING. Em caso de falha na importação, siga um destes procedimentos para ativar a recuperação pontual:

  • Faça o banco de dados que está no estado RESTORING ficar on-line usando a flag --recovery-only .

  • Remova o banco de dados.

Para importar dados para uma instância do Cloud SQL usando um backup de banco de dados diferencial, execute as seguintes etapas:

gcloud

  1. Crie um bucket do Cloud Storage para a importação.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas recomendamos que você a execute para não abrir outros dados.

  2. Verifique se você configurou os papéis e permissões necessários.
  3. Faça upload dos dados do arquivo BAK para o bucket.
  4. Descreva a instância para a qual está fazendo a importação:
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copie o campo serviceAccountEmailAddress.
  6. Use gsutil iam para conceder o papel do IAM storage.objectViewer à conta de serviço do bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  7. Importe um backup completo com --no-recovery.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
    
  8. Importe um backup do banco de dados diferencial.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF --no-recovery
    
  9. Use a sinalização --recovery-only para colocar o banco de dados importado on-line. Essa etapa é opcional, e você só precisará executá-la se o banco de dados estiver no estado RESTORING.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
    
  10. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as usando gsutil iam.

REST v1

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Importe um backup completo com noRecovery.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
    
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  5. Importe um backup do banco de dados diferencial.

    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_bak_file: o caminho para o arquivo BAK
    • database_name: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
          "bakImportOptions": {
            "bakType": "DIFF",
            "noRecovery": true,
          }
    
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  6. Use recoveryOnly para colocar o banco de dados importado on-line. Essa etapa é opcional, e você só precisará executá-la se o banco de dados estiver no estado RESTORING.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
    
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  7. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

REST v1beta4

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Importe um backup completo com noRecovery.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  5. Importe um backup do banco de dados diferencial.

    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_bak_file: o caminho para o arquivo BAK
    • database_name: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
          "bakImportOptions": {
            "bakType": "DIFF",
            "noRecovery": true,
          }
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  6. Use recoveryOnly para colocar o banco de dados importado on-line. Essa etapa é opcional, e você só precisará executá-la se o banco de dados estiver no estado RESTORING.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  7. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

Se você receber um erro como ERROR_RDBMS, verifique se o arquivo BAK existe no bucket e se 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.

Importar backups de registro de transações

Um registro de transações é um registro das transações do seu banco de dados e das modificações feitas por cada transação. É possível usá-lo para restabelecer a consistência do banco de dados em caso de falha no sistema.

Para importar dados para uma instância do Cloud SQL usando um backup de registro de transações, realize as seguintes etapas:

gcloud

  1. Opcional: crie um bucket do Cloud Storage para a importação.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
  2. Faça upload dos arquivos de backup para o bucket.
  3. Descreva a instância para a qual está fazendo a importação:
    gcloud sql instances describe INSTANCE_NAME
    
  4. Copie o campo serviceAccountEmailAddress.
  5. Use gsutil iam para conceder o papel do IAM storage.objectViewer à conta de serviço do bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  6. Importe um backup completo usando o parâmetro --no-recovery. Verifique se o banco de dados está no estado RESTORING após a importação do backup completo.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
    
  7. Opcional: importe um backup diferencial.
  8. Importe um backup de registro de transações.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=TLOG
    --stop-at=STOP_AT_TIMESTAMP --stop-at-mark=STOP_AT_MARK_NAME
    --no-recovery
    
    Substitua:
    • INSTANCE_NAME: o nome da instância.
    • BUCKET_NAME: o nome do bucket do Cloud Storage.
    • BACKUP_FILENAME: o nome do arquivo de backup.
    • DATABASE_NAME: o nome de um banco de dados dentro da instância do Cloud SQL
    • STOP_AT_TIMESTAMP: o carimbo de data/hora em que a importação do registro de transações precisa ser interrompida. Esse campo é opcional, e o valor precisa usar o formato RFC 3339.
    • STOP_AT_MARK_NAME: a transação marcada em que a importação do registro de transações precisa ser interrompida. Esse campo é opcional e pode aceitar qualquer string como valor. Se o valor estiver no formato lsn:log-sequence-number, a importação do registro de transações será interrompida no número de sequência de registro fornecido.
    Repita essa etapa até que todos os backups de registro de transações sejam importados.
  9. Opcional: use a flag --recovery-only para fazer o banco de dados importado ficar on-line. Realize essa etapa somente se o banco de dados estiver no estado RESTORING.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
    
  10. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as usando gsutil iam.

REST v1

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import.
  5. Importe um backup completo com noRecovery. Verifique se o banco de dados está no estado RESTORING após a importação do backup completo.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
    
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  6. Opcional: importe um backup diferencial.
  7. Importe um backup de registro de transações.

    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_TLOG_FILE: o caminho para o arquivo de registro de transações.
    • DATABASE_NAME: o nome de um banco de dados dentro da instância do Cloud SQL
    • STOP_AT_TIMESTAMP: o carimbo de data/hora em que a importação do registro de transações precisa ser interrompida. Esse campo é opcional, e o valor precisa usar o formato RFC 3339.
    • STOP_AT_MARK_NAME: a transação marcada em que a importação do registro de transações precisa ser interrompida. Esse campo é opcional e pode aceitar qualquer string como valor. Se o valor estiver no formato lsn:log-sequence-number, a importação do registro de transações será interrompida no número de sequência de registro fornecido.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_TLOG_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "bakType": "TLOG",
            "stopAt": STOP_AT_TIMESTAMP,
            "stopAtMark": STOP_AT_MARK_NAME,
            "noRecovery": true,
          }
    
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

    Repita essa etapa até que todos os backups de registro de transações sejam importados.
  8. Opcional: use recoveryOnly para fazer o banco de dados importado ficar on-line. Realize essa etapa somente se o banco de dados estiver no estado RESTORING.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
    
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  9. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

REST v1beta4

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Importe um backup completo com noRecovery. Verifique se o banco de dados está no estado RESTORING após a importação do backup completo.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "noRecovery": true,
            "bakType": "FULL",
          }
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  5. Opcional: importe um backup diferencial.
  6. Importe um backup de registro de transações. Aqui, stopAt e stopAtMark são campos opcionais.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da instância do Cloud SQL
    • STOP_AT_TIMESTAMP: o carimbo de data/hora em que a importação do registro de transações precisa ser interrompida. Esse campo é opcional, e o valor precisa usar o formato RFC 3339.
    • STOP_AT_MARK_NAME: a transação marcada em que a importação do registro de transações precisa ser interrompida. Esse campo é opcional e pode aceitar qualquer string como valor. Se o valor estiver no formato lsn:log-sequence-number, a importação do registro de transações será interrompida no número de sequência de registro fornecido.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "bakType": "TLOG",
            "stopAt": STOP_AT_TIMESTAMP,
            "stopAtMark":STOP_AT_MARK_NAME,
            "noRecovery": true,
          }
    
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

    Repita essa etapa até que todos os backups de registro de transações sejam importados.
  7. Opcional: use recoveryOnly para fazer o banco de dados importado ficar on-line. Realize essa etapa somente se o banco de dados estiver no estado RESTORING.

    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_BAK_FILE: o caminho para o arquivo BAK
    • DATABASE_NAME: o nome de um banco de dados dentro da 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 da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE",
          "database": "DATABASE_NAME"
          "bakImportOptions": {
            "recoveryOnly": true,
          }
        }
    }
    
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

  8. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

Usar a importação listrada

As vantagens da importação listrada são as seguintes:

  • reduções no tempo necessário para que as operações sejam concluídas
  • bancos de dados com mais de 5 TB podem ser importados

Uma desvantagem em potencial do uso da importação listrada é que todos os arquivos no conjunto listrado (em vez de um único arquivo) precisam ser enviados para a mesma pasta no seu bucket do Cloud Storage antes de realizar a importação.

Como planejar suas operações

Na maioria dos casos de uso, a importação listrada melhora o desempenho sem desvantagens. No entanto, se não for possível fazer backup em um conjunto listrado de uma determinada instância ou se o banco de dados tiver menos de 5 TB e o desempenho mais rápido não for essencial, use uma importação não listrada.

Como usar a importação listrada

gcloud

  1. Crie um bucket do Cloud Storage para a importação.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Verifique se você configurou os papéis e as permissões necessárias do IAM.
  3. Crie uma nova pasta no bucket.
  4. Para importar o banco de dados, faça upload dos arquivos do conjunto listrado (do banco de dados) para a nova pasta. Verifique se todos os arquivos foram enviados para a pasta e se ela não contém arquivos extras.
  5. Descreva a instância usada para exportar:
    gcloud sql instances describe INSTANCE_NAME
    
  6. Copie o campo serviceAccountEmailAddress.
  7. Use gsutil iam para conceder o papel do IAM storage.objectViewer à conta de serviço do bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  8. Importe os dados da pasta. A diferença de uma importação não listrada é a seguinte: o URI é vinculado ao nome da pasta de upload do conjunto de listras, em vez de um único arquivo. Além disso, você especifica o parâmetro --striped:
    gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \
    --database=DATABASE_NAME --striped
    
  9. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as usando gsutil iam.

REST v1

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Importe os dados do 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_folder: o caminho para a pasta (no bucket do Cloud Storage) em que o conjunto de listras está localizado
    • database_name: o nome de um banco de dados a ser criado na instância do Cloud SQL
    • true | false: defina como true para usar a importação listrada

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "database": "database_name",
          "bakImportOptions": {
            "striped": true | false
          }
        }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    Para usar um usuário diferente na importação, especifique a propriedade importContext.importUser.

    Para ver a lista completa de parâmetros da solicitação, consulte a página instances:import.
  5. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

REST v1beta4

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para mais informações sobre como configurar permissões do IAM, consulte Como usar as permissões do IAM.
  4. Importe os dados do 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_folder: o caminho para a pasta (no bucket do Cloud Storage) em que o conjunto de listras está localizado
    • database_name: o nome de um banco de dados a ser criado na instância do Cloud SQL
    • true | false: defina como true para usar a importação listrada

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_folder",
          "database": "database_name",
          "bakImportOptions": {
            "striped": true | false
          }
        }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    Para usar um usuário diferente na importação, especifique a propriedade importContext.importUser.

    Para ver a lista completa de parâmetros da solicitação, consulte a página instances:import.
  5. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

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.

A seguir