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.

Exporte dados do Cloud SQL para um arquivo CSV ou dump SQL no Cloud Storage. Depois, importe o arquivo para outro banco de dados MySQL no Cloud SQL. 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 precisa ter o papel de IAM storage.objectAdmin definido no projeto. Para mais informações, consulte Cloud Identity and Access Management para Cloud Storage.

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 para exportação de dados, consulte Práticas recomendadas para importação e exportação de dados.

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

Exportação padrão vs exportação sem servidor

Para uma exportação padrão do Cloud SQL, o processo é executado enquanto o banco de dados está on-line. Quando os bancos de dados que estão sendo exportados são menores, é provável que o impacto seja mínimo. No entanto, quando há bancos de dados grandes ou objetos maiores, como BLOBs, é possível que a exportação prejudique o desempenho do banco de dados. Isso pode afetar o tempo necessário para fazer consultas e operações no banco de dados. Depois de iniciar uma exportação, não será possível interrompê-la caso seu banco de dados comece a responder lentamente.

Para evitar respostas lentas durante uma exportação, use o processo sem servidor. Esse tipo de exportação permite que o Cloud SQL crie uma instância temporária separada para descarregar a operação de exportação. O descarregamento da operação de exportação permite que os bancos de dados na instância principal continuem a exibir consultas e realizar operações com a taxa de desempenho normal. Quando a exportação de dados é concluída, a instância temporária é excluída automaticamente.

Uma exportação sem servidor demora mais do que a padrão, porque leva tempo para criar a instância temporária. Esse processo pode levar mais de cinco minutos, no mínimo. No entanto, bancos de dados maiores podem precisar de mais tempo. Considere o impacto no tempo e no desempenho antes de determinar que tipo de exportação será usada.

Utilize a exportação sem servidor em uma instância principal ou em uma réplica de leitura.

As exportações CSV e mysqldump se comportam da mesma maneira no Cloud SQL como fariam em qualquer outro banco de dados MySQL. O banco de dados não fica bloqueado durante a operação de exportação, a menos que você use a opção --master-data (em inglês) durante o processo.

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 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ê exportar de um banco de dados sem o modo restrito do SQL ativado e, em seguida, tentar importar para o Cloud SQL (que ativa por padrão o modo restrito do SQL), a importação poderá falhar. A prática recomendada é usar o mesmo modo SQL usado para a exportação na importaçã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 do Cloud SQL para um arquivo dump SQL

Para criar um arquivo dump SQL, exporte dados do Cloud SQL para o Cloud Storage. Depois que o arquivo estiver no Cloud Storage, será possível importá-lo para outro banco de dados do Cloud SQL. Também é possível fazer o download de dados do Cloud Storage para o ambiente local caso queira acessá-los localmente.

Antes de começar

Neste procedimento, é necessário exportar um arquivo para o Cloud Storage. Para exportar dados para o Cloud Storage, a conta de serviço da instância precisa ter os papéis storage.objectAdmin do IAM definidos no projeto. Para receber ajuda com os papéis do IAM, consulte Cloud Identity and Access Management para 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 verificar os papéis do bucket do Cloud Storage usando a ferramenta gsutil para inspecionar o bucket:

gsutil iam get gs://[BUCKET_NAME]

Saiba mais sobre como usar o IAM com buckets.

Como exportar dados para um arquivo dump SQL no Cloud Storage

Para exportar dados de um banco de dados em uma instância do Cloud SQL para um arquivo dump SQL em um bucket do Cloud Storage, siga estas etapas:

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 com os dados que você quer exportar para abrir a página Visão geral correspondente.
  3. Clique em EXPORTAR na barra de botões.
  4. Em Formato de arquivo, clique em SQL para criar um arquivo dump SQL.
  5. Em Dados a serem exportados, clique em Um ou mais bancos de dados nesta instância para exportar bancos de dados específicos.
  6. Use o menu suspenso para selecionar os bancos de dados que você quer exportar.
  7. Em Destino, selecione Procurar para pesquisar um bucket ou uma pasta do Cloud Storage para a exportação.
  8. Clique em Exportar para iniciar a exportação.

gcloud

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets do Storage.

  2. Faça upload do arquivo no seu bucket.

    Para ajuda sobre o upload de arquivos para buckets, consulte Como fazer o upload de um objeto.

  3. Descreva a instância usada para exportar:
      gcloud sql instances describe [INSTANCE_NAME]
      
  4. Copie o campo serviceAccountEmailAddress.
  5. 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.
  6. Exporte o banco de dados:
      gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.gz \
                                  --database=[DATABASE_NAME] --offload
      

    O comando export sql não contém gatilhos ou procedimentos armazenados, mas tem visualizações. Para exportar gatilhos e/ou procedimentos armazenados, use a ferramenta mysqldump.

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

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

REST v1beta4

  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 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://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"]
          "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 dessa solicitação, consulte a página instances:export.

Como exportar dados do Cloud SQL 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.

Antes de começar

Neste procedimento, é necessário exportar um arquivo para o Cloud Storage. Para exportar dados para o Cloud Storage, a conta de serviço da instância precisa ter os papéis storage.objectAdmin do IAM definidos no projeto. Para receber ajuda com os papéis do IAM, consulte Cloud Identity and Access Management para 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 verificar os papéis do bucket do Cloud Storage usando a ferramenta gsutil para inspecionar o bucket:

gsutil iam get gs://[BUCKET_NAME]

Saiba mais sobre como usar o IAM com buckets.

Como exportar dados para um arquivo CSV no Cloud Storage

Para exportar dados de um banco de dados em uma instância do Cloud SQL para um arquivo dump SQL em um bucket do Cloud Storage:

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 respectiva página de Visão geral.
  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. Clique em Exibir opções avançadas.
  8. Em Banco de dados, selecione o nome do banco de dados no menu suspenso.
  9. Em Consulta SQL, insira uma consulta SQL para especificar a tabela de onde os dados serão 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 no banco de dados. Não é possível exportar um banco de dados inteiro no formato CSV.

  10. Clique em Exportar para iniciar a exportação.
  11. A caixa de diálogo Exportar banco de dados? será aberta com uma mensagem informando que o processo pode levar uma hora ou mais para bancos de dados grandes. Durante a exportação, a única operação que pode ser executada na instância é a visualização de informações. Não será possível interromper a exportação depois que ela for iniciada. Se for um bom momento para iniciar uma exportação, clique em EXPORTAR. Caso contrário, clique em CANCELAR.

gcloud

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets do Storage.

  2. Faça upload do arquivo no seu bucket.

    Para ajuda sobre o upload de arquivos para buckets, consulte Como fazer o upload de um objeto.

  3. Descreva a instância usada para exportar:
    gcloud sql instances describe [INSTANCE_NAME]
    
  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 csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME]
                                --offload
                                --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.

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

REST v1beta4

  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
    • offload: ativa a exportação sem servidor. Defina como true para usar a exportação sem servidor.
    • 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"],
          "offload": true | false
          "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 o papel do IAM definido anteriormente, revogue-o 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'

Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:export.

Como exportar dados do servidor MySQL local para um arquivo CSV

Para exportar um banco de dados MySQL que não é gerenciado pelo Cloud SQL em um arquivo CSV para importação posterior para o Cloud SQL, use o seguinte comando:

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 dados com mysqldump

Se você estiver exportando dados de um banco de dados MySQL local ou de um banco de dados do Cloud SQL para importar para um 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. A geração de registros binários não pode ser desativada pelo arquivo. Não é necessário para o MySQL 5.5 nem para a replicação externa.
  • --single-transactionReplicação de um servidor externo

Configuração 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 receber ajuda com mysqldump, consulte a referência do mysqldump.

Replicação externa

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

A seguir