Como exportar dados do Cloud SQL

Nesta página, você verá como exportar dados de instâncias do Cloud SQL ou de um servidor de banco de dados não gerenciado pelo Cloud SQL.

É possível exportar dados do Cloud SQL para o Cloud Storage. Também é possível fazer o download de dados do Cloud Storage para o ambiente local caso queira acessá-los localmente.

Para exportar dados para o Cloud Storage, a conta de serviço da instância do Cloud SQL precisa ter o papel storage.objectAdmin do IAM definido no projeto. Para mais informações, consulte Gerenciamento de identidade e acesso do Cloud Storage. É possível encontrar o nome da conta de serviço da instância na página Visão geral da instância no Console do Google Cloud.

É possível exportar um arquivo CSV. Também é possível exportar um arquivo dump SQL, por exemplo, para exportar dados para outro banco de dados SQL.

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

Use o mesmo modo SQL para importar e exportar

A configuração do modo SQL afeta a forma como o Cloud SQL interpreta consultas SQL. Por exemplo, se você realizar uma exportação a partir de um banco de dados sem o modo restrito do SQL ativado e, em seguida, tentar realizar uma importação para o Cloud SQL, a importação poderá falhar. A prática recomendada é usar na importação o mesmo modo SQL usado para a exportação.

Verifique o modo SQL nos bancos de dados de origem e de destino quanto à compatibilidade. Preste atenção às sinalizações que ativam o modo restrito do SQL. Se o modo restrito do SQL NÃO estiver definido no banco de dados, convém removê-lo no Cloud SQL. Se você remover o modo restrito do SQL, precisará definir outra sinalização.

Para verificar se sua instância do Cloud SQL tem o modo desejado definido, execute SELECT @@GLOBAL.sql_mode;.

Como exportar dados usando o Cloud SQL

Console

  1. Acesse a página Instâncias do Cloud SQL no Console do Google Cloud.

    Acessar a página "Instâncias" do Cloud SQL

  2. Clique na instância de que você quer exportar dados para abrir a respectiva página "Detalhes da instância".
  3. Clique em Exportar na barra de botões.
  4. Em Local de exportação do Cloud Storage, selecione um bucket ou pasta do Cloud Storage para a exportação.
  5. No campo Nome, insira um nome para o arquivo de exportação e clique em Selecionar.
  6. Em Formato, selecione SQL.
  7. Clique em Mostrar opções avançadas e insira uma lista separada por vírgulas de todos os bancos de dados que você quer exportar. Não inclua bancos de dados do sistema.
  8. Clique em Exportar para iniciar a exportação.

gcloud

Para exportar um arquivo dump de uma instância para um intervalo do Cloud Storage:

  1. Crie um bucket 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. Descreva a instância usada para exportar:
      gcloud sql instances describe [INSTANCE_NAME]
      
  3. Copie o campo serviceAccountEmailAddress.
  4. Use gsutil iam para conceder o papel storage.objectAdmin do IAM à conta de serviço do bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  5. Exporte o banco de dados:
      gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.gz \
                                  --database=[DATABASE_NAME]
      

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

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

REST

  1. Crie um bucket 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 storage.objectAdmin do IAM no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud 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 de despejo SQL
    • database_name: o nome de um banco de dados dentro da instância do Cloud SQL

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
        }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

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

Exportar dados para um arquivo CSV

É possível exportar os dados no formato CSV, que pode ser usado por outras ferramentas e ambientes. As exportações acontecem no nível do banco de dados. Durante uma exportação de CSV, é possível especificar os esquemas que serão exportados. Todos os esquemas no nível do banco de dados estão qualificados para exportação.

Não é possível importar um arquivo CSV criado a partir de uma instância do MySQL para uma instância do PostgreSQL/SQL Server ou vice-versa.

Console

  1. Acesse a página Instâncias do Cloud SQL no Console do Google Cloud.

    Acessar a página "Instâncias" do Cloud SQL

  2. Clique na instância para abrir a página Visão geral da instância.
  3. Clique em Exportar.
  4. Em Local de exportação do Cloud Storage, selecione um bucket ou pasta do Cloud Storage para a exportação.
  5. No campo Nome, insira um nome para o arquivo de exportação e clique em Selecionar.

    É possível usar uma extensão de arquivo .gz para compactar o arquivo de exportação.

  6. Defina o Formato como CSV.
  7. Insira uma consulta SQL para especificar os dados a serem exportados.

    Por exemplo, para exportar todo o conteúdo da tabela entries no banco de dados guestbook, insira SELECT * FROM guestbook.entries;. A consulta precisa especificar uma tabela. Não é possível exportar um banco de dados inteiro no formato CSV.

  8. Clique em Exportar para iniciar a exportação.

gcloud

  1. Crie um bucket 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. Descreva a instância usada para exportar:
    gcloud sql instances describe [INSTANCE_NAME]
    
  3. Use gsutil iam para conceder o papel storage.objectAdmin do IAM à conta de serviço do bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  4. Exporte o banco de dados:
    gcloud sql export csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME] --query=[SELECT_QUERY]
    

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

  5. Se você não precisa manter as permissões do IAM definidas anteriormente, remova-as agora.

REST

  1. Crie um bucket 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 storage.objectAdmin do IAM no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud 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_csv_file: o caminho para o arquivo CSV
    • database_name: o nome de um banco de dados dentro da instância do Cloud SQL
    • select_query: consulta SQL para exportação

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "CSV",
          "uri": "gs://bucket_name/path_to_csv_file",
          "databases": ["database_name"],
          "csvExportOptions":
           {
               "selectQuery":"select_query"
           }
       }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

    Se a consulta selecionada especificar um banco de dados, ela modificará a propriedade databases.

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

Exportar no formato CSV é equivalente a executar a seguinte instrução SQL:

  SELECT <query> INTO OUTFILE ... CHARACTER SET 'utf8mb4'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
        ESCAPED BY '\\' LINES TERMINATED BY '\n'

Como criar um arquivo CSV a partir do servidor MySQL local

mysql --host=[INSTANCE_IP] --user=[USER_NAME] --password [DATABASE] \
-e " SELECT * FROM [TABLE] INTO OUTFILE '[FILE_NAME]' CHARACTER SET 'utf8mb4'
     FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' "

Como exportar usando mysqldump

É possível executar o utilitário mysqldump diretamente no banco de dados do Cloud SQL, usando as opções necessárias. No entanto, se você estiver exportando do Cloud SQL a fim de importar para outro banco de dados do Cloud SQL, use o utilitário mysqldump com as seguintes sinalizações:

  • --databases Use a opção --databases para especificar uma lista explícita de bancos de dados a serem exportados. Essa lista não pode conter o banco de dados do sistema mysql.
  • --hex-blob Se o banco de dados tiver campos binários, use essa sinalização para garantir que eles sejam importados corretamente.
  • --set-gtid-purged=OFF Não inclua as informações de GTID no arquivo dump SQL, e a geração de registros binários não pode ser desativada pelo arquivo. Não é necessário para replicação externa.
  • --single-transactionReplicação de um servidor externo

Configurações padrão

Na linha de comando, execute mysqldump:

mysqldump --databases [DATABASE_NAME] -h [INSTANCE_IP] -u [USERNAME] -p \
--hex-blob --single-transaction --set-gtid-purged=OFF \
--default-character-set=utf8mb4 > [SQL_FILE].sql

Para mais informações sobre o mysqldump, consulte a referência.

Replicação externa

Para criar um arquivo dump para uso em uma configuração de servidor externo, consulte Como replicar a partir de um servidor externo

Para ver como a solicitação da API REST subjacente é criada nesta tarefa, consulte APIs Explorer na página instances:export.

A seguir