Exportar e importar con archivos BAK y archivos de registro de transacciones

En esta página se describe cómo exportar e importar datos en instancias de Cloud SQL mediante archivos BAK y cómo importar datos en instancias de Cloud SQL mediante archivos de registro de transacciones.

Antes de empezar

Las exportaciones usan recursos de la base de datos, pero no interfieren con las operaciones normales de la base de datos, a menos que la instancia no tenga suficientes recursos.

Para consultar las prácticas recomendadas, consulta el artículo Prácticas recomendadas para importar y exportar datos.

Después de completar una operación de importación, verifica los resultados.

Exportar datos de Cloud SQL para SQL Server

Cloud SQL admite la exportación de archivos BAK integrados.

Si quieres crear una instancia a partir de un archivo exportado, te recomendamos que restaures una copia de seguridad en otra instancia o que clones 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 datos desde Cloud SQL para SQL Server

Para exportar datos de Cloud SQL a Cloud Storage, el usuario que inicie la exportación debe tener uno de los siguientes roles:

Además, la cuenta de servicio de la instancia de Cloud SQL debe tener uno de los siguientes roles:

  • El rol storage.objectAdmin Gestión de Identidades y Accesos (IAM)
  • Un rol personalizado que incluya los siguientes permisos:
    • storage.objects.create
    • storage.objects.list (para la exportación de franjas y la exportación del registro de transacciones)
    • storage.objects.delete (para la exportación de franjas y la exportación del registro de transacciones)
    • storage.buckets.get (solo para la exportación de registros de transacciones)

Para obtener ayuda con los roles de gestión de identidades y accesos, consulta Gestión de identidades y accesos.

Exportar datos a un archivo BAK desde Cloud SQL para SQL Server

Consola

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. Haz clic en Exportar.
  4. En la sección Formato de archivo, haga clic en BAK.
  5. En la sección Datos que se van a exportar, use el menú desplegable para seleccionar la base de datos de la que quiera exportar datos.
  6. En la sección Destino, selecciona Buscar para buscar un segmento o una carpeta de Cloud Storage para la exportación.
  7. Haz clic en Exportar para iniciar la exportación.

gcloud

  1. Crea un segmento de Cloud Storage.
  2. Busca la cuenta de servicio de la instancia de Cloud SQL desde la que vas a exportar los datos. Para ello, ejecuta el comando gcloud sql instances describe. Busca el campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.objectAdmin rol de gestión de identidades y accesos a la cuenta de servicio. Para obtener más información sobre cómo configurar permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Exporta la base de datos:
    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \
    --database=DATABASE_NAME
      

    Para obtener información sobre el uso del comando gcloud sql export bak, consulta la página de referencia de comandos.

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.

REST v1

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asigna a tu instancia el legacyBucketWriter rol de gestión de identidades y accesos de tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  3. Exporta tu base de datos:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento 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

    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, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  4. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, elimínalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

REST v1beta4

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asigna a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos de tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  3. Exporta tu base de datos:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento 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

    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, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  4. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

Exportar copias de seguridad diferenciales de bases de datos

Antes de exportar una copia de seguridad diferencial de la base de datos, debes exportar una base diferencial.

Si otros servicios o funciones, como la recuperación a un punto en el tiempo 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, debes volver a activar una exportación de la copia de seguridad completa.

Para entenderlo mejor, veamos el siguiente ejemplo:

  1. Envías una solicitud de copia de seguridad completa a las 7:00.
  2. Habilitas la recuperación a un momento dado a las 9:00. Esto activa una copia de seguridad completa en tu instancia.
  3. Intentas crear una copia de seguridad diferencial a las 17:00. Esta solicitud de exportación falla y muestra un mensaje de error porque la última copia de seguridad completa se activó mediante la recuperación a un momento dado.

Cloud SQL no admite solicitudes de exportación de bases de datos con --differential-base o --bak-type=DIFF en instancias de réplica.

gcloud

  1. Crea un segmento de Cloud Storage.
  2. Busca la cuenta de servicio de la instancia de Cloud SQL desde la que vas a exportar. Para ello, ejecuta el comando gcloud sql instances describe. Busca el campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.objectAdmin rol de gestión de identidades y accesos a la cuenta de servicio. Para obtener más información sobre cómo configurar permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Exporta la base de datos como base diferencial.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --differential-base

    Para obtener información sobre el uso del comando gcloud sql export bak, consulta la página de referencia de comandos.

  5. 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 sobre el uso del comando gcloud sql export bak, consulta la página de referencia de comandos.

  6. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.

REST v1

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asigna a tu instancia el legacyBucketWriter rol de gestión de identidades y accesos de tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  3. Exporta la copia de seguridad completa de tu base de datos como base diferencial.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento de Cloud Storage
    • PATH_TO_BAK_FILE: la ruta 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 servidor, asigna el valor 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  4. Exporta una copia de seguridad diferencial.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_dump_file: ruta al archivo de volcado de SQL
    • database_name_1: nombre de una base de datos de la instancia de Cloud SQL
    • database_name_2: nombre de una base de datos de la instancia de Cloud SQL
    • offload: habilita la exportación sin servidor. Asigna el valor true para usar la opción sin servidor.

    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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, elimínalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

REST v1beta4

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asigna a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos de tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  3. Exporta la copia de seguridad completa de tu base de datos como base diferencial.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia
    • bucket_name: el nombre del segmento 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 servidor, asigna el valor 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  4. Exportar una copia de seguridad diferencial:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia
    • bucket_name: el nombre del segmento 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 las exportaciones sin servidor, asigna el valor 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

Exportar registros de transacciones

Puedes exportar los registros de transacciones de todas las instancias de Cloud SQL para SQL Server que tengan habilitada la recuperación a un momento dado (PITR) y cuyos registros estén almacenados en Cloud Storage.

gcloud

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Busca la cuenta de servicio de la instancia de Cloud SQL desde la que vas a exportar. Para ello, ejecuta el comando gcloud sql instances describe. Busca el campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.Admin rol de gestión de identidades y accesos a la cuenta de servicio. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta el artículo Definir y gestionar políticas de gestión de identidades y accesos en cubos.
  4. 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 de comandos.

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.

REST

  1. Crea un segmento de Cloud Storage.

    Este paso no es obligatorio, pero es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asigna a tu instancia el storage.Admin rol de gestión de identidades y accesos de tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Definir y gestionar políticas de gestión de identidades y accesos en los contenedores.
  3. Exporta los registros de transacciones.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto.
    • INSTANCE_ID: el ID de instancia.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • FOLDER_PATH: la ruta a la carpeta del segmento 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: la fecha y la hora de inicio de los registros de transacciones que se van a exportar.
    • exportLogEndTime: la fecha y la hora de finalización de los registros de transacciones que se van a exportar.

    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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  4. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, elimínalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances.export.

Usar la exportación rayada

Estas son las ventajas de la exportación segmentada:

  • Reducción del tiempo necesario para completar las operaciones
  • Se pueden exportar bases de datos de más de 5 TB

Una posible desventaja de usar la exportación en bandas es que la copia de seguridad, en lugar de constar de un archivo, se divide en un conjunto de archivos. Este conjunto se denomina "conjunto de franjas". Consulta Crear copias de seguridad en un conjunto de medios con franjas (un conjunto de franjas). En Cloud SQL, se exporta a una carpeta vacía de Cloud Storage en lugar de generar un solo archivo. Para obtener más información, consulta Cómo usar la exportación segmentada.

Planificar las operaciones

La exportación segmentada puede mejorar el rendimiento de las exportaciones. Sin embargo, si tu caso práctico requiere un solo archivo de salida o si tu base de datos tiene un tamaño inferior a 5 TB y no es fundamental que el rendimiento sea más rápido, puedes usar una exportación sin franjas.

Si decides usar la exportación segmentada, ten en cuenta el número de segmentos. Puede especificar este valor en su comando de la interfaz de línea de comandos de gcloud o en su llamada a la API REST. Sin embargo, si quieres que haya un número óptimo de franjas para mejorar el rendimiento o no sabes cuántas franjas quieres, omite el número. Se establece automáticamente un número óptimo de franjas.

El número máximo de franjas que admite Cloud SQL para SQL Server es 64.

Cómo usar la exportación rayada

gcloud

  1. Crea un segmento de Cloud Storage.
  2. Busca la cuenta de servicio de la instancia de Cloud SQL desde la que vas a exportar los datos. Para ello, ejecuta el comando gcloud sql instances describe. Busca el campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.objectAdmin rol de gestión de identidades y accesos a la cuenta de servicio. Para obtener más información sobre cómo configurar permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Para exportar la base de datos, especifique el parámetro --striped o un valor para --stripe_count. Si se define un valor para --stripe_count, se da por hecho que se pretende usar el parámetro --striped. Se produce un error si especifica --no-striped pero indica 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 sobre el uso del comando gcloud beta sql export bak, consulta la página de referencia de comandos.

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.

REST v1

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asigna a tu instancia el legacyBucketWriter rol de gestión de identidades y accesos de tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  3. Exporta tu base de datos:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_folder: ruta a la carpeta (en el segmento de Cloud Storage) a la que se exportará el conjunto de franjas.
    • database_name: el nombre de una base de datos de tu instancia de Cloud SQL
    • true | false: asigna el valor true para usar la exportación con franjas. Si especificas true sin especificar un número de franjas, se establecerá automáticamente un número óptimo de franjas.
    • number_of_stripes: número de franjas que se van a usar. Si se especifica, striped se implica como 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_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  4. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, elimínalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

REST v1beta4

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asigna a tu instancia el legacyBucketWriter rol de gestión de identidades y accesos de tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  3. Exporta tu base de datos:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_folder: ruta a la carpeta (en el segmento de Cloud Storage) a la que se exportará el conjunto de franjas.
    • database_name: el nombre de una base de datos de tu instancia de Cloud SQL
    • true | false: asigna el valor true para usar la exportación con franjas. Si especificas true sin especificar un número de franjas, se establecerá automáticamente un número óptimo de franjas.
    • number_of_stripes: número de franjas que se van a usar. Si se especifica, striped se implica como 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_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  4. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, elimínalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

Importar a Cloud SQL para SQL Server

Roles y permisos necesarios para importar datos en Cloud SQL para SQL Server

Para importar datos de Cloud Storage a Cloud SQL, el usuario que inicie la importación debe tener uno de los siguientes roles:

Además, la cuenta de servicio de la instancia de Cloud SQL debe tener uno de los siguientes roles:

  • Rol de gestión de identidades y accesos storage.objectAdmin
  • Un rol personalizado que incluya los siguientes permisos:
    • storage.objects.get
    • storage.objects.list (solo para importaciones rayadas)

Para obtener ayuda con los roles de gestión de identidades y accesos, consulta Gestión de identidades y accesos.

Importar datos de un archivo BAK a Cloud SQL para SQL Server

Para usar la importación rayada, consulta Usar la importación rayada.

Hay varios frameworks de importación disponibles. Por ejemplo, Cloud SQL para SQL Server admite la captura de datos de cambios (CDC) en las siguientes versiones de la base de datos:

  • SQL Server 2017 Standard
  • SQL Server 2017 Enterprise
  • SQL Server 2019 Standard
  • SQL Server 2019 Enterprise
  • SQL Server 2022 Standard
  • SQL Server 2022 Enterprise

Al importar una base de datos con CDC habilitado, se conserva la marca KEEP_CDC.

Si la versión de tu instancia es Microsoft SQL Server Enterprise Edition, puedes importar archivos BAK cifrados.

Las instancias de Microsoft SQL Server Standard Edition también importan archivos BAK cifrados, pero solo a través de la CLI de gcloud.

Las únicas extensiones BAK admitidas son .bak y .bak.gz. Actualmente no se admiten copias de seguridad cifradas con GPG.

Para seguir las instrucciones que se indican a continuación, prepara una base de datos nueva. No crees una base de datos antes de empezar a importar el archivo BAK.

Para importar datos a una instancia de Cloud SQL mediante un archivo BAK, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. Haz clic en Importar.
  4. En el campo Selecciona un archivo para importarlo, introduce la ruta al segmento y al archivo BAK que quieras usar para la importación.

    Puedes importar un archivo comprimido (.gz) o sin comprimir.

  5. En la sección Formato de archivo, selecciona BAK.

  6. En la sección Destino, especifica la base de datos de tu instancia de Cloud SQL en la que quieres importar el archivo BAK.
  7. Para iniciar la importación, haz clic en Importar.

gcloud

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asegúrate de que has configurado los roles y permisos necesarios.
  3. Sube los datos del archivo BAK al segmento.
  4. Describe la instancia a la que vas a importar:
    gcloud sql instances describe INSTANCE_NAME
  5. Copia el campo serviceAccountEmailAddress.
  6. Usa gcloud storage buckets add-iam-policy-binding para conceder el storage.objectViewer rol de gestión de identidades y accesos a la cuenta de servicio del cubo. Para obtener más información sobre cómo configurar permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  7. Importa los datos del archivo:
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME
    Para las importaciones cifradas, usa el siguiente comando:
    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
  8. Si no necesitas conservar los permisos de gestión de identidades y accesos que hayas definido anteriormente, quítalos con gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Importa los datos del archivo:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_bak_file: ruta del archivo BAK
    • database_name: nombre de una base de datos 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, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    Para usar otro usuario en la importación, especifica la propiedad importContext.importUser.

    Para ver la lista completa de parámetros de la solicitud, consulta la página instances:import.
  5. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, quítalos.

REST v1beta4

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Uso de permisos de gestión de identidades y accesos.
  4. Importa los datos del archivo:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_bak_file: ruta del archivo BAK
    • database_name: nombre de una base de datos 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, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    Para usar otro usuario en la importación, especifica la propiedad importContext.importUser.

    Para ver la lista completa de parámetros de la solicitud, consulta la página instances:import.
  5. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, quítalos.

Si se produce un error como ERROR_RDBMS, comprueba que el archivo BAK esté en el segmento y que tengas los permisos correctos en el segmento. Para obtener ayuda sobre cómo configurar el control de acceso en Cloud Storage, consulta el artículo Crear y gestionar listas de control de acceso.

Importar copias de seguridad diferenciales de bases de datos

Antes de importar una copia de seguridad diferencial de una base de datos, debes importar una copia de seguridad completa y tu base de datos debe estar en el estado RESTORING después de la importación de la copia de seguridad completa.

Cloud SQL no admite la importación de copias de seguridad de bases de datos diferenciales en instancias en las que se ha habilitado la recuperación a un momento dado. Esto se debe a que la importación de una copia de seguridad de la base de datos con --no-recovery es un requisito previo para importar copias de seguridad diferenciales de la base de datos. Además, no puedes habilitar la recuperación a un momento dado en una instancia si la base de datos está en el estado RESTORING. Si se produce un error en la importación, haz una de las siguientes acciones para habilitar la recuperación a un momento dado:

  • Ponga online la base de datos que esté en el estado RESTORING mediante la marca --recovery-only .

  • Elimina la base de datos.

Para importar datos a una instancia de Cloud SQL mediante una copia de seguridad diferencial de la base de datos, sigue estos pasos:

gcloud

  1. Crea un segmento 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 te recomendamos que lo hagas para no abrir el acceso a otros datos.

  2. Asegúrate de haber configurado los roles y permisos necesarios.
  3. Sube los datos del archivo BAK al segmento.
  4. Describe la instancia a la que vas a importar:
    gcloud sql instances describe INSTANCE_NAME
  5. Copia el campo serviceAccountEmailAddress.
  6. Usa gcloud storage buckets add-iam-policy-binding para conceder el storage.objectViewer rol de gestión de identidades y accesos a la cuenta de servicio del cubo. Para obtener más información sobre cómo configurar permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  7. 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
  8. Importa una copia de seguridad diferencial de la base de datos.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF --no-recovery
  9. Después de restaurar todos los archivos de copia de seguridad, usa la marca --recovery-only para poner en línea la base de datos importada desde un estado RESTORING. Recomendamos encarecidamente a los usuarios que no utilicen comandos de T-SQL para poner en línea la base de datos importada.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
  10. Si no necesitas conservar los permisos de gestión de identidades y accesos que hayas definido anteriormente, quítalos con gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Importa una copia de seguridad completa con noRecovery.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto.
    • INSTANCE_ID: el ID de instancia.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • PATH_TO_BAK_FILE: la ruta del 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  5. Importa una copia de seguridad diferencial de la base de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia
    • bucket_name: el nombre del segmento de Cloud Storage
    • path_to_bak_file: la ruta 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  6. Después de restaurar todos los archivos de copia de seguridad, usa la marca recoveryOnly para poner en línea la base de datos importada desde un estado RESTORING. Recomendamos encarecidamente a los usuarios que no utilicen comandos de T-SQL para poner en línea la base de datos importada.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento de Cloud Storage
    • PATH_TO_BAK_FILE: la ruta 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  7. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, quítalos.

REST v1beta4

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Uso de permisos de gestión de identidades y accesos.
  4. Importa una copia de seguridad completa con noRecovery.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE_ID: el ID de instancia.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • PATH_TO_BAK_FILE: la ruta del 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  5. Importa una copia de seguridad diferencial de la base de datos.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia
    • bucket_name: el nombre del segmento de Cloud Storage
    • path_to_bak_file: la ruta 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  6. Después de restaurar todos los archivos de copia de seguridad, usa la marca recoveryOnly para poner en línea la base de datos importada desde un estado RESTORING. Recomendamos encarecidamente a los usuarios que no utilicen comandos de T-SQL para poner en línea la base de datos importada.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento de Cloud Storage
    • PATH_TO_BAK_FILE: la ruta 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  7. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, quítalos.

Si se produce un error como ERROR_RDBMS, comprueba que el archivo BAK existe en el segmento y que tienes los permisos correctos en el segmento. Para obtener ayuda sobre cómo configurar el control de acceso en Cloud Storage, consulta el artículo Crear y gestionar listas de control de acceso.

Importar copias de seguridad de registros de transacciones

Un registro de transacciones es un registro de las transacciones de tu base de datos y de las modificaciones que ha realizado cada transacción. Puedes usarlo para restablecer la coherencia de la base de datos en caso de fallo del sistema.

Para importar datos a una instancia de Cloud SQL mediante una copia de seguridad del registro de transacciones, sigue estos pasos:

gcloud

  1. Opcional: Crea un segmento de Cloud Storage para la importación.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
  2. Sube los archivos de copia de seguridad al segmento.
  3. Describe la instancia a la que vas a importar:
    gcloud sql instances describe INSTANCE_NAME
  4. Copia el campo serviceAccountEmailAddress.
  5. Usa gcloud storage buckets add-iam-policy-binding para conceder el storage.objectViewer rol de gestión de identidades y accesos a la cuenta de servicio del cubo. Para obtener más información sobre cómo configurar permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  6. Importa una copia de seguridad completa con el parámetro --no-recovery. Asegúrate de que tu base de datos esté en el estado RESTORING después de importar la copia de seguridad completa.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
  7. Opcional: importa una copia de seguridad diferencial.
  8. Importa una copia de seguridad del registro de transacciones.

    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
    Sustituye lo siguiente:
    • INSTANCE_NAME: el nombre de la instancia.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • BACKUP_FILENAME: el nombre del 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 debe detenerse la importación del registro de transacciones. Este campo es opcional y el valor debe usar el formato RFC 3339.
    • STOP_AT_MARK_NAME: la transacción marcada en la que debe detenerse la importación del registro de transacciones. Este es un campo opcional y puede tener cualquier cadena como 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 del registro.
    Repite este paso hasta que se hayan importado todas las copias de seguridad del registro de transacciones.
  9. Después de restaurar todos los archivos de copia de seguridad, usa la marca --recovery-only para poner en línea la base de datos importada desde un estado RESTORING. Recomendamos encarecidamente a los usuarios que no utilicen comandos de T-SQL para poner en línea la base de datos importada.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
  10. Si no necesitas conservar los permisos de gestión de identidades y accesos que hayas definido anteriormente, quítalos con gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Para ver la lista completa de parámetros de la solicitud, consulta la página instances:import.
  5. Importa una copia de seguridad completa con noRecovery. Asegúrate de que tu base de datos esté en el estado RESTORING después de importar la copia de seguridad completa.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto.
    • INSTANCE_ID: el ID de instancia.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • PATH_TO_BAK_FILE: la ruta del 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  6. Opcional: importa una copia de seguridad diferencial.
  7. Importa una copia de seguridad del registro de transacciones.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto.
    • INSTANCE_ID: el ID de instancia.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • PATH_TO_TLOG_FILE: la ruta 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 debe detenerse la importación del registro de transacciones. Este campo es opcional y el valor debe usar el formato RFC 3339.
    • STOP_AT_MARK_NAME: la transacción marcada en la que debe detenerse la importación del registro de transacciones. Este es un campo opcional y puede tener cualquier cadena como 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 del registro.

    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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

    Repite este paso hasta que se hayan importado todas las copias de seguridad de los registros de transacciones.
  8. Después de restaurar todos los archivos de copia de seguridad, usa la marca recoveryOnly para poner en línea la base de datos importada desde un estado RESTORING. Recomendamos encarecidamente a los usuarios que no utilicen comandos de T-SQL para poner en línea la base de datos importada.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento de Cloud Storage
    • PATH_TO_BAK_FILE: la ruta 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  9. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, quítalos.

REST v1beta4

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Uso de permisos de gestión de identidades y accesos.
  4. Importa una copia de seguridad completa con noRecovery. Asegúrate de que tu base de datos esté en el estado RESTORING después de importar la copia de seguridad completa.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE_ID: el ID de instancia.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • PATH_TO_BAK_FILE: la ruta del 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  5. Opcional: importa una copia de seguridad diferencial.
  6. Importa una copia de seguridad del registro de transacciones. Aquí, stopAt y stopAtMark son campos opcionales.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto.
    • INSTANCE_ID: el ID de instancia.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • PATH_TO_BAK_FILE: la ruta del 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 debe detenerse la importación del registro de transacciones. Este campo es opcional y el valor debe usar el formato RFC 3339.
    • STOP_AT_MARK_NAME: la transacción marcada en la que debe detenerse la importación del registro de transacciones. Este es un campo opcional y puede tener cualquier cadena como 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 del registro.

    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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

    Repite este paso hasta que se hayan importado todas las copias de seguridad del registro de transacciones.
  7. Después de restaurar todos los archivos de copia de seguridad, usa recoveryOnly para poner en línea la base de datos importada.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • INSTANCE_ID: el ID de instancia
    • BUCKET_NAME: el nombre del segmento de Cloud Storage
    • PATH_TO_BAK_FILE: la ruta 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 Content

    Deberías recibir una respuesta JSON similar a la siguiente:

  8. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, quítalos.

Usar la importación rayada

Estas son las ventajas de la importación segmentada:

  • Reducción del tiempo necesario para completar las operaciones
  • Se pueden importar bases de datos de más de 5 TB

Una posible desventaja de usar la importación por franjas es que todos los archivos del conjunto de franjas (en lugar de un solo archivo) deben subirse a la misma carpeta de tu segmento de Cloud Storage antes de realizar la importación.

Planificar las operaciones

En la mayoría de los casos prácticos, la importación segmentada ofrece un mejor rendimiento sin ningún inconveniente. Sin embargo, si no puedes crear una copia de seguridad en un conjunto de bandas desde una instancia determinada, o si tu base de datos tiene menos de 5 TB y no es fundamental que el rendimiento sea más rápido, puedes usar una importación sin bandas.

Cómo usar la importación de franjas

gcloud

  1. Crea un segmento 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 es muy recomendable para que no abras el acceso a ningún otro dato.

  2. Asegúrate de que has configurado los roles y permisos de gestión de identidades y accesos necesarios.
  3. Crea una carpeta en tu contenedor.
  4. Para importar la base de datos, sube los archivos del conjunto de bandas (de la base de datos) a la nueva carpeta. Asegúrate de que todos los archivos se hayan subido a la carpeta y de que esta no contenga archivos adicionales.
  5. Describe la instancia desde la que vas a exportar:
    gcloud sql instances describe INSTANCE_NAME
  6. Copia el campo serviceAccountEmailAddress.
  7. Usa gcloud storage buckets add-iam-policy-binding para conceder el storage.objectViewer rol de gestión de identidades y accesos a la cuenta de servicio del cubo. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Uso de permisos de gestión de identidades y accesos.
  8. Importa los datos de la carpeta. La diferencia con una importación sin franjas es la siguiente: el URI enlaza con el nombre de la carpeta a la que se ha subido el conjunto de franjas, en lugar de a un solo archivo, y se especifica el parámetro --striped:
    gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \
    --database=DATABASE_NAME --striped
  9. Si no necesitas conservar los permisos de gestión de identidades y accesos que hayas definido anteriormente, quítalos con gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Importa los datos del archivo:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_folder: ruta a la carpeta (en el segmento de Cloud Storage) en la que se encuentra el conjunto de franjas
    • database_name: nombre de la base de datos que se va a crear en la instancia de Cloud SQL
    • true | false: se define como true para usar la importación por franjas.

    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, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    Para usar otro usuario en la importación, especifica la propiedad importContext.importUser.

    Para ver la lista completa de parámetros de la solicitud, consulta la página instances:import.
  5. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, quítalos.

REST v1beta4

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Proporciona a tu instancia el storage.objectAdmin rol de gestión de identidades y accesos para tu segmento. Para obtener más información sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.
  4. Importa los datos del archivo:

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • instance-id: el ID de instancia.
    • bucket_name: nombre del segmento de Cloud Storage
    • path_to_folder: ruta a la carpeta (en el segmento de Cloud Storage) en la que se encuentra el conjunto de franjas
    • database_name: nombre de la base de datos que se va a crear en la instancia de Cloud SQL
    • true | false: se define como true para usar la importación por franjas.

    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, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    Para usar otro usuario en la importación, especifica la propiedad importContext.importUser.

    Para ver la lista completa de parámetros de la solicitud, consulta la página instances:import.
  5. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, quítalos.

Si aparece un error como ERROR_RDBMS, comprueba que la tabla exista. Si la tabla existe, confirma que tienes los permisos correctos en el contenedor. Para obtener ayuda sobre cómo configurar el control de acceso en Cloud Storage, consulta el artículo Crear y gestionar listas de control de acceso.

Siguientes pasos