Nesta página, descrevemos como exportar e importar arquivos para instâncias do Cloud SQL em paralelo.
Antes de começar
Antes de iniciar uma operação de exportação ou importação:
- Verifique se o banco de dados tem espaço livre adequado.
- Siga as práticas recomendadas para exportar e importar dados.
- Depois de concluir uma operação de importação, verifique os resultados.
As operações de exportação e importação usam recursos de banco de dados, mas não interferem nas operações típicas de banco de dados, a menos que a instância tenha um provisionamento insuficiente.
Exportar dados do Cloud SQL para MySQL para vários arquivos em paralelo
As seções a seguir contêm informações sobre como exportar dados do Cloud SQL para MySQL para vários arquivos em paralelo.
Permissões e papéis necessários para exportar dados do Cloud SQL para MySQL para vários arquivos em paralelo
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:
- O papel Editor do Cloud SQL
- Um papel personalizado, incluindo as seguintes permissões:
cloudsql.instances.get
cloudsql.instances.export
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 exportar arquivos em paralelo)storage.objects.delete
(somente para exportar arquivos em paralelo)
Para receber ajuda com os papéis do IAM, consulte Gerenciamento de identidade e acesso.
Exportar dados para vários arquivos em paralelo
É possível exportar dados em paralelo de vários arquivos que residem no Cloud SQL para o Cloud Storage. Para fazer isso, use o utilitáriodumpInstance
.
Depois que os arquivos estiverem no Cloud Storage, será possível importá-los para outro banco de dados do Cloud SQL. Se você quiser acessar os dados nos arquivos localmente, faça o download dos dados do Cloud Storage para o ambiente local.
Se os arquivos contiverem cláusulas DEFINER (visualizações, gatilhos, storage_procedures e assim por diante), dependendo da ordem em que essas instruções são executadas, poderá haver falha no uso desses arquivos para importação. Saiba mais sobre o uso de DEFINER e as possíveis soluções alternativas no Cloud SQL.
gcloud
Para exportar dados do Cloud SQL para vários arquivos em paralelo, siga estas etapas:
- Crie um bucket do Cloud Storage.
- Para encontrar a conta de serviço da instância do Cloud SQL da qual você está exportando
arquivos, use o comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Para conceder o papel do IAM
storage.objectAdmin
à conta de serviço, use o comandogcloud storage buckets add-iam-policy-binding
. Para ajuda com a configuração de permissões do IAM, consulte Usar as permissões do Cloud IAM. - Para exportar dados do Cloud SQL para vários arquivos em paralelo, use o comando
gcloud sql export sql
:gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --offload \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME \ --table=TABLE_EXPRESSION
Faça as seguintes substituições:
- INSTANCE_NAME: o nome da instância do Cloud SQL da qual você está exportando arquivos em paralelo.
- BUCKET_NAME pelo nome do bucket do Cloud Storage.
- BUCKET_PATH: o caminho do bucket em que os arquivos de exportação estão armazenados.
- FOLDER_NAME: a pasta onde os arquivos de exportação são armazenados.
- THREAD_NUMBER: o número de linhas de execução que o Cloud SQL usa para exportar arquivos em paralelo. Por exemplo, se você quiser exportar três arquivos de cada vez em paralelo, especifique
3
como o valor desse parâmetro. - DATABASE_NAME (opcional): o nome dos bancos de dados dentro da instância do Cloud SQL de onde a exportação é feita. Se você não especificar nenhum banco de dados, o Cloud SQL exportará todos os bancos de dados da instância.
- TABLE_EXPRESSION: as tabelas a serem exportadas do banco de dados especificado.
O comando
export sql
não contém gatilhos ou procedimentos armazenados, mas contém visualizações. Para exportar gatilhos ou procedimentos armazenados, use uma única linha de execução para a exportação. Esta linha de execução usa a ferramentamysqldump
.Após a conclusão da exportação, os arquivos devem estar em uma pasta no bucket do Cloud Storage no formato de despejo do shell do MySQL.
- Se você não precisar do papel do IAM definido em Permissões e papéis necessários para exportar do Cloud SQL para MySQL, revoke.
Substitua INSTANCE_NAME pelo nome da instância do Cloud SQL.
Na saída, procure o valor associado ao campo serviceAccountEmailAddress
.
REST v1
Para exportar dados do Cloud SQL para vários arquivos em paralelo, siga estas etapas:
- Crie um bucket do Cloud Storage:
Faça as seguintes substituições:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: o nome do bucket, sujeito a requisitos de nomenclatura. Por exemplo,
my-bucket
. - PROJECT_NAME: o nome do projeto do Google Cloud que contém o bucket do Cloud Storage que você está criando.
- LOCATION_NAME: o local do bucket em que você quer armazenar os arquivos que está exportando. Por exemplo,
us-east1
.
- BUCKET_NAME: o nome do bucket, sujeito a requisitos de nomenclatura. Por exemplo,
- Forneça à instância o papel do IAM
legacyBucketWriter
no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Usar as permissões do Cloud IAM. -
Exporte dados do Cloud SQL para vários arquivos em paralelo:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_NAME: o nome do projeto do Google Cloud que contém o bucket do Cloud Storage que você criou.
- INSTANCE_NAME: o nome da instância do Cloud SQL da qual você está exportando arquivos em paralelo.
- BUCKET_NAME pelo nome do bucket do Cloud Storage.
- BUCKET_PATH: o caminho do bucket em que os arquivos de exportação estão armazenados.
- FOLDER_NAME: a pasta onde os arquivos de exportação são armazenados.
- DATABASE_NAME (opcional): o nome dos bancos de dados dentro da instância do Cloud SQL de onde a exportação é feita. Se você não especificar nenhum banco de dados, o Cloud SQL exportará todos os bancos de dados da instância.
- THREAD_NUMBER: o número de linhas de execução que o Cloud SQL usa para exportar arquivos em paralelo. Por exemplo, se você quiser exportar três arquivos de cada vez em paralelo, especifique
3
como o valor desse parâmetro.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON da solicitação:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlExportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
- Se você não precisar do papel do IAM definido em Permissões e papéis necessários para exportar do Cloud SQL para MySQL, revoke.
Após a conclusão da exportação, os arquivos devem estar em uma pasta no bucket do Cloud Storage no formato de despejo do shell do MySQL.
REST v1beta4
Para exportar dados do Cloud SQL para vários arquivos em paralelo, siga estas etapas:
- Crie um bucket do Cloud Storage:
Faça as seguintes substituições:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: o nome do bucket, sujeito a requisitos de nomenclatura. Por exemplo,
my-bucket
. - PROJECT_NAME: o nome do projeto do Google Cloud que contém o bucket do Cloud Storage que você está criando.
- LOCATION_NAME: o local do bucket em que você quer armazenar os arquivos que está exportando. Por exemplo,
us-east1
.
- BUCKET_NAME: o nome do bucket, sujeito a requisitos de nomenclatura. Por exemplo,
- Forneça à instância o papel do IAM
storage.objectAdmin
no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Usar as permissões do Cloud IAM. -
Exporte dados do Cloud SQL para vários arquivos em paralelo:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_NAME: o nome do projeto do Google Cloud que contém o bucket do Cloud Storage que você criou.
- INSTANCE_NAME: o nome da instância do Cloud SQL da qual você está exportando arquivos em paralelo.
- BUCKET_NAME pelo nome do bucket do Cloud Storage.
- BUCKET_PATH: o caminho do bucket em que os arquivos de exportação estão armazenados.
- FOLDER_NAME: a pasta onde os arquivos de exportação são armazenados.
- DATABASE_NAME (opcional): o nome dos bancos de dados dentro da instância do Cloud SQL de onde a exportação é feita. Se você não especificar nenhum banco de dados, o Cloud SQL exportará todos os bancos de dados da instância.
- THREAD_NUMBER: o número de linhas de execução que o Cloud SQL usa para exportar arquivos em paralelo. Por exemplo, se você quiser exportar três arquivos de cada vez em paralelo, especifique
3
como o valor desse parâmetro.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON da solicitação:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlExportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
- Se você não precisar do papel do IAM definido em Permissões e papéis necessários para exportar do Cloud SQL para MySQL, revoke.
Após a conclusão da exportação, os arquivos devem estar em uma pasta no bucket do Cloud Storage no formato de despejo do shell do MySQL.
Importar dados de vários arquivos em paralelo ao Cloud SQL para MySQL
As seções a seguir contêm informações sobre como importar dados de vários arquivos em paralelo com o Cloud SQL para MySQL.
Permissões e papéis necessários para importar dados de vários arquivos em paralelo ao Cloud SQL para MySQL
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:
- O papel Administrador do Cloud SQL
- Um papel personalizado, incluindo as seguintes permissões:
cloudsql.instances.get
cloudsql.instances.import
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 importar arquivos em paralelo)
Para receber ajuda com os papéis do IAM, consulte Gerenciamento de identidade e acesso.
Importar dados para o Cloud SQL para MySQL
É possível importar dados em paralelo de vários arquivos que residem no Cloud Storage para seu banco de dados. Para fazer isso, use o utilitário loadDump
.
gcloud
Para importar dados de vários arquivos em paralelo para o Cloud SQL, siga estas etapas:
- Crie um bucket do Cloud Storage.
Faça upload dos arquivos para o bucket.
Se precisar de ajuda com o upload de arquivos para buckets, consulte Fazer upload de objetos de arquivos.
- Para encontrar a conta de serviço da instância do Cloud SQL para a qual você está importando
arquivos, use o comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Para conceder o papel do IAM
storage.objectAdmin
à conta de serviço, use o utilitáriogcloud storage buckets add-iam-policy-binding
. Para ajuda com a configuração de permissões do IAM, consulte Usar as permissões do Cloud IAM. - Para importar dados de vários arquivos em paralelo no Cloud SQL, use o comando
gcloud sql import sql
:gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --offload \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME
Faça as seguintes substituições:
- INSTANCE_NAME: o nome da instância do Cloud SQL para a qual os arquivos são importados em paralelo.
- BUCKET_NAME pelo nome do bucket do Cloud Storage.
- BUCKET_PATH: o caminho do bucket em que os arquivos de importação estão armazenados.
- FOLDER_NAME: a pasta onde os arquivos de importação são armazenados.
- THREAD_NUMBER: o número de linhas de execução que o Cloud SQL usa para importar arquivos em paralelo. Por exemplo, se você quiser importar três arquivos de uma vez em paralelo, especifique
3
como o valor desse parâmetro. - DATABASE_NAME (opcional): o nome dos bancos de dados na instância do Cloud SQL em que a importação é feita. Se você não especificar nenhum banco de dados, o Cloud SQL importará todos os bancos de dados da instância.
Se o comando retornar um erro como
ERROR_RDBMS
, revise as permissões. Esse erro costuma ser causado por problemas de permissões. - Se você não precisar das permissões do IAM
definidas em Papéis e permissões obrigatórias para importação para o Cloud SQL para MySQL, use
gcloud storage buckets remove-iam-policy-binding
para removê-las.
Substitua INSTANCE_NAME pelo nome da instância do Cloud SQL.
Na saída, procure o valor associado ao campo serviceAccountEmailAddress
.
REST v1
Para importar dados de vários arquivos em paralelo para o Cloud SQL, siga estas etapas:
- Crie um bucket do Cloud Storage:
Faça as seguintes substituições:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: o nome do bucket, sujeito a requisitos de nomenclatura. Por exemplo,
my-bucket
. - PROJECT_NAME: o nome do projeto do Google Cloud que contém o bucket do Cloud Storage que você está criando.
- LOCATION_NAME: o local do bucket em que você quer armazenar os arquivos que está importando. Por exemplo,
us-east1
.
- BUCKET_NAME: o nome do bucket, sujeito a requisitos de nomenclatura. Por exemplo,
Faça upload dos arquivos para o bucket.
Se precisar de ajuda com o upload de arquivos para buckets, consulte Fazer upload de objetos de arquivos.
- Forneça à instância o
papel do IAM
storage.objectAdmin
no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Usar as permissões do Cloud IAM. Importe dados de vários arquivos em paralelo para o Cloud SQL:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_NAME: o nome do projeto do Google Cloud que contém o bucket do Cloud Storage que você criou.
- INSTANCE_NAME: o nome da instância do Cloud SQL para a qual os arquivos são importados em paralelo.
- BUCKET_NAME pelo nome do bucket do Cloud Storage.
- BUCKET_PATH: o caminho do bucket em que os arquivos de importação estão armazenados.
- FOLDER_NAME: a pasta onde os arquivos de importação são armazenados.
- DATABASE_NAME (opcional): o nome dos bancos de dados na instância do Cloud SQL em que a importação é feita. Se você não especificar nenhum banco de dados, o Cloud SQL importará todos os bancos de dados da instância.
- THREAD_NUMBER: o número de linhas de execução que o Cloud SQL usa para importar arquivos em paralelo. Por exemplo, se você quiser importar três arquivos de uma vez em paralelo, especifique
3
como o valor desse parâmetro.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON da solicitação:
{ "importContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlImportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Para ver a lista completa de parâmetros da solicitação, consulte a página API Cloud SQL Admin.- Se você não precisar das permissões do IAM
definidas em Papéis e permissões obrigatórias para importação para o Cloud SQL para MySQL, use
gcloud storage buckets remove-iam-policy-binding
para removê-las.
REST v1beta4
Para importar dados de vários arquivos em paralelo para o Cloud SQL, siga estas etapas:
- Crie um bucket do Cloud Storage:
Faça as seguintes substituições:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: o nome do bucket, sujeito a requisitos de nomenclatura. Por exemplo,
my-bucket
. - PROJECT_NAME: o nome do projeto do Google Cloud que contém o bucket do Cloud Storage que você está criando.
- LOCATION_NAME: o local do bucket em que você quer armazenar os arquivos que está importando. Por exemplo,
us-east1
.
- BUCKET_NAME: o nome do bucket, sujeito a requisitos de nomenclatura. Por exemplo,
Faça upload dos arquivos para o bucket.
Se precisar de ajuda com o upload de arquivos para buckets, consulte Fazer upload de objetos de arquivos.
- Forneça à instância o
papel do IAM
storage.objectAdmin
no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Usar as permissões do Cloud IAM. Importe dados de vários arquivos em paralelo para o Cloud SQL:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_NAME: o nome do projeto do Google Cloud que contém o bucket do Cloud Storage que você criou.
- INSTANCE_NAME: o nome da instância do Cloud SQL da qual os arquivos são importados em paralelo.
- BUCKET_NAME pelo nome do bucket do Cloud Storage.
- BUCKET_PATH: o caminho do bucket em que os arquivos de importação estão armazenados.
- FOLDER_NAME: a pasta onde os arquivos de importação são armazenados.
- DATABASE_NAME (opcional): o nome dos bancos de dados na instância do Cloud SQL em que a importação é feita. Se você não especificar nenhum banco de dados, o Cloud SQL importará todos os bancos de dados da instância.
- THREAD_NUMBER: o número de linhas de execução que o Cloud SQL usa para importar arquivos em paralelo. Por exemplo, se você quiser importar três arquivos de uma vez em paralelo, especifique
3
como o valor desse parâmetro.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON da solicitação:
{ "importContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlImportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Para ver a lista completa de parâmetros da solicitação, consulte a página API Cloud SQL Admin.- Se você não precisar das permissões do IAM
definidas em Papéis e permissões obrigatórias para importação para o Cloud SQL para MySQL, use
gcloud storage buckets remove-iam-policy-binding
para removê-las.
Limitações
- Se você especificar muitas linhas de execução ao importar ou exportar dados de vários arquivos em paralelo, talvez use mais memória do que sua instância do Cloud SQL tem. Se isso ocorrer, uma mensagem de erro interna será exibida. Verifique o uso de memória da instância e aumente o tamanho dela, conforme necessário. Para mais informações, consulte Sobre as configurações da instância.
- Ao realizar uma exportação, não há suporte para vírgulas em nomes de bancos de dados ou nomes de tabelas nos campos
databases
outables
. - Verifique se você tem espaço em disco suficiente para o download inicial do arquivo dump. Caso contrário, um erro
no space left on disk
será exibido. - Se a instância tiver apenas uma CPU virtual (vCPU), não será possível importar ou exportar vários arquivos em paralelo. O número de vCPUs da instância não pode ser menor que o número de linhas de execução usado para a operação de importação ou exportação, e o número de linhas de execução precisa ser pelo menos dois.
- Se você escrever instruções de linguagem de definição de dados (DDL) como
CREATE
,DROP
ouALTER
durante uma operação de exportação, a operação poderá falhar ou os dados exportados poderão ficar inconsistentes com o ponto -in-time de recuperação (link em inglês). - Se uma operação de importação falhar, é possível que você tenha dados parcialmente importados restantes. No caso de instruções DDL, o MySQL confirma automaticamente. Se isso ocorrer, limpe os dados parciais antes de importar os dados novamente.
A seguir
- Saiba como verificar o status de operações de importação e exportação.
- Saiba como cancelar a importação e a exportação de dados.
- Saiba mais sobre as práticas recomendadas para importar e exportar dados.
- Saiba mais sobre os problemas conhecidos de importações e exportações.