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 PostgreSQL para vários ficheiros em paralelo
As secções seguintes contêm informações sobre a exportação de dados do Cloud SQL para PostgreSQL para vários ficheiros em paralelo.
Funções e autorizações necessárias para exportar dados do Cloud SQL para PostgreSQL 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áriopg_dump
com a opção --jobs
.
Se planeia importar os seus dados para o Cloud SQL, siga as instruções fornecidas no artigo Exportar dados de um servidor de base de dados externo para que os ficheiros sejam formatados corretamente para o 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 uma base de dados, o Cloud SQL exporta todas as bases de dados de utilizadores da instância. Para mais informações, consulte o artigo Exporte uma instância completa
- 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 ferramentapg_dump
.Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de diretório
pg_dump
. - 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 PostgreSQL, 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 Trusted Cloud by S3NS 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. Trusted Cloud by S3NS
- 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: o nome da base de dados na instância do Cloud SQL a partir da qual a exportação é feita. Se quiser exportar todas as bases de dados de utilizadores da instância, remova este campo do corpo do pedido.
- 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 PostgreSQL, revogue-a.
Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de diretório pg_dump
.
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 Trusted Cloud by S3NS 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. Trusted Cloud by S3NS
- 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: o nome da base de dados na instância do Cloud SQL a partir da qual a exportação é feita. Se quiser exportar todas as bases de dados de utilizadores da instância, remova este campo do corpo do pedido.
- 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 PostgreSQL, revogue-a.
Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de diretório pg_dump
.
Exporte e importe uma instância completa
Pode exportar ou importar todas as bases de dados de utilizadores numa instância inteira através de uma exportação paralela formatada em diretório.
Para exportar ou importar uma instância inteira, use os mesmos comandos apresentados nas secções de
exportação paralela e
importação paralela, removendo o campo databases
ou database
, respetivamente. Se não especificar uma base de dados, o Cloud SQL executa uma exportação ou uma importação paralela para todas as bases de dados do utilizador na instância. Isto exclui as bases de dados do sistema e as bases de dados do Cloud SQL usadas para gerir operações internas.
Numa exportação paralela formatada em diretório para o Cloud Storage, após a conclusão bem-sucedida da exportação, os dados associados a cada base de dados são armazenados num subdiretório com o nome de cada base de dados, semelhante ao seguinte:
gs://example-bucket/test-folder/ |---- postgres/ | |---- 3929.dat.gz (table data file) | |---- toc.dat (metadata file) | |---- second_database/ | |---- 3930.dat.gz | |---- 3931.dat.gz | |---- toc.dat
Se quiser executar uma importação paralela para uma instância inteira e os ficheiros da instância tiverem sido criados fora do Cloud SQL, esta estrutura de subdiretórios é necessária para que a operação seja concluída com êxito.
Quando é detetada a estrutura de despejo da instância completa, a base de dados de importação especificada na API é ignorada. A operação deteta a estrutura completa da instância a partir do nome do diretório.
Não pode executar uma exportação ou uma importação de instâncias completa para outros formatos de ficheiros.
Não pode exportar nem importar uma instância inteira como um único ficheiro SQL ou CSV.
Importe dados de vários ficheiros em paralelo para o Cloud SQL para PostgreSQL
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 PostgreSQL.
Funções e autorizações necessárias para importar dados de vários ficheiros em paralelo para o Cloud SQL para PostgreSQL
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 PostgreSQL
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 pg_restore
com a opção --jobs
.
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: o nome da base de dados na instância do Cloud SQL a partir da qual a importação é feita. Tem de especificar apenas uma base de dados.
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 do IAM que
definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para PostgreSQL, 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 Trusted Cloud by S3NS 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. Trusted Cloud by S3NS
- 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: o nome da base de dados na instância do Cloud SQL a partir da qual a importação é feita. Tem de especificar apenas uma base de dados.
- 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], "clean": [TRUE|FALSE], "ifExists": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para usar um utilizador diferente para a importação, especifique a propriedade
Para ver a lista completa de parâmetros do pedido, consulte a página da API Admin do Cloud SQL.importContext.importUser
.- Se não precisar das autorizações do IAM que
definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para PostgreSQL, 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 Trusted Cloud by S3NS 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. Trusted Cloud by S3NS
- 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: o nome da base de dados na instância do Cloud SQL a partir da qual a importação é feita. Tem de especificar apenas uma base de dados.
- 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], "clean": [TRUE|FALSE], "ifExists": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para usar um utilizador diferente para a importação, especifique a propriedade
Para ver a lista completa de parâmetros do pedido, consulte a página da API Admin do Cloud SQL.importContext.importUser
.- Se não precisar das autorizações do IAM que
definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para PostgreSQL, 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.
- O utilitário
pg_dump
não pode dividir em blocos as tabelas que exporta. Por conseguinte, se tiver uma tabela muito grande, esta pode tornar-se um obstáculo à velocidade da operação de exportação.
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.