En esta página, se describe la importación y exportación de datos en instancias de Cloud SQL a través de archivos BAK y la importación de datos en instancias de Cloud SQL a través de archivos de registro de transacciones.
Antes de comenzar
Las exportaciones usan recursos de bases de datos, pero no interfieren en las operaciones normales de las bases de datos, a menos que la instancia no cuente con el aprovisionamiento suficiente.
Para obtener prácticas recomendadas, consulta Recomendaciones para la importación y exportación de datos.
Después de completar una operación de importación, verifica los resultados.
Exporta datos de Cloud SQL para SQL Server
Cloud SQL admite la exportación de archivos BAK integrados.
Si deseas crear una instancia nueva a partir de un archivo exportado, considera lo siguiente: Restablece una copia de seguridad en una instancia diferente o clona la instancia.
Cloud SQL realiza una copia de seguridad completa de la base de datos seleccionada durante una operación de exportación.
Roles y permisos necesarios para exportar desde Cloud SQL para SQL Server
Para exportar datos de Cloud SQL a Cloud Storage, el usuario que inicia la exportación debe tener uno de los siguientes roles:
- El rol Editor de Cloud SQL
- Un rol personalizado que incluya los siguientes permisos:
cloudsql.instances.get
cloudsql.instances.export
Además, la cuenta de servicio para la instancia de Cloud SQL debe tener uno de los siguientes roles:
- El rol de Identity and Access Management (IAM) llamado
storage.objectAdmin
- Un rol personalizado que incluya los siguientes permisos:
storage.objects.create
storage.objects.list
(solo para exportación con selecciones)storage.objects.delete
(solo para exportación con selecciones)storage.buckets.getIamPolicy
(solo para exportar registros de transacciones)storage.buckets.setIamPolicy
(solo para exportar registros de transacciones)
Para obtener ayuda con los roles de IAM, consulta Identity and Access Management.
Exporta datos a un archivo BAK desde Cloud SQL para SQL Server
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Haz clic en Exportar.
- En la sección Formato de archivo, haz clic en BAK.
- En la sección Datos para exportar, usa el menú desplegable para seleccionar la base de datos desde la que deseas exportar.
- En la sección Destino, selecciona Explorar para buscar un bucket de Cloud Storage o una carpeta para tu exportación.
- Haz clic en Exportar para comenzar la exportación.
gcloud
- Crea un bucket de Cloud Storage.
- Busca la cuenta de servicio de la instancia de Cloud SQL desde la que exportas. Puedes hacerlo ejecutando el comando
gcloud sql instances describe
. Busca el camposerviceAccountEmailAddress
en el resultado.gcloud sql instances describe INSTANCE_NAME
- Usa
gcloud storage buckets add-iam-policy-binding
para otorgar la función de IAMstorage.objectAdmin
a la cuenta de servicio. Para obtener más información para la configuración de los permisos de IAM, consulta Usa los permisos de IAM. - Exporta la base de datos:
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \ --database=DATABASE_NAME
Para obtener información para el uso del comando
gcloud sql export bak
, consulta la página de referencia del comando. - Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
REST v1
- Crea un bucket de Cloud Storage para la exportación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.
- Otórgale a tu instancia el rol de IAM
legacyBucketWriter
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Exporta tu base de datos:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: El ID de la instancia
- BUCKET_NAME: El nombre del bucket de Cloud Storage
- PATH_TO_DUMP_FILE: La ruta de acceso al archivo de volcado de SQL
- DATABASE_NAME_1: El nombre de una base de datos dentro de la instancia de Cloud SQL
- DATABASE_NAME_2: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Cuerpo JSON de la solicitud:
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
REST v1beta4
- Crea un bucket de Cloud Storage para la exportación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.
- Otórgale a tu instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Exporta tu base de datos:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: El ID de la instancia
- BUCKET_NAME: El nombre del bucket de Cloud Storage
- PATH_TO_DUMP_FILE: La ruta de acceso al archivo de volcado de SQL
- DATABASE_NAME_1: El nombre de una base de datos dentro de la instancia de Cloud SQL
- DATABASE_NAME_2: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export
Cuerpo JSON de la solicitud:
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
Exporta copias de seguridad diferenciales de bases de datos
Antes de exportar una copia de seguridad de base de datos diferencial, debes exportar una base diferencial.
Si otros servicios o funciones, como la recuperación de un momento determinado y la réplica de lectura, activan una copia de seguridad completa entre la exportación de la copia de seguridad completa y la exportación de la copia de seguridad diferencial, deberás volver a activar una exportación de copia de seguridad completa.
Para comprender mejor esto, considera el siguiente ejemplo:
- Envías una solicitud de copia de seguridad completa a las 7:00 a.m.
- Habilitas la recuperación de un momento determinado a las 9:00 a.m. Esto activa una copia de seguridad completa en la instancia.
- Intentas realizar una copia de seguridad diferencial a las 5:00 p.m. Esta solicitud de exportación falla con un mensaje de error porque la última copia de seguridad completa se activó a través de la recuperación de un momento determinado.
Cloud SQL no admite solicitudes de exportación de base de datos con --differential-base
o --bak-type=DIFF
en instancias de réplica.
gcloud
- Crea un bucket de Cloud Storage.
- Busca la cuenta de servicio de la instancia de Cloud SQL desde la que exportas.
Puedes hacerlo ejecutando el comando
gcloud sql instances describe
. Busca el camposerviceAccountEmailAddress
en el resultado.gcloud sql instances describe INSTANCE_NAME
- Usa
gcloud storage buckets add-iam-policy-binding
para otorgar la función de IAMstorage.objectAdmin
a la cuenta de servicio. Para obtener más información para la configuración de los permisos de IAM, consulta Usa los permisos de IAM. Exporta la base de datos como la base diferencial.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --differential-base
Para obtener información para el uso del comando
gcloud sql export bak
, consulta la página de referencia del comando.Exporta una copia de seguridad diferencial.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF
Para obtener información para el uso del comando
gcloud sql export bak
, consulta la página de referencia del comando.- Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
REST v1
- Crea un bucket de Cloud Storage para la exportación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.
- Otórgale a tu instancia el rol de IAM
legacyBucketWriter
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Exporta la copia de seguridad completa de la base de datos como la base diferencial.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: El ID de la instancia
- BUCKET_NAME: El nombre del bucket de Cloud Storage
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK de SQL
- DATABASE_NAME: El nombre de la base de datos dentro de la instancia de Cloud SQL
offload
: Para habilitar y usar la exportación sin servidores, establece este valor en TRUE.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "databases": ["DATABASE_NAME"] "offload": TRUE | FALSE "bakExportOptions": { "differentialBase":true } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"PowerShell
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Exporta una copia de seguridad diferencial.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: el ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_dump_file: La ruta al archivo de volcado de SQL
- database_name_1: El nombre de una base de datos dentro de la instancia de Cloud SQL
- database_name_2: El nombre de una base de datos dentro de la instancia de Cloud SQL
- offload: Habilita la exportación sin servidores. Configúralo como
true
para usar la exportación sin servidores.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"PowerShell
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://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
REST v1beta4
- Crea un bucket de Cloud Storage para la exportación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.
- Otórgale a tu instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Exporta la copia de seguridad completa de la base de datos como la base diferencial.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: El ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_dump_file: La ruta al archivo de volcado de SQL
- database_name_1: El nombre de una base de datos dentro de la instancia de Cloud SQL
- database_name_2: El nombre de una base de datos dentro de la instancia de Cloud SQL
- offload: Para habilitar y usar la exportación sin servidores, establece su valor en
true
.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { "differentialBase":true } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
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://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Exporta una copia de seguridad diferencial:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: El ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_dump_file: La ruta al archivo de volcado de SQL
- database_name_1: El nombre de una base de datos dentro de la instancia de Cloud SQL
- database_name_2: El nombre de una base de datos dentro de la instancia de Cloud SQL
- offload: Para habilitar y usar exportaciones sin servidores, establece este valor en
true
.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
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://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
Exporta registros de transacciones
Puedes exportar los registros de transacciones de las instancias de Cloud SQL Enterprise Plus que tienen habilitada la recuperación de un momento determinado (PITR) y cuyos registros se almacenan en Cloud Storage.
gcloud
- Crea un bucket de Cloud Storage para la exportación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.
- Busca la cuenta de servicio de la instancia de Cloud SQL desde la que exportas.
Para ello, ejecuta el comando
gcloud sql instances describe
. Busca el camposerviceAccountEmailAddress
en el resultado.gcloud sql instances describe INSTANCE_NAME
- Usa
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.Admin
a la cuenta de servicio. Para obtener más información para configurar los permisos de IAM, consulta Configura y administra políticas de IAM en buckets. Exporta los registros de transacciones.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_PATH --export-log-start-time=START_DATE_AND_TIME / --export-log-end-time=END_DATE_AND_TIME / --database=DATABASE_NAME --bak-type=TLOG
Para obtener información sobre el uso del comando
gcloud sql export bak
, consulta la página de referencia del comando.- Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
REST
Crea un bucket de Cloud Storage.
Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.
- Otórgale a tu instancia el rol de IAM
storage.Admin
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Configura y administra políticas de IAM en buckets. - Exporta los registros de transacciones.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- INSTANCE_ID: El ID de la instancia.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- FOLDER_PATH: Es la ruta de acceso a la carpeta en el bucket de Cloud Storage. Cloud SQL exporta los registros de transacciones a esta carpeta.
- DATABASE_NAME: el nombre de la base de datos dentro de la instancia de Cloud SQL.
exportLogStartTime
: Es la fecha y la hora de inicio de los registros de transacciones que se exportarán.exportLogEndTime
: Es la fecha y hora de finalización de los registros de transacciones que se exportarán.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/FOLDER_PATH", "databases": ["DATABASE_NAME"] "bakExportOptions": { bakType:"TLOG" exportLogStartTime: START_DATE_AND_TIME exportLogEndTime: END_DATE_AND_TIME } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"PowerShell
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
Usa la exportación con selecciones
Las ventajas de la exportación con selecciones son las siguientes:
- Reducción del tiempo necesario para que se completen las operaciones
- Se pueden exportar bases de datos de más de 5 TB
Una posible desventaja de usar la exportación con selecciones es que la copia de seguridad, en lugar de ser un archivo, se divide en un conjunto de archivos. Este conjunto se denomina “conjunto de selecciones”. Consulta Crea copias de seguridad de dispositivos en un conjunto de medios con selecciones (un conjunto de selecciones). En Cloud SQL, exportas a una carpeta vacía en Cloud Storage en lugar de generar un solo archivo. Para obtener más información, consulta Cómo usar la exportación con selecciones.
Planifica tus operaciones
La exportación con selecciones puede mejorar el rendimiento de las exportaciones. Sin embargo, si tu caso de uso requiere un solo archivo de salida o si tu base de datos tiene menos de 5 TB de tamaño y si un rendimiento más rápido no es esencial, te recomendamos usar una exportación sin selecciones.
Si decides usar la exportación con selecciones, considera la cantidad de selecciones. Puedes especificar este valor en tu comando de gcloud CLI o en la llamada a la API de REST. Sin embargo, si deseas una cantidad óptima de selecciones para el rendimiento o si no conoces una cantidad, omite la cantidad. Se establece una cantidad óptima de selecciones automáticamente.
La cantidad máxima de selecciones que actualmente admite Cloud SQL para SQL Server es 64.
Cómo usar la exportación con selecciones
gcloud
- Crea un bucket de Cloud Storage.
- Busca la cuenta de servicio de la instancia de Cloud SQL desde la que exportas. Para ello, ejecuta el comando
gcloud sql instances describe
. Busca el camposerviceAccountEmailAddress
en el resultado.gcloud sql instances describe INSTANCE_NAME
- Usa
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.objectAdmin
a la cuenta de servicio. Para obtener más información para la configuración de los permisos de IAM, consulta Usa los permisos de IAM. - Para exportar la base de datos, especifica el parámetro
--striped
o un valor para--stripe_count
. Establecer un valor para--stripe_count
implica que el parámetro--striped
está indicado. Se produce un error si especificas--no-striped
, pero especificas un valor para--stripe_count
:gcloud beta sql export bak INSTANCE_NAME \ gs://BUCKET_NAME/STRIPED_EXPORT_FOLDER \ --database=DATABASE_NAME --striped --stripe_count=NUMBER
Para obtener información para el uso del comando
gcloud beta sql export bak
, consulta la página de referencia del comando. - Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
REST v1
- Crea un bucket de Cloud Storage para la exportación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.
- Otórgale a tu instancia el rol de IAM
legacyBucketWriter
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Exporta tu base de datos:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: el ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_folder: La ruta de acceso a la carpeta (en el bucket de Cloud Storage) a la que se exportará el conjunto con selecciones
- database_name: El nombre de una base de datos en tu instancia de Cloud SQL
- true | false: Se establece en
true
para usar la exportación con selecciones. Si especificastrue
sin especificar un recuento de selecciones, se establecerá una cantidad óptima de selecciones automáticamente - number_of_stripes: La cantidad de selecciones que se usarán. Si se especifica,
striped
está implícito comotrue
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
REST v1beta4
- Crea un bucket de Cloud Storage para la exportación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.
- Otórgale a tu instancia el rol de IAM
legacyBucketWriter
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Exporta tu base de datos:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: el ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_folder: La ruta de acceso a la carpeta (en el bucket de Cloud Storage) a la que se exportará el conjunto con selecciones
- database_name: El nombre de una base de datos en tu instancia de Cloud SQL
- true | false: Se establece en
true
para usar la exportación con selecciones. Si especificastrue
sin especificar un recuento de selecciones, se establecerá una cantidad óptima de selecciones automáticamente - number_of_stripes: La cantidad de selecciones que se usarán. Si se especifica,
striped
está implícito comotrue
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
Importa a Cloud SQL para SQL Server
Roles y permisos necesarios para importar a Cloud SQL para SQL Server
Para importar datos de Cloud Storage a Cloud SQL, el usuario que inicia la importación debe tener uno de los siguientes roles:
- El rol Administrador de Cloud SQL
- Un rol personalizado que incluya los siguientes permisos:
cloudsql.instances.get
cloudsql.instances.import
Además, la cuenta de servicio para la instancia de Cloud SQL debe tener uno de los siguientes roles:
- El rol de IAM
storage.objectAdmin
- Un rol personalizado que incluya los siguientes permisos:
storage.objects.get
storage.objects.list
(solo para versiones solo para importar)
Para obtener ayuda con los roles de IAM, consulta Identity and Access Management.
Importa datos de un archivo BAK a Cloud SQL para SQL Server
Para usar la importación con selecciones, consulta Usa la importación con selecciones.
Hay varios frameworks de importación disponibles. Por ejemplo, Cloud SQL para SQL Server admite la captura de datos modificados (CDC) para las siguientes versiones de bases de datos:
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
Cuando importas una base de datos habilitada para los CDC, se conserva la marca KEEP_CDC.
Si la versión de tu instancia es Microsoft SQL Server Enterprise Edition, puedes importar archivos BAK encriptados.
Las instancias de Microsoft SQL Server Standard Edition también importan archivos BAK encriptados, pero solo a través de gcloud CLI.
Las únicas extensiones compatibles de BAK son .bak
y .bak.gz
. Por el momento, no se admiten las copias de seguridad encriptadas de GPG.
Para seguir las instrucciones que se indican a continuación, prepárate para especificar una base de datos nueva. No crees una base de datos antes de comenzar la importación del archivo BAK.
Para importar datos a una instancia de Cloud SQL con un archivo BAK, sigue estos pasos:
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Haga clic en Import.
- En el campo Elige un archivo del que deseas importar, ingresa la ruta de acceso al bucket y el archivo BAK que se usará para la importación.
Puedes importar un archivo comprimido (
.gz
) o uno sin comprimir. En la sección Formato de archivo, selecciona BAK.
- En la sección Destino, especifica la base de datos de tu instancia de Cloud SQL en la que deseas importar el archivo BAK.
- Para iniciar la importación, haz clic en Importar.
gcloud
Crea un bucket de Cloud Storage para la importación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.
- Asegúrate de haber configurado los roles y los permisos requeridos.
- Sube los datos del archivo BAK al bucket.
- Describe la instancia hacia la cual estás importando:
gcloud sql instances describe INSTANCE_NAME
- Copia el campo
serviceAccountEmailAddress
. - Usa
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.objectViewer
a la cuenta de servicio del bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Importa los datos del archivo:
Para las importaciones encriptadas, usa el siguiente comando:gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME --pvk-path=gs://BUCKET_NAME/KEY_NAME --prompt-for-pvk-password
- Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos a través de .
gcloud storage buckets remove-iam-policy-binding
REST v1
- Crea un bucket de Cloud Storage.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
- Otorga a la instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Importa los datos del archivo:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: el ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_bak_file: La ruta de acceso al archivo BAK
- database_name: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Para usar un usuario diferente para la importación, especifica la propiedad
Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.importContext.importUser
. - Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
REST v1beta4
- Crea un bucket de Cloud Storage.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
- Otorga a la instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para la configuración de permisos de IAM, consulta Usa permisos de IAM. - Importa los datos del archivo:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: el ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_bak_file: La ruta de acceso al archivo BAK
- database_name: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Para usar un usuario diferente para la importación, especifica la propiedad
Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.importContext.importUser
. - Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
Si obtienes un error como ERROR_RDBMS
, asegúrate de que el archivo BAK exista en el bucket y de que tengas los permisos correctos en el bucket. Si quieres obtener ayuda para configurar el control de acceso en Cloud Storage, consulta Crea y administra listas de control de acceso (LCA).
Importa copias de seguridad diferenciales de bases de datos
Antes de importar una copia de seguridad diferencial de la base de datos, debes realizar una importación de copia de seguridad completa, y tu base de datos debe estar en el estado RESTORING
después de la importación de copia de seguridad completa.
Cloud SQL no admite la importación de copias de seguridad de bases de datos diferenciales en instancias habilitadas para la recuperación de un momento determinado. Esto se debe a que importar una copia de seguridad de base de datos con --no-recovery
es un requisito previo para importar copias de seguridad diferenciales de base de datos. Además, no puedes habilitar la recuperación de un momento determinado en una instancia si la base de datos está en el estado RESTORING
.
En caso de una falla de importación, realiza una de las siguientes acciones para habilitar la recuperación de un momento determinado:
Pon la base de datos en estado
RESTORING
en línea a través de la marca--recovery-only
.Quita la base de datos.
Para importar datos a una instancia de Cloud SQL a través de una copia de seguridad de la base de datos diferencial, sigue estos pasos:
gcloud
Crea un bucket de Cloud Storage para la importación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.
- Asegúrate de haber configurado los roles y los permisos requeridos.
- Sube los datos del archivo BAK al bucket.
- Describe la instancia hacia la cual estás importando:
gcloud sql instances describe INSTANCE_NAME
- Copia el campo
serviceAccountEmailAddress
. - Usa
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.objectViewer
a la cuenta de servicio del bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. Importa una copia de seguridad completa con
--no-recovery
.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
-
Importa una copia de seguridad de una base de datos diferencial.
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF --no-recovery
-
Opcional: usa la marca
--recovery-only
para poner la base de datos importada en línea. Este paso es opcional y solo debes realizarlo si tu base de datos está en el estadoRESTORING
.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos a través de
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea un bucket de Cloud Storage.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
- Otorga a la instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. -
Importa una copia de seguridad completa con
noRecovery
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- INSTANCE_ID: El ID de la instancia.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK.
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Importa una copia de seguridad de una base de datos diferencial.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: El ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_bak_file: La ruta de acceso al archivo BAK
- database_name: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import"PowerShell
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://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
Usa
recoveryOnly
para poner la base de datos importada en línea. Este paso es opcional y solo debes realizarlo si tu base de datos está en el estadoRESTORING
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: El ID de la instancia
- BUCKET_NAME: El nombre del bucket de Cloud Storage
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
REST v1beta4
- Crea un bucket de Cloud Storage.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
- Otorga a la instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para la configuración de permisos de IAM, consulta Usa permisos de IAM. -
Importa una copia de seguridad completa con
noRecovery
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT-ID: El ID del proyecto.
- INSTANCE_ID: El ID de la instancia.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK.
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Importa una copia de seguridad de una base de datos diferencial.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: El ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_bak_file: La ruta de acceso al archivo BAK
- database_name: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import"PowerShell
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://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
Usa
recoveryOnly
para poner la base de datos importada en línea. Este paso es opcional y solo debes realizarlo si tu base de datos está en el estadoRESTORING
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: El ID de la instancia
- BUCKET_NAME: El nombre del bucket de Cloud Storage
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
Si obtienes un error como ERROR_RDBMS
, asegúrate de que el archivo BAK exista en el bucket y de que tengas los permisos correctos en el bucket. Si quieres obtener ayuda para configurar el control de acceso en Cloud Storage, consulta Crea y administra listas de control de acceso (LCA).
Importa copias de seguridad del registro de transacciones
Un registro de transacciones es un registro de las transacciones de tu base de datos y las modificaciones realizadas por cada transacción. Puedes usarlo para restablecer la coherencia de la base de datos en caso de que se produzca una falla del sistema.
Para importar datos a una instancia de Cloud SQL a través de una copia de seguridad del registro de transacciones, sigue estos pasos:
gcloud
Opcional: Crea un bucket de Cloud Storage para la importación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
- Sube los archivos de copia de seguridad al bucket.
- Describe la instancia hacia la cual estás importando:
gcloud sql instances describe INSTANCE_NAME
- Copia el campo
serviceAccountEmailAddress
. - Usa
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.objectViewer
a la cuenta de servicio del bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. Importa una copia de seguridad completa con el parámetro
--no-recovery
. Asegúrate de que tu base de datos esté en el estadoRESTORING
después de la importación de la copia de seguridad completa.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
- Opcional: Importa una copia de seguridad diferencial.
-
Importa una copia de seguridad del registro de transacciones.
Reemplaza lo siguiente:gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=TLOG --stop-at=STOP_AT_TIMESTAMP --stop-at-mark=STOP_AT_MARK_NAME --no-recovery
- INSTANCE_NAME: Es el nombre de la instancia.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- BACKUP_FILENAME: El nombre de tu archivo de copia de seguridad.
- DATABASE_NAME: el nombre de una base de datos dentro de la instancia de Cloud SQL.
- STOP_AT_TIMESTAMP: La marca de tiempo en la que se debe detener la importación del registro de transacciones. Este es un campo opcional, y el valor debe usar el formato RFC 3339.
- STOP_AT_MARK_NAME: la
transacción marcada en la que se debe detener la importación del registro de transacciones. Este es un campo opcional y puede tomar cualquier cadena como su valor. Si el valor tiene el formato
lsn:log-sequence-number
, la importación del registro de transacciones se detiene en el número de secuencia de registro determinado.
-
Opcional: usa la marca
--recovery-only
para poner la base de datos importada en línea. Realiza este paso solo si tu base de datos está en el estadoRESTORING
.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos a través de
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea un bucket de Cloud Storage.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
- Otorga a la instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM.
Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.
-
Importa una copia de seguridad completa con
noRecovery
. Asegúrate de que tu base de datos esté en el estadoRESTORING
después de la importación de la copia de seguridad completa.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- INSTANCE_ID: El ID de la instancia.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK.
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Opcional: Importa una copia de seguridad diferencial.
- Importa una copia de seguridad del registro de transacciones.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- INSTANCE_ID: El ID de la instancia.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- PATH_TO_TLOG_FILE: la ruta de acceso al archivo de registro de transacciones.
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL.
- STOP_AT_TIMESTAMP: La marca de tiempo en la que se debe detener la importación del registro de transacciones. Este es un campo opcional, y el valor debe usar el formato RFC 3339.
- STOP_AT_MARK_NAME: la
transacción marcada en la que se debe detener la importación del registro de transacciones. Este es un campo opcional y puede tomar cualquier cadena como su valor. Si el valor tiene el formato
lsn:log-sequence-number
, la importación del registro de transacciones se detiene en el número de secuencia de registro determinado.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_TLOG_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark": STOP_AT_MARK_NAME, "noRecovery": true, } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
Repite este paso hasta que se importen todas las copias de seguridad del registro de transacciones. Opcional: usa
recoveryOnly
para poner la base de datos importada en línea. Realiza este paso solo si tu base de datos está en el estadoRESTORING
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: El ID de la instancia
- BUCKET_NAME: El nombre del bucket de Cloud Storage
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
REST v1beta4
- Crea un bucket de Cloud Storage.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
- Otorga a la instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para la configuración de permisos de IAM, consulta Usa permisos de IAM. -
Importa una copia de seguridad completa con
noRecovery
. Asegúrate de que tu base de datos esté en el estadoRESTORING
después de la importación de la copia de seguridad completa.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT-ID: El ID del proyecto.
- INSTANCE_ID: El ID de la instancia.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK.
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Opcional: Importa una copia de seguridad diferencial.
- Importa una copia de seguridad del registro de transacciones. Aquí,
stopAt
ystopAtMark
son campos opcionales.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- INSTANCE_ID: El ID de la instancia.
- BUCKET_NAME: el nombre del bucket de Cloud Storage.
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK.
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL.
- STOP_AT_TIMESTAMP: La marca de tiempo en la que se debe detener la importación del registro de transacciones. Este es un campo opcional, y el valor debe usar el formato RFC 3339.
- STOP_AT_MARK_NAME: la
transacción marcada en la que se debe detener la importación del registro de transacciones. Este es un campo opcional y puede tomar cualquier cadena como su valor. Si el valor tiene el formato
lsn:log-sequence-number
, la importación del registro de transacciones se detiene en el número de secuencia de registro determinado.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark":STOP_AT_MARK_NAME, "noRecovery": true, } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
Repite este paso hasta que se importen todas las copias de seguridad del registro de transacciones. Opcional: usa
recoveryOnly
para poner la base de datos importada en línea. Realiza este paso solo si tu base de datos está en el estadoRESTORING
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: El ID de la instancia
- BUCKET_NAME: El nombre del bucket de Cloud Storage
- PATH_TO_BAK_FILE: La ruta de acceso al archivo BAK
- DATABASE_NAME: El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
Usa la importación con selecciones
Las ventajas de la importación con selecciones son las siguientes:
- Reducción del tiempo necesario para que se completen las operaciones
- Se pueden importar bases de datos de más de 5 TB
Una posible desventaja de usar la importación con selecciones es que todos los archivos del conjunto con selecciones (en lugar de un solo archivo) se deben subir a la misma carpeta en el bucket de Cloud Storage antes de realizar la importación.
Planifica tus operaciones
En la mayoría de los casos de uso, la importación con selecciones permite un mejor rendimiento sin desventajas. Sin embargo, si no puedes crear una copia de seguridad de un conjunto con selecciones a partir de una instancia determinada, o si la base de datos tiene menos de 5 TB y si el rendimiento más rápido no es esencial, te recomendamos usar una importación sin selecciones.
Cómo usar la importación con selecciones
gcloud
Crea un bucket de Cloud Storage para la importación.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.
- Asegúrate de haber configurado los permisos y los roles de IAM necesarios.
- Crea una carpeta nueva en el bucket.
- Para importar la base de datos, sube los archivos del conjunto con selecciones (de la base de datos) a la carpeta nueva. Asegúrate de que todos los archivos se suban a la carpeta y de que no contenga archivos adicionales.
- Describe la instancia desde la que exportas:
gcloud sql instances describe INSTANCE_NAME
- Copia el campo
serviceAccountEmailAddress
. - Usa
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.objectViewer
a la cuenta de servicio del bucket. Para obtener más información para la configuración de permisos de IAM, consulta Usa permisos de IAM. - Importa los datos de la carpeta. La diferencia de una importación sin selecciones es la siguiente: el URI se vincula al nombre de la carpeta a la que se subió el conjunto de selecciones, en lugar de a un solo archivo, y tú especificas el parámetro
--striped
:gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \ --database=DATABASE_NAME --striped
- Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos a través de
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea un bucket de Cloud Storage.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
- Otorga a la instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Importa los datos del archivo:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: el ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_folder: la ruta de acceso a la carpeta (en el bucket de Cloud Storage) en la que se encuentra el conjunto de selecciones
- database_name: El nombre de una base de datos que se creará en tu instancia de Cloud SQL
- true | false: Configúralo como
true
para usar la importación con selecciones
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Para usar un usuario diferente para la importación, especifica la propiedad
Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.importContext.importUser
. - Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
REST v1beta4
- Crea un bucket de Cloud Storage.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.
- Otorga a la instancia el rol de IAM
storage.objectAdmin
para tu bucket. Para obtener más información para configurar los permisos de IAM, consulta Usa permisos de IAM. - Importa los datos del archivo:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto
- instance-id: el ID de la instancia
- bucket_name: El nombre del bucket de Cloud Storage
- path_to_folder: La ruta de acceso a la carpeta (en el bucket de Cloud Storage) donde se encuentra el conjunto de selecciones
- database_name: El nombre de una base de datos que se creará en tu instancia de Cloud SQL
- true | false: Configúralo como
true
para usar la importación con selecciones
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Para usar un usuario diferente para la importación, especifica la propiedad
Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.importContext.importUser
. - Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.
Si obtienes un error como ERROR_RDBMS
, asegúrate de que la tabla exista. Si la tabla existe, confirma que tienes los permisos adecuados en el bucket. Si quieres obtener ayuda para configurar el control de acceso en Cloud Storage, consulta Crea y administra listas de control de acceso (LCA).
Próximos pasos
- Aprende a verificar el estado de las operaciones de importación y exportación.
- Obtén más información para las prácticas recomendadas para importar y exportar datos.
- Problemas conocidos para importaciones y exportaciones.