Nesta página, descrevemos como exportar dados de clusters do AlloyDB para PostgreSQL para arquivos dump SQL.
Para informações sobre como migrar um banco de dados inteiro de um servidor de banco de dados compatível para uma nova instância do AlloyDB, consulte Migrar um banco de dados para o AlloyDB usando o Database Migration Service. Se você estiver exportando porque quer criar uma nova instância a partir do arquivo exportado, considere restaurar um cluster de um backup armazenado.
É possível cancelar a exportação de dados de clusters do AlloyDB para PostgreSQL. Para mais informações, consulte Cancelar a exportação de dados.
Antes de começar
- Antes de iniciar uma operação de exportação, lembre-se de que as operações de exportação usam recursos de banco de dados, mas não interferem nas operações padrão do banco de dados, a menos que a instância tenha um provisionamento insuficiente.
- As cobranças por transferência de dados entre regiões são aplicadas quando o bucket de destino está em uma região diferente do cluster de origem. Para mais informações, consulte Preços do AlloyDB para PostgreSQL.
- A compactação é ativada se o nome do objeto terminar com a extensão
.gz. O objeto é exportado no formato.gzpara o Cloud Storage. - Várias operações de exportação podem ser executadas em paralelo.
Papéis e permissões necessários para exportar do AlloyDB
Para exportar dados do AlloyDB para o Cloud Storage, o usuário que inicia a exportação precisa ter um dos seguintes papéis do Identity and Access Management (IAM):
- O papel de administrador do Cloud AlloyDB
(
roles/alloydb.admin) - Uma função personalizada, incluindo as
seguintes permissões:
alloydb.clusters.getalloydb.clusters.export
Além disso, a conta de serviço do cluster do AlloyDB precisa ter um dos seguintes papéis:
- O papel do IAM
storage.objectAdmin - Uma função personalizada, incluindo as permissões
storage.objects.create
Para receber ajuda com os papéis do IAM, consulte Identity and Access Management.
Exportar dados do AlloyDB para um arquivo dump SQL
Ao usar o AlloyDB para fazer uma exportção, seja pela
CLI gcloud ou pela API, você usará o
pg_dump
utilitário com as opções necessárias para garantir que o arquivo de exportação resultante seja
válido para importação no AlloyDB.
Para exportar dados de um banco de dados em um cluster do AlloyDB para um arquivo dump SQL em um bucket do Cloud Storage, siga estas etapas:
gcloud
- Crie um bucket do Cloud Storage.
Use o formato fornecido para identificar a conta de serviço do projeto de que você está exportando. O formato da conta de serviço é o seguinte:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comConceda permissões de conta de serviço ao bucket do Cloud Storage para a operação de exportação.
Use
gcloud storage buckets add-iam-policy-bindingpara conceder o papel dostorage.objectAdminIAM à conta de serviço. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.Exporte o banco de dados para o bucket do Cloud Storage. A lista a seguir mostra opções para exportar dados em um formato dump SQL:
--async(opcional): retorna imediatamente, sem aguardar a conclusão da operação em andamento.--tables(opcional): tabelas para exportar.--schema-only(opcional): se definido, exporta apenas o esquema.--clean-target-objects(opcional): se definido, gera comandos paraDROPtodos os objetos de banco de dados despejados antes de gerar os comandos para criá-los.--if-exist-target-objects(opcional): se definido, usa comandosDROP ... IF EXISTSpara verificar a existência do objeto antes de descartá-lo no modo--clean-target-objects.
Para usar esses recursos, inclua essas opções no comando
gcloud. Se você quiser exportar apenas definições de objetos (esquema) e nenhum dado, use a flag–-schema-only. Para especificar quais tabelas serão exportadas, use a flag--tables=TABLE_NAMES. É possível especificar valores separados por vírgula de nomes de tabelas ou padrões curinga para especificar várias tabelas.Caso contrário, remova esses parâmetros do comando a seguir:
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 --sqlO comando
alloydb clusters exportnão contém gatilhos ou procedimentos armazenados, mas contém visualizações. Para exportar gatilhos ou procedimentos armazenados, use opg_dumputilitário.Para mais informações sobre como usar o comando
alloydb clusters export, consulte aalloydb clusters exportpágina de referência do comando.Se você não precisar manter o papel do IAM definido anteriormente, revogue o papel agora.
REST v1
Crie um bucket para a exportação:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAMEUse o formato da conta de serviço para identificar a conta de serviço do projeto de que você está exportando.
O formato da conta de serviço é o seguinte:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comConceda permissões de conta de serviço ao bucket do Cloud Storage para a operação de exportação.
Use
gcloud storage buckets add-iam-policy-bindingpara conceder o papel dostorage.objectAdminIAM à conta de serviço. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.Exporte o banco de dados.
Use o método HTTP e URL a seguir:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:exportAntes de usar os dados da solicitação, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto;
- REGION: a região em que o cluster do AlloyDB está implantado;
- CLUSTER_ID: o ID do cluster;
- BUCKET_NAME: o nome do bucket do Cloud Storage ;
- PATH_TO_SQL_FILE: o caminho para o arquivo dump SQL;
- DATABASE_NAME: o nome de um banco de dados dentro da instância do AlloyDB;
- TABLES: tabelas para exportar;
- SCHEMA_ONLY: se
true, exporta apenas o esquema; - CLEAN_TARGET_OBJECTS: se
true, gera comandos paraDROPtodos os objetos de banco de dados despejados antes de gerar os comandos para criá-los; - IF_EXIST_TARGET_OBJECTS: Se
true, useDROP ... IF EXISTScomandos para verificar a existência do objeto antes de descartá-lo no modoclean_target_objects
Para usar esses recursos, defina os valores dos parâmetros como
true. Caso contrário, defina os valores comofalse. Se você quiser exportar apenas definições de objetos (esquema) e nenhum dado, use a flagschema_only. Para especificar quais tabelas serão exportadas, use o campotables. É possível selecionar várias tabelas fornecendo uma lista separada por vírgulas de nomes de tabelas ou escrevendo caracteres curinga no padrão.Solicitar corpo JSON:
{ "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 a solicitação, expanda uma destas opções:
curl (Linux, macOS ou Cloud Shell)
Salve o corpo da solicitação em um arquivo com o nome
request.jsone execute o comando abaixo: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)
Salve o corpo da solicitação em um arquivo com o nome
request.jsone execute o comando abaixo:$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 ContentVocê vai receber uma resposta JSON semelhante a esta:
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 você não precisa manter o papel do IAM definido anteriormente, remova-o agora.
Para ver a lista completa de parâmetros da solicitação, consulte
clusters:export.
A seguir
- Saiba como exportar um arquivo CSV.
- Cancelar uma exportação de dados.