Importar y exportar a través archivos BAK y archivos de registro de transacciones

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:

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

  • El rol storage.objectAdmin de Identity and Access Management (IAM)
  • 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)

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

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
  3. Haz clic en Exportar (Export).
  4. En la sección Formato de archivo, haz clic en BAK.
  5. En la sección Datos para exportar, usa el menú desplegable para seleccionar la base de datos desde la que deseas exportar.
  6. En la sección Destino, selecciona Explorar para buscar un bucket de Cloud Storage o una carpeta para tu exportación.
  7. Haz clic en Exportar para comenzar la exportación.

gcloud

  1. Crea un bucket de Cloud Storage.
  2. 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 campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gsutil iam para otorgar el storage.objectAdmin rol de IAM 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.
  4. 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.

  5. Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.

REST v1

  1. Crea un bucket de Cloud Storage para la exportación.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. 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.
  3. 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 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
        }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
Para obtener una lista completa de los parámetros para esta solicitud, consulta la página instances:export.

REST v1beta4

  1. Crea un bucket de Cloud Storage para la exportación.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. 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.
  3. 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 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/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
        }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
Para obtener una lista completa de los parámetros para esta solicitud, consulta la página Instances:export.

Exporta copias de seguridad de bases de datos diferenciales

Antes de exportar una copia de seguridad de la 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 copia de seguridad completa y la exportación de copia de seguridad diferencial, debes activar una exportación de copia de seguridad completa.

Para comprenderlo mejor, considera el siguiente ejemplo:

  1. Envías una solicitud de copia de seguridad completa a las 7:00 a.m.
  2. Habilitas la recuperación de un momento determinado a las 9:00 a.m. Esto activa una copia de seguridad completa en la instancia.
  3. 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

  1. Crea un bucket de Cloud Storage.
  2. 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 campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gsutil iam para otorgar el storage.objectAdmin rol de IAM 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.
  4. 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.

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

  6. Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.

REST v1

  1. Crea un bucket de Cloud Storage para la exportación.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. 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.
  3. Exporta la copia de seguridad completa de tu 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/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": {
            "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 que se muestra a continuación:

  4. 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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  5. Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
Para obtener una lista completa de los parámetros para esta solicitud, consulta la página instances:export.

REST v1beta4

  1. Crea un bucket de Cloud Storage para la exportación.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. 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.
  3. Exporta la copia de seguridad completa de tu 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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. 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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  5. Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.
Para obtener una lista completa de los parámetros para esta solicitud, consulta la página instances:export.

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

  1. Crea un bucket de Cloud Storage.
  2. 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 campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gsutil iam para otorgar el rol de IAM storage.objectAdmin a la cuenta de servicio. Para obtener más información sobre la configuración de los permisos de IAM, consulta Usa los permisos de IAM.
  4. 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.

  5. Si no necesitas retener el rol de IAM que configuraste antes, revócalo ahora.

REST v1

  1. Crea un bucket de Cloud Storage para la exportación.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. 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.
  3. 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 especificas true 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 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, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
Para obtener una lista completa de los parámetros para esta solicitud, consulta la página instances:export.

REST v1beta4

  1. Crea un bucket de Cloud Storage para la exportación.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.

  2. 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.
  3. 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 especificas true 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 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, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Si no necesitas conservar el rol de IAM que configuraste, quítalo ahora.
Para obtener una lista completa de los parámetros para esta solicitud, consulta la página Instances:export.

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:

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:

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
  3. Haga clic en Import.
  4. En la sección Elige el archivo del cual deseas importar datos, 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.

  5. En la sección Formato, selecciona BAK.
  6. En Base de datos, especifica la base de datos de tu instancia de Cloud SQL en la que deseas importar el archivo BAK.
  7. Haz clic en Importar para comenzar la importación.

gcloud

  1. Crea un bucket de Cloud Storage para la importación.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. Asegúrate de haber configurado los roles y los permisos requeridos.
  3. Sube los datos del archivo BAK al bucket.
  4. Describe la instancia hacia la cual estás importando:
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copia el campo serviceAccountEmailAddress.
  6. Usa gsutil iam para otorgar el rol de IAM storage.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.
  7. Importa los datos del archivo:
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME
    
    Para las importaciones encriptadas, 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 IAM que configuraste antes, quítalos a través de gsutil iam.

REST v1

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. 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.
  4. 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 importContext.importUser.

    Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.
  5. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.

REST v1beta4

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. 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.
  4. 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 importContext.importUser.

    Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.
  5. 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 de bases de datos diferenciales

Antes de importar una copia de seguridad de la base de datos diferencial, necesitas 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 una base de datos con --no-recovery es un requisito para importar copias de seguridad de bases de datos diferenciales. 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

  1. Crea un bucket de Cloud Storage para la importación.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero te recomendamos que lo realices para no abrir el acceso a ningún otro dato.

  2. Asegúrate de haber configurado los roles y los permisos requeridos.
  3. Sube los datos del archivo BAK al bucket.
  4. Describe la instancia hacia la cual estás importando:
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copia el campo serviceAccountEmailAddress.
  6. Usa gsutil iam para otorgar el rol de IAM storage.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.
  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 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
    
  9. Usa la marca --recovery-only para poner en línea la base de datos importada. Este paso es opcional y debes realizarlo solo si tu base de datos está en el estado RESTORING.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
    
  10. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos a través de gsutil iam.

REST v1

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. 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.
  4. 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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  5. 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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  6. Usa recoveryOnly para poner la base de datos importada en línea. Este paso es opcional y debes realizarlo solo si tu base de datos está en el estado RESTORING.

    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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  7. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.

REST v1beta4

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. 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.
  4. 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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  5. 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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  6. Usa recoveryOnly para poner la base de datos importada en línea. Este paso es opcional y debes realizarlo solo si tu base de datos está en el estado RESTORING.

    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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  7. 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 de registros 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 usarla para restablecer la coherencia de la base de datos en caso de 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

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

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
  2. Sube los archivos de copia de seguridad al bucket.
  3. Describe la instancia hacia la cual estás importando:
    gcloud sql instances describe INSTANCE_NAME
    
  4. Copia el campo serviceAccountEmailAddress.
  5. Usa gsutil iam para otorgar el rol de IAM storage.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.
  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 la importación completa de la copia de seguridad.

    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 de 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
    
    Reemplaza lo siguiente:
    • INSTANCE_NAME: 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: Es 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 la secuencia de registro determinado.
    Repite este paso hasta que se importen todas las copias de seguridad del registro de transacciones.
  9. Opcional: usa la marca --recovery-only para poner la base de datos importada en línea. Realiza este paso solo si la base de datos está en estado RESTORING.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
    
  10. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos a través de gsutil iam.

REST v1

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. 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.
  4. Si quieres obtener una lista completa de parámetros para esta 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 la importación completa de la copia de seguridad.

    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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  6. Opcional: Importa una copia de seguridad diferencial.
  7. Importa una copia de seguridad de 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: Es 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 la 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 Content

    Deberí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.
  8. Opcional: usa recoveryOnly para poner la base de datos importada en línea. Realiza este paso solo si la base de datos está en estado RESTORING.

    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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  9. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.

REST v1beta4

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. 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.
  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 la importación completa de la copia de seguridad.

    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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  5. Opcional: Importa una copia de seguridad diferencial.
  6. Importa una copia de seguridad de registro de transacciones. Aquí, stopAtMark y stopAt 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: Es 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 la 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 Content

    Deberí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.
  7. Opcional: usa recoveryOnly para poner la base de datos importada en línea. Realiza este paso solo si la base de datos está en estado RESTORING.

    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 Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  8. 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

  1. Crea un bucket de Cloud Storage para la importación.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. Asegúrate de haber configurado los permisos y los roles de IAM necesarios.
  3. Crea una carpeta nueva en el bucket.
  4. 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.
  5. Describe la instancia desde la que exportas:
    gcloud sql instances describe INSTANCE_NAME
    
  6. Copia el campo serviceAccountEmailAddress.
  7. Usa gsutil iam para otorgar el rol de IAM storage.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.
  8. 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
    
  9. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos a través de gsutil iam.

REST v1

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. 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.
  4. 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 importContext.importUser.

    Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.
  5. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos.

REST v1beta4

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. 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.
  4. 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 importContext.importUser.

    Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.
  5. 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