Esta página descreve como exportar dados de clusters do AlloyDB for PostgreSQL para ficheiros SQL dump.
Para informações sobre a migração de uma base de dados completa de um servidor de base de dados suportado para uma nova instância do AlloyDB, consulte o artigo Migre uma base de dados para o AlloyDB através do Database Migration Service. Se estiver a exportar porque quer criar uma nova instância a partir do ficheiro exportado, considere restaurar um cluster a partir de uma cópia de segurança armazenada.
Pode cancelar a exportação de dados de clusters do AlloyDB for PostgreSQL. Para mais informações, consulte Cancele a exportação de dados.
Antes de começar
- Antes de iniciar uma operação de exportação, tenha em atenção que as operações de exportação usam recursos da base de dados, mas não interferem com as operações padrão da base de dados, a menos que a instância tenha um aprovisionamento insuficiente.
- Aplicam-se custos de transferência de dados entre regiões quando o contentor de destino está numa região diferente do cluster de origem. Para mais informações, consulte os preços do AlloyDB para PostgreSQL.
- A compressão é ativada se o nome do objeto terminar com a extensão
.gz
. O objeto é, em seguida, exportado no formato.gz
para o Cloud Storage. - É possível executar várias operações de exportação em paralelo.
Funções e autorizações necessárias para exportar a partir do AlloyDB
Para exportar dados do AlloyDB para o Cloud Storage, o utilizador que inicia a exportação tem de ter uma das seguintes funções de gestão de identidades e acessos (IAM):
- A função
Administrador do Cloud AlloyDB
(
roles/alloydb.admin
) - Uma função personalizada, incluindo as seguintes autorizações:
alloydb.clusters.get
alloydb.clusters.export
Além disso, a conta de serviço do cluster do AlloyDB tem de ter uma das seguintes funções:
- A função de IAM
storage.objectAdmin
- Uma função personalizada, incluindo as autorizações
storage.objects.create
Para obter ajuda com as funções de IAM, consulte o artigo Gestão de identidade e de acesso.
Exporte dados do AlloyDB para um ficheiro de captura SQL
Quando usa o AlloyDB para fazer uma exportação, quer seja a partir da
CLI gcloud ou da API, está a usar o utilitário
pg_dump
com as opções necessárias para garantir que o ficheiro de exportação resultante é
válido para importação de volta para o AlloyDB.
Para exportar dados de uma base de dados num cluster do AlloyDB para um ficheiro de despejo SQL num contentor do Cloud Storage, siga estes passos:
gcloud
- Crie um contentor do Cloud Storage.
Use o formato fornecido para identificar a conta de serviço do projeto a partir do qual está a exportar. O formato da conta de serviço é o seguinte:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Conceda autorizações à conta de serviço no contentor do Cloud Storage para a operação de exportação.
Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função do IAM à conta de serviço. Para obter ajuda na definição das autorizações de IAM, consulte o artigo Usar autorizações de IAM.Exporte a base de dados para o seu contentor do Cloud Storage. As seguintes listas de opções para exportar dados num formato de despejo de SQL:
--async
(Opcional): devolve imediatamente, sem esperar que a operação em curso seja concluída.--tables
(Opcional): tabelas a exportar.--schema-only
(Opcional): se definido, exporta apenas o esquema.--clean-target-objects
(Opcional): se estiver definido, envia comandos paraDROP
todos os objetos da base de dados transferidos antes de enviar os comandos para a respetiva criação.--if-exist-target-objects
(Opcional): se estiver definido, use comandosDROP ... IF EXISTS
para verificar a existência do objeto antes de o largar no modo--clean-target-objects
.
Para usar estas funcionalidades, inclua estas opções no comando
gcloud
. Se quiser exportar apenas definições de objetos (esquema) e nenhum dado, use a flag–-schema-only
. Para especificar as tabelas a exportar, use a flag--tables=TABLE_NAMES
. Pode especificar valores separados por vírgulas de nomes de tabelas ou padrões de carateres universais para especificar várias tabelas.Caso contrário, remova estes parâmetros do seguinte comando:
gcloud alloydb clusters export CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME" --tables=TABLE_NAMES --schema-only --clean-target-objects --if-exist-target-objects --sql
O comando
alloydb clusters export
não contém acionadores nem procedimentos armazenados, mas contém vistas. Para exportar acionadores ou procedimentos armazenados, use o utilitáriopg_dump
.Para mais informações sobre a utilização do comando
alloydb clusters export
, consulte a página de referência do comandoalloydb clusters export
.Se não precisar de manter a função do IAM que definiu anteriormente, revogue a função agora.
REST v1
Crie um contentor para a exportação:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
Use o formato de conta de serviço para identificar a conta de serviço do projeto a partir do qual está a exportar.
O formato da conta de serviço é o seguinte:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Conceda autorizações à conta de serviço para o contentor do Cloud Storage para a operação de exportação.
Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função do IAM à conta de serviço. Para obter ajuda na definição das autorizações de IAM, consulte o artigo Usar autorizações de IAM.Exporte a sua base de dados.
Use o seguinte método HTTP e URL:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- REGION: a região na qual o cluster do AlloyDB está implementado.
- CLUSTER_ID: o ID do cluster.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- PATH_TO_SQL_FILE: o caminho para o ficheiro de captura SQL.
- DATABASE_NAME: o nome de uma base de dados na instância do AlloyDB.
- TABLES: tabelas a exportar.
- SCHEMA_ONLY: se
true
, exporte apenas o esquema. - CLEAN_TARGET_OBJECTS: se
true
, comandos de saída paraDROP
todos os objetos da base de dados transferidos antes de emitir os comandos para a respetiva criação. - IF_EXIST_TARGET_OBJECTS: se
true
, use os comandosDROP ... IF EXISTS
para verificar a existência do objeto antes de o largar no modoclean_target_objects
.
Para usar estas funcionalidades, defina os valores destes parâmetros como
true
. Caso contrário, defina os respetivos valores comofalse
. Se quiser exportar apenas definições de objetos (esquema) e nenhum dado, use a flagschema_only
. Para especificar as tabelas a exportar, use o campotables
. Pode selecionar várias tabelas fornecendo uma lista de nomes de tabelas separados por vírgulas ou escrevendo carateres universais no padrão.Corpo JSON do pedido:
{ "gcs_destination": { "uri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE" }, "database": "DATABASE_NAME", "sql_export_options": { "schema_only": true, "tables": [ "TABLE1", "TABLE2" ], "clean_target_objects": false, "if_exist_target_objects": true } }
Para enviar o seu pedido, expanda uma destas opções:
curl (Linux, macOS ou Cloud Shell)
Guarde o corpo do pedido num ficheiro com o nome
request.json
e execute o seguinte comando:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"
PowerShell (Windows)
Guarde o corpo do pedido num ficheiro com o nome
request.json
e execute o seguinte comando:$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand Content
Recebe uma resposta JSON semelhante à seguinte:
Resposta
{ "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2024-09-17T06:05:31.244428646Z", "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID", "verb": "export", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
Para ver a lista completa de parâmetros do pedido, consulte
clusters:export
.
O que se segue?
- Saiba como exportar um ficheiro CSV.
- Cancele uma exportação de dados.