Para fazer backup de esquemas e dados de banco de dados como um script de texto simples de instruções SQL, é possível exportar dados de clusters do AlloyDB para PostgreSQL para um arquivo dump SQL em um bucket do Cloud Storage.
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 uma operação de exportação.
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 do 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 menor do que deveria ser.
- As cobranças de transferência de dados entre regiões se aplicam 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 será 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 AlloyDB
(
roles/alloydb.admin) - Um papel personalizado, 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 no bucket do Cloud Storage:
- O papel do IAM
storage.objectAdminoustorage.objectCreator - Um papel personalizado, incluindo a permissão
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 executar uma exportação, seja na
gcloud CLI ou na API, você estará usando o utilitário
pg_dump
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
- Verifique se há um bucket do Cloud Storage para armazenar o arquivo exportado ou crie um novo bucket.
Use
gcloud storage buckets add-iam-policy-bindingpara conceder o papel do IAMstorage.objectAdminà conta de serviço do AlloyDB para o bucket. O formato da conta de serviço é o seguinte:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comPara instruções sobre como conceder papéis em buckets, consulte Definir e gerenciar políticas do IAM em buckets.
Se você estiver exportando o arquivo para um bucket do Cloud Storage que não foi criado por você, talvez sejam necessárias outras permissões do IAM para conceder papéis no bucket. Para mais detalhes, consulte Papéis necessários.
Exporte o banco de dados para o bucket do Cloud Storage. Veja a seguir as opções para exportar dados em um formato de dump SQL:
--async(opcional): retorna imediatamente, sem aguardar a conclusão da operação em andamento.--tables(opcional): tabelas de onde 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, use os comandosDROP ... IF EXISTSpara verificar se o objeto existe antes de descartá-lo no modo--clean-target-objects.
Para usar esses recursos, inclua as opções no comando
gcloud. Se você quiser exportar apenas definições de objeto (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írgulas de nomes de tabelas ou padrões de caracteres curinga para especificar várias tabelas.Caso contrário, remova esses parâmetros do 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 \ --sqlO comando
gcloud alloydb clusters exportnão contém gatilhos ou procedimentos armazenados, mas contém visualizações. Para exportar gatilhos ou procedimentos armazenados, use o utilitáriopg_dump.Para mais informações sobre como usar o comando
gcloud alloydb clusters export, consulte a página de referência do comandogcloud alloydb clusters export.Se você não precisar manter o papel do IAM definido anteriormente, revogue o papel.
REST v1
Verifique se há um bucket do Cloud Storage para armazenar o arquivo exportado ou crie um novo bucket:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAMEUse
gcloud storage buckets add-iam-policy-bindingpara conceder o papel do IAMstorage.objectAdminà conta de serviço do AlloyDB para o bucket. O formato da conta de serviço é o seguinte:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comPara instruções sobre como conceder papéis em buckets, consulte Definir e gerenciar políticas do IAM em buckets.
Se você estiver exportando o arquivo para um bucket do Cloud Storage que não foi criado por você, talvez sejam necessárias outras permissões do IAM para conceder papéis no bucket. Para mais detalhes, consulte Papéis necessários.
Exporte o banco de dados.
Use o seguinte método HTTP e URL:
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 de onde exportar.
- SCHEMA_ONLY: se for
true, exporte apenas o esquema. - CLEAN_TARGET_OBJECTS: se for
true, os comandos de saída paraDROPtodos os objetos de banco de dados despejados antes de gerar os comandos para criá-los. - IF_EXIST_TARGET_OBJECTS: se for
true, use os comandosDROP ... IF EXISTSpara verificar se o objeto existe 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 objeto (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.Corpo JSON da solicitação:
{ "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 a seguir: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 a seguir:$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 precisar manter o papel do IAM definido anteriormente, remova-o.
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.