Para reconstruir una base de datos a partir de una secuencia de comandos de texto sin formato de comandos de SQL, puedes importar un archivo SQL almacenado en un bucket de Cloud Storage a un clúster de AlloyDB para PostgreSQL.
Puedes cancelar la importación de datos a los clústeres de AlloyDB. Para obtener más información, consulta Cancela una operación de importación.
Cuando importes archivos de volcado de SQL, asegúrate de que la versión de PostgreSQL desde la que se creó el volcado sea compatible con la versión de PostgreSQL de tu instancia de AlloyDB. La importación de un archivo de volcado de una versión posterior a una anterior puede fallar debido a una sintaxis de SQL incompatible.
Antes de comenzar
Antes de comenzar una operación de importación, haz lo siguiente:
- Asegúrate de que tu base de datos tenga una cuota de almacenamiento adecuada.
- Las operaciones de importación usan recursos de bases de datos, pero no interfieren en las operaciones normales de la base de datos, a menos que el clúster no cuente con el aprovisionamiento suficiente.
Roles y permisos necesarios para importar a AlloyDB
Para importar datos de Cloud Storage a AlloyDB, el usuario que inicia la importación debe tener uno de los siguientes roles:
- El rol de administrador de AlloyDB
- Un rol personalizado que incluya los siguientes permisos:
alloydb.clusters.getalloydb.clusters.import
Además, la cuenta de servicio del clúster de AlloyDB debe tener uno de los siguientes roles:
- El rol de IAM
storage.objectViewer - Un rol personalizado que incluya los siguientes permisos:
storage.objects.get
Para obtener ayuda con los roles de IAM, consulta Identity and Access Management.
Importa un archivo SQL a clústeres de AlloyDB
Para importar datos a un clúster de AlloyDB con un archivo SQL, sigue estos pasos:
Console
En la consola de Google Cloud , ve a la página Clústeres.
Haz clic en el nombre de un clúster para abrir la página Descripción general de ese clúster.
Haz clic en Importar.
En Formato de archivo, selecciona SQL.
En Seleccionar archivo de origen, elige si quieres subir archivos desde tu computadora o seleccionar un archivo de una ubicación de Cloud Storage.
Para subir un archivo desde tu computadora, sigue estos pasos:
- Selecciona Subir archivos de tu computadora.
- Haz clic en Explorar junto a Seleccionar archivo local para seleccionar un archivo SQL de tu máquina local.
- Haz clic en Explorar junto a Seleccionar ubicación de Cloud Storage para seleccionar una ubicación de Cloud Storage en la que se almacenará el archivo local subido.
- Haz clic en Subir para subir el archivo.
Para seleccionar un archivo SQL que exista en un bucket de Cloud Storage, haz lo siguiente:
- Elige Seleccionar archivo de Google Cloud Storage.
- Haz clic en Explorar junto a bucket-name/file-name para seleccionar un archivo SQL de un bucket de Cloud Storage.
Selecciona la base de datos a la que deseas importar los datos en el menú desplegable Base de datos.
Si el archivo de volcado de SQL incluye un metacomando
\connect(o\c), se anula la base de datos de destino que selecciones en la consola de Google Cloud .Opcional: Para especificar un usuario para la operación de importación, haz clic en Mostrar opciones de usuario y, luego, ingresa el nombre de usuario en el campo Usuario.
Para iniciar la operación de importación, haz clic en Importar.
gcloud
- Crea buckets de Cloud Storage.
Sube el archivo SQL a tu bucket. Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
Usa
gcloud storage buckets add-iam-policy-bindingpara otorgar el rol de IAMstorage.objectViewera la cuenta de servicio del clúster de AlloyDB para el bucket:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comPara obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
Importa el archivo:
gcloud alloydb clusters import CLUSTER_NAME \ --region=REGION \ --database=DATABASE_NAME \ --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' \ --user=USERNAME \ --sqlReemplaza lo siguiente:
- CLUSTER_NAME: el nombre del clúster
- REGION: Es la región en la que se implementa el clúster de AlloyDB.
- DATABASE_NAME: Es el nombre de una base de datos dentro del clúster.
- BUCKET_NAME: Es el nombre del bucket de Cloud Storage.
- PATH_TO_SQL_FILE: Es la ruta de acceso al archivo SQL.
- USERNAME: Es el usuario de la operación de importación.
Si el comando devuelve un error como
PERMISSION_DENIED, revisa los permisos.Para obtener información sobre el uso del comando
import, consulta la página de referencia del comandogcloud alloydb clusters import.Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos con
gcloud storage buckets remove-iam-policy-binding.
REST v1
- Crea buckets de Cloud Storage.
- Sube el archivo SQL a tu bucket. Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
Usa
gcloud storage buckets add-iam-policy-bindingpara otorgar el rol de IAMstorage.objectViewera la cuenta de servicio del clúster de AlloyDB para el bucket. El formato de la cuenta de servicio es el siguiente:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comPara obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
Importa tu archivo SQL.
Usa el siguiente método HTTP y la URL:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:importAntes de usar cualquiera de los datos de solicitud, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto.
- LOCATION_ID: Es la región en la que se implementa el clúster de AlloyDB.
- CLUSTER_ID: Es el ID del clúster.
- BUCKET_NAME: Es el nombre del bucket de Cloud Storage.
- PATH_TO_SQL_FILE: Es la ruta de acceso al archivo SQL.
- USER: Es el usuario que se usará para la importación.
- DATABASE_NAME: Es el nombre de una base de datos dentro del clúster de AlloyDB.
Cuerpo JSON de la solicitud:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE", "database": "DATABASE_NAME", "user": "USER", "sqlImportOptions": {} }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.jsony 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/LOCATION_ID/clusters/CLUSTER_ID:import"PowerShell (Windows)
Guarda el cuerpo de la solicitud en un archivo llamado
request.jsony 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/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand ContentRecibirás una respuesta JSON similar a la que se muestra a continuación:
Respuesta
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2025-01-04T13:12:32.363393723Z", "target": "projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }Si quieres usar un usuario diferente para la importación, especifica la propiedad de usuario.
Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
Para obtener la lista completa de los parámetros de la solicitud, consulta
clusters.import.
Verifica el estado de una operación de importación
Para verificar el estado de una operación de importación, sigue estos pasos:
gcloud
Ejecuta el siguiente comando con gcloud alloydb operations describe:
gcloud alloydb operations describe OPERATION_ID --region=REGIONTambién puedes enumerar los detalles de una operación específica o cancelarla. Para obtener más información sobre este comando, consulta la página de referencia del comando gcloud alloydb operations.
REST v1
Usa el método GET y la siguiente URL:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Para obtener más información, consulta get.
Antes de usar cualquiera de los datos de solicitud, realiza los siguientes reemplazos:
- REGION: Es la región en la que se implementa el clúster de AlloyDB.
- PROJECT_ID: Es el ID del proyecto.
- OPERATION_ID: Es el ID de la operación de importación. Para obtener más información, consulta Antes de comenzar.
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
PowerShell (Windows)
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID" | Select-Object -Expand Content
Si se ejecuta de forma correcta, el cuerpo de la respuesta contiene una instancia de
Operation.
¿Qué sigue?
- Obtén más información para importar un archivo CSV.
- Obtén información para cancelar una operación de importación.