En esta página, se describe cómo exportar datos de los clústeres de AlloyDB para PostgreSQL a archivos de volcado de SQL.
Para obtener información sobre cómo migrar una base de datos completa desde un servidor de base de datos compatible a una instancia nueva de AlloyDB, consulta Cómo migrar una base de datos a AlloyDB con Database Migration Service. Si exportas porque quieres crear una instancia nueva desde el archivo exportado, considera restablecer un clúster desde una copia de seguridad almacenada.
Puedes cancelar la exportación de datos de los clústeres de AlloyDB para PostgreSQL. Para obtener más información, consulta Cómo cancelar la exportación de datos.
Antes de comenzar
- Antes de comenzar una operación de exportación, ten en cuenta que las operaciones de exportación usan recursos de bases de datos, pero no interfieren en las operaciones estándar de bases de datos, a menos que la instancia no cuente con el aprovisionamiento suficiente.
- Los cargos por transferencia de datos entre regiones se aplican cuando el bucket de destino se encuentra en una región distinta a la del clúster de origen. Para obtener más información, consulta los precios de AlloyDB para PostgreSQL.
- La compresión se habilita si el nombre del objeto termina con la extensión
.gz
. Luego, el objeto se exporta en formato.gz
a Cloud Storage. - Se pueden ejecutar varias operaciones de exportación en paralelo.
Roles y permisos necesarios para exportar desde AlloyDB
Para exportar datos de AlloyDB a Cloud Storage, el usuario que inicia la exportación debe tener uno de los siguientes roles de Identity and Access Management (IAM):
- El rol de
Administrador de Cloud AlloyDB
(
roles/alloydb.admin
) - Un rol personalizado que incluya los siguientes permisos:
alloydb.clusters.get
alloydb.clusters.export
Además, la cuenta de servicio del clúster de AlloyDB debe tener uno de los siguientes roles:
- El rol de IAM
storage.objectAdmin
- Un rol personalizado que incluya los permisos
storage.objects.create
Si deseas obtener ayuda con los roles de IAM, consulta Administración de identidades y accesos.
Exporta datos de AlloyDB a un archivo de volcado de SQL
Cuando usas AlloyDB para realizar una exportación, ya sea desde gcloud CLI o la API, usas la utilidad pg_dump
, con las opciones necesarias para garantizar que el archivo de exportación resultante sea válido para volver a importarse a AlloyDB.
Para exportar datos de una base de datos en un clúster de AlloyDB a un archivo de volcado de SQL en un bucket de Cloud Storage, sigue estos pasos:
gcloud
- Crea buckets de Cloud Storage.
Usa el formato proporcionado para identificar la cuenta de servicio del proyecto desde el que exportas. El formato de la cuenta de servicio es el siguiente:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Otorga permisos a la cuenta de servicio para el bucket de Cloud Storage para la operación de exportación.
Usa
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.objectAdmin
a la cuenta de servicio. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.Exporta la base de datos a tu bucket de Cloud Storage. A continuación, se enumeran las opciones para exportar datos en un formato de volcado de SQL:
--async
(opcional): Se muestra de inmediato, sin necesidad de esperar a que se complete la operación en curso.--tables
(opcional): Son las tablas desde las que se exportarán los datos.--schema-only
(opcional): Si se establece, exporta solo el esquema.--clean-target-objects
(opcional): Si se establece, se envían aDROP
todos los objetos de la base de datos volcados antes de enviar los comandos para crearlos.--if-exist-target-objects
(opcional): Si se establece, usa los comandosDROP ... IF EXISTS
para verificar la existencia del objeto antes de soltarlo en el modo--clean-target-objects
.
Para usar estas funciones, incluye estas opciones en el comando
gcloud
. Si deseas exportar solo las definiciones de objetos (esquema) y no los datos, usa la marca–-schema-only
. Para especificar qué tablas se exportarán, usa la marca--tables=TABLE_NAMES
. Puedes especificar valores separados por comas de nombres de tablas o patrones de comodines para especificar varias tablas.De lo contrario, quita estos parámetros del siguiente 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
El comando
alloydb clusters export
no contiene activadores ni procedimientos almacenados, pero contiene vistas. Para exportar activadores o procedimientos almacenados, usa la utilidadpg_dump
.Para obtener más información sobre el uso del comando
alloydb clusters export
, consulta la página de referencia del comandoalloydb clusters export
.Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
REST v1
Crea un bucket para la exportación:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
Usa el formato de cuenta de servicio para identificar la cuenta de servicio del proyecto desde el que exportas.
El formato de la cuenta de servicio es el siguiente:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Otorga permisos a la cuenta de servicio para el bucket de Cloud Storage para la operación de exportación.
Usa
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.objectAdmin
a la cuenta de servicio. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.Exporta tu base de datos.
Usa el siguiente método y URL HTTP:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export
Antes de usar cualquiera de los datos de solicitud, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- REGION: Es la región en la que se implementa el clúster de AlloyDB.
- CLUSTER_ID: El ID del clúster.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- PATH_TO_SQL_FILE: La ruta de acceso al archivo de volcado de SQL.
- DATABASE_NAME: Es el nombre de una base de datos dentro de la instancia de AlloyDB.
- TABLES: Son las tablas desde las que se exportarán los datos.
- SCHEMA_ONLY: Si es
true
, exporta solo el esquema. - CLEAN_TARGET_OBJECTS: Si es
true
, muestra los comandos aDROP
todos los objetos de la base de datos volcados antes de mostrar los comandos para crearlos. - IF_EXIST_TARGET_OBJECTS: Si es
true
, usa los comandosDROP ... IF EXISTS
para verificar la existencia del objeto antes de soltarlo en el modoclean_target_objects
.
Para usar estas funciones, establece los valores de los parámetros en
true
. De lo contrario, establécelos enfalse
. Si deseas exportar solo las definiciones de objetos (esquema) y no los datos, usa la marcaschema_only
. Para especificar qué tablas se exportarán, usa el campotables
. Para seleccionar varias tablas, proporciona una lista de nombres de tablas separados por comas o escribe caracteres comodín en el patrón.Cuerpo JSON de la solicitud:
{ "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 tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente 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)
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente 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
Recibirás una respuesta JSON similar a la siguiente:
Respuesta
{ "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 }
Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
Si quieres obtener la lista completa de los parámetros de esta solicitud, consulta clusters:export
.
¿Qué sigue?
- Obtén más información para exportar un archivo CSV.
- Cómo cancelar una exportación de datos