Esta página descreve a exportação e a importação de ficheiros para instâncias do Cloud SQL em paralelo.
Antes de começar
Antes de iniciar uma operação de exportação ou importação:
- Certifique-se de que a sua base de dados tem espaço livre adequado.
- Siga as práticas recomendadas para exportar e importar dados.
- Após concluir uma operação de importação, valide os resultados.
As operações de exportação e importação usam recursos da base de dados, mas não interferem com as operações típicas da base de dados, a menos que a instância esteja subaprovisionada.
Exporte dados do Cloud SQL para MySQL para vários ficheiros em paralelo
As secções seguintes contêm informações sobre a exportação de dados do Cloud SQL para MySQL para vários ficheiros em paralelo.
Funções e autorizações necessárias para exportar dados do Cloud SQL para MySQL para vários ficheiros em paralelo
Para exportar dados do Cloud SQL para o Cloud Storage, o utilizador que inicia a exportação tem de ter uma das seguintes funções:
- A função Editor do Cloud SQL
- Uma função personalizada,
incluindo as seguintes autorizações:
cloudsql.instances.get
cloudsql.instances.export
Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:
- A
storage.objectAdmin
função de gestão de identidade e de acesso (IAM) - Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.create
storage.objects.list
(apenas para exportar ficheiros em paralelo)storage.objects.delete
(apenas para exportar ficheiros em paralelo)
Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.
Exporte dados para vários ficheiros em paralelo
Pode exportar dados em paralelo de vários ficheiros residentes no Cloud SQL para o Cloud Storage. Para o fazer, use o utilitáriodumpInstance
.
Depois de os ficheiros estarem no Cloud Storage, pode importá-los para outra base de dados do Cloud SQL. Se quiser aceder aos dados nos ficheiros localmente, transfira os dados do Cloud Storage para o seu ambiente local.
Se os seus ficheiros contiverem cláusulas DEFINER (vistas, acionadores, stored_procedures, etc.), a utilização destes ficheiros para importação pode falhar, consoante a ordem em que estas declarações são executadas. Saiba mais sobre a utilização de DEFINER e possíveis soluções alternativas no Cloud SQL.
gcloud
Para exportar dados do Cloud SQL para vários ficheiros em paralelo, conclua os seguintes passos:
- Crie um contentor do Cloud Storage.
- Para encontrar a conta de serviço da instância do Cloud SQL a partir da qual está a exportar ficheiros, use o comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Para conceder a
storage.objectAdmin
função IAM à conta de serviço, use o comandogcloud storage buckets add-iam-policy-binding
. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Use autorizações de IAM. - Para exportar dados do Cloud SQL para vários ficheiros 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 a partir da qual está a exportar ficheiros em paralelo.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- BUCKET_PATH: o caminho para o contentor onde os ficheiros de exportação estão armazenados.
- FOLDER_NAME: a pasta onde os ficheiros de exportação estão armazenados.
- THREAD_NUMBER: o número de threads que o Cloud SQL usa para exportar ficheiros em paralelo. Por exemplo, se quiser exportar três ficheiros em simultâneo, especifique
3
como o valor deste parâmetro. - DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a exportação é feita. Se não especificar nenhuma base de dados, o Cloud SQL exporta todas as bases de dados da instância.
- TABLE_EXPRESSION: as tabelas a exportar da base de dados especificada.
O comando
export sql
não contém acionadores nem procedimentos armazenados, mas contém vistas. Para exportar acionadores ou procedimentos armazenados, use uma única thread para a exportação. Este thread usa a ferramentamysqldump
.Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de despejo do MySQL Shell.
- Se não precisar da função do IAM que definiu em Funções e autorizações necessárias para exportar do Cloud SQL para MySQL, revogue-a.
Substitua INSTANCE_NAME pelo nome da sua instância do Cloud SQL.
No resultado, procure o valor associado ao campo serviceAccountEmailAddress
.
REST v1
Para exportar dados do Cloud SQL para vários ficheiros em paralelo, conclua os seguintes passos:
- Crie um contentor 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 contentor, sujeito aos requisitos de nomenclatura. Por exemplo,
my-bucket
. - PROJECT_NAME: o nome do Google Cloud projeto que contém o contentor do Cloud Storage que está a criar.
- LOCATION_NAME: a localização do contentor onde quer armazenar os ficheiros que está a exportar. Por exemplo,
us-east1
.
- BUCKET_NAME: o nome do contentor, sujeito aos requisitos de nomenclatura. Por exemplo,
- Disponibilize à sua instância a
legacyBucketWriter
função de IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Use IAM permissions. -
Exporte dados do Cloud SQL para vários ficheiros em paralelo:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_NAME: o nome do projeto que contém o contentor do Cloud Storage que criou. Google Cloud
- INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual está a exportar ficheiros em paralelo.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- BUCKET_PATH: o caminho para o contentor onde os ficheiros de exportação estão armazenados.
- FOLDER_NAME: a pasta onde os ficheiros de exportação estão armazenados.
- DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a exportação é feita. Se não especificar nenhuma base de dados, o Cloud SQL exporta todas as bases de dados da instância.
- THREAD_NUMBER: o número de threads que o Cloud SQL usa para exportar ficheiros em paralelo. Por exemplo, se quiser exportar três ficheiros em simultâneo, especifique
3
como o valor deste parâmetro.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
- Se não precisar da função do IAM que definiu em Funções e autorizações necessárias para exportar do Cloud SQL para MySQL, revogue-a.
Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de despejo do MySQL Shell.
REST v1beta4
Para exportar dados do Cloud SQL para vários ficheiros em paralelo, conclua os seguintes passos:
- Crie um contentor 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 contentor, sujeito aos requisitos de nomenclatura. Por exemplo,
my-bucket
. - PROJECT_NAME: o nome do Google Cloud projeto que contém o contentor do Cloud Storage que está a criar.
- LOCATION_NAME: a localização do contentor onde quer armazenar os ficheiros que está a exportar. Por exemplo,
us-east1
.
- BUCKET_NAME: o nome do contentor, sujeito aos requisitos de nomenclatura. Por exemplo,
- Disponibilize à sua instância a
storage.objectAdmin
função de IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Use IAM permissions. -
Exporte dados do Cloud SQL para vários ficheiros em paralelo:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_NAME: o nome do projeto que contém o contentor do Cloud Storage que criou. Google Cloud
- INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual está a exportar ficheiros em paralelo.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- BUCKET_PATH: o caminho para o contentor onde os ficheiros de exportação estão armazenados.
- FOLDER_NAME: a pasta onde os ficheiros de exportação estão armazenados.
- DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a exportação é feita. Se não especificar nenhuma base de dados, o Cloud SQL exporta todas as bases de dados da instância.
- THREAD_NUMBER: o número de threads que o Cloud SQL usa para exportar ficheiros em paralelo. Por exemplo, se quiser exportar três ficheiros em simultâneo, especifique
3
como o valor deste parâmetro.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
- Se não precisar da função do IAM que definiu em Funções e autorizações necessárias para exportar do Cloud SQL para MySQL, revogue-a.
Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de despejo do MySQL Shell.
Importe dados de vários ficheiros em paralelo para o Cloud SQL para MySQL
As secções seguintes contêm informações sobre a importação de dados de vários ficheiros em paralelo para o Cloud SQL para MySQL.
Funções e autorizações necessárias para importar dados de vários ficheiros em paralelo para o Cloud SQL para MySQL
Para importar dados do Cloud Storage para o Cloud SQL, o utilizador que inicia a importação tem de ter uma das seguintes funções:
- A função Administrador do Cloud SQL
- Uma função personalizada,
incluindo as seguintes autorizações:
cloudsql.instances.get
cloudsql.instances.import
Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:
- A função de IAM
storage.objectAdmin
- Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.get
storage.objects.list
(apenas para importar ficheiros em paralelo)
Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.
Importe dados para o Cloud SQL para MySQL
Pode importar dados em paralelo de vários ficheiros residentes no Cloud Storage para a sua base de dados. Para o fazer, use o utilitário loadDump
.
gcloud
Para importar dados de vários ficheiros em paralelo para o Cloud SQL, conclua os seguintes passos:
- Crie um contentor do Cloud Storage.
Carregue os ficheiros para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregue objetos a partir de ficheiros.
- Para encontrar a conta de serviço da instância do Cloud SQL para a qual está a importar ficheiros, use o comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Para conceder a
storage.objectAdmin
função IAM à conta de serviço, use o utilitáriogcloud storage buckets add-iam-policy-binding
. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Use autorizações de IAM. - Para importar dados de vários ficheiros em paralelo para o Cloud SQL, use o comando
gcloud sql import sql
:gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --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 está a importar ficheiros em paralelo.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- BUCKET_PATH: o caminho para o contentor onde os ficheiros de importação estão armazenados.
- FOLDER_NAME: a pasta onde os ficheiros de importação estão armazenados.
- THREAD_NUMBER: o número de threads que o Cloud SQL usa para importar ficheiros em paralelo. Por exemplo, se quiser importar três ficheiros em simultâneo, especifique
3
como o valor deste parâmetro. - DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a importação é feita. Se não especificar bases de dados, o Cloud SQL importa todas as bases de dados para a instância.
Se o comando devolver um erro como
ERROR_RDBMS
, reveja as autorizações. Este erro deve-se frequentemente a problemas de autorizações. - Se não precisar das autorizações de IAM que
definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para MySQL, use
gcloud storage buckets remove-iam-policy-binding
para as remover.
Substitua INSTANCE_NAME pelo nome da sua instância do Cloud SQL.
No resultado, procure o valor associado ao campo serviceAccountEmailAddress
.
REST v1
Para importar dados de vários ficheiros em paralelo para o Cloud SQL, conclua os seguintes passos:
- Crie um contentor 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 contentor, sujeito aos requisitos de nomenclatura. Por exemplo,
my-bucket
. - PROJECT_NAME: o nome do Google Cloud projeto que contém o contentor do Cloud Storage que está a criar.
- LOCATION_NAME: a localização do contentor onde quer armazenar os ficheiros que está a importar. Por exemplo,
us-east1
.
- BUCKET_NAME: o nome do contentor, sujeito aos requisitos de nomenclatura. Por exemplo,
Carregue os ficheiros para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregue objetos a partir de ficheiros.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para obter ajuda na definição de autorizações de IAM, consulte o artigo Use autorizações de IAM. Importe dados de vários ficheiros em paralelo para o Cloud SQL:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_NAME: o nome do projeto que contém o contentor do Cloud Storage que criou. Google Cloud
- INSTANCE_NAME: o nome da instância do Cloud SQL para a qual está a importar ficheiros em paralelo.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- BUCKET_PATH: o caminho para o contentor onde os ficheiros de importação estão armazenados.
- FOLDER_NAME: a pasta onde os ficheiros de importação estão armazenados.
- DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a importação é feita. Se não especificar bases de dados, o Cloud SQL importa todas as bases de dados para a instância.
- THREAD_NUMBER: o número de threads que o Cloud SQL usa para importar ficheiros em paralelo. Por exemplo, se quiser importar três ficheiros em simultâneo, especifique
3
como o valor deste parâmetro.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para ver a lista completa de parâmetros do pedido, consulte a página da API Admin do Cloud SQL.- Se não precisar das autorizações de IAM que
definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para MySQL, use
gcloud storage buckets remove-iam-policy-binding
para as remover.
REST v1beta4
Para importar dados de vários ficheiros em paralelo para o Cloud SQL, conclua os seguintes passos:
- Crie um contentor 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 contentor, sujeito aos requisitos de nomenclatura. Por exemplo,
my-bucket
. - PROJECT_NAME: o nome do Google Cloud projeto que contém o contentor do Cloud Storage que está a criar.
- LOCATION_NAME: a localização do contentor onde quer armazenar os ficheiros que está a importar. Por exemplo,
us-east1
.
- BUCKET_NAME: o nome do contentor, sujeito aos requisitos de nomenclatura. Por exemplo,
Carregue os ficheiros para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregue objetos a partir de ficheiros.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para obter ajuda na definição de autorizações de IAM, consulte o artigo Use autorizações de IAM. Importe dados de vários ficheiros em paralelo para o Cloud SQL:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_NAME: o nome do projeto que contém o contentor do Cloud Storage que criou. Google Cloud
- INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual está a importar ficheiros em paralelo.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- BUCKET_PATH: o caminho para o contentor onde os ficheiros de importação estão armazenados.
- FOLDER_NAME: a pasta onde os ficheiros de importação estão armazenados.
- DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a importação é feita. Se não especificar bases de dados, o Cloud SQL importa todas as bases de dados para a instância.
- THREAD_NUMBER: o número de threads que o Cloud SQL usa para importar ficheiros em paralelo. Por exemplo, se quiser importar três ficheiros em simultâneo, especifique
3
como o valor deste parâmetro.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para ver a lista completa de parâmetros do pedido, consulte a página da API Admin do Cloud SQL.- Se não precisar das autorizações de IAM que
definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para MySQL, use
gcloud storage buckets remove-iam-policy-binding
para as remover.
Limitações
Se especificar demasiados processos quando importa ou exporta dados de vários ficheiros em paralelo, pode usar mais memória do que a sua instância do Cloud SQL tem. Se isto ocorrer, é apresentada uma mensagem de erro interno. Verifique a utilização de memória da sua instância e aumente o tamanho da instância, conforme necessário. Para mais informações, consulte o artigo Acerca das definições de instância.
Quando faz uma exportação, as vírgulas nos nomes das bases de dados ou nos nomes das tabelas nos campos
databases
outables
não são suportadas.Certifique-se de que tem espaço no disco suficiente para a transferência inicial do ficheiro de despejo. Caso contrário, é apresentado um erro
no space left on disk
.Se a sua instância tiver apenas uma CPU virtual (vCPU), não pode importar nem exportar vários ficheiros em paralelo. O número de vCPUs da sua instância não pode ser inferior ao número de threads que está a usar para a operação de importação ou exportação, e o número de threads tem de ser, pelo menos, dois.
As importações e exportações com várias linhas de execução (paralelas) não são compatíveis com importações e exportações com uma única linha de execução. Por exemplo, os ficheiros de despejo gerados por uma exportação de thread único só podem ser importados por importações de thread único. Da mesma forma, os ficheiros de despejo gerados por exportações paralelas só podem ser importados por importações paralelas.
Se escrever declarações de linguagem de definição de dados (LDD), como
CREATE
,DROP
ouALTER
, durante uma operação de exportação, a operação pode falhar ou os dados exportados podem ser inconsistentes com a cópia instantânea de recuperação num determinado momento.Se uma operação de importação falhar, pode ter dados parcialmente importados restantes. O MySQL confirma automaticamente as declarações DDL. Se isto ocorrer, antes de importar novamente os dados, limpe as declarações DDL e os dados.
Tal como numa operação de importação paralela de base de dados única, antes de executar uma operação de importação paralela para uma instância inteira, certifique-se de que todas as bases de dados terminaram a criação antes de começar.
O que se segue?
- Saiba como verificar o estado das 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 para importações e exportações.