Crea copias de seguridad de las bases de datos de SQL Server en un bucket de Cloud Storage


En este instructivo, se describe cómo crear una copia de seguridad de una base de datos de Microsoft SQL Server 2022 directamente en un bucket de Cloud Storage y restablecerla más adelante. La función nativa de copias de seguridad de SQL Server, que se introdujo en SQL Server 2022, ofrece una estrategia fluida y rentable para la recuperación ante desastres y la migración de datos basadas en la nube.

La función nativa de copias de seguridad de SQL Server aprovecha los comandos BACKUP TO URL y RESTORE FROM URL que admiten el almacenamiento de objetos compatible con S3, incluido Cloud Storage. Esto elimina la necesidad de almacenamiento local intermedio, lo que simplifica el flujo de trabajo de la copia de seguridad y reduce la sobrecarga operativa.

Este instructivo está dirigido a ingenieros y administradores de bases de datos.

Objetivos

En este instructivo, se muestra cómo completar las siguientes tareas para alcanzar tu objetivo:

  • Cree un nuevo bucket de Cloud Storage
  • Configura un conector de SQL Server
  • Crea una copia de seguridad de tu base de datos
  • Restablece tu base de datos a partir de la copia de seguridad

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.

Es posible que los usuarios de Google Cloud nuevos cumplan con los requisitos para acceder a una prueba gratuita.

Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.

Antes de comenzar

  1. Para este instructivo, necesitas un proyecto Google Cloud . Puedes crear uno nuevo o seleccionar un proyecto que ya hayas creado:

    1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    2. Verify that billing is enabled for your Google Cloud project.

    3. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

    4. Asegúrate de que Microsoft SQL Server 2022 o una versión posterior esté instalado y en ejecución.

    5. Asegúrate de que tu proyecto de Google Cloud y SQL Server tengan los permisos necesarios para realizar tareas de copia de seguridad y restauración.

    6. Asegúrate de que la cuenta de usuario o de servicio asociada con las claves de acceso tenga permisos para crear y ver objetos en el bucket de Cloud Storage.

    7. Asegúrate de que la cuenta de usuario de SQL Server que se usa para realizar la copia de seguridad tenga permisos de copia de seguridad de la base de datos y del registro.

    8. Cree un bucket de Cloud Storage

      Puedes crear un bucket de Cloud Storage con la consola de Google Cloud o con el comando de gcloud storage.

      Para crear un bucket de Cloud Storage con el comando gcloud storage, sigue estos pasos.

      1. Seleccionar tu Google Cloud proyecto.

        gcloud config set project PROJECT_ID
        
      2. Crea un bucket. Para crear el bucket, ejecuta el comando gcloud storage buckets create de la siguiente manera.

          gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
        

        Reemplaza lo siguiente:

      • BUCKET_NAME: con un nombre único para tu bucket.
      • BUCKET_LOCATION: con la ubicación de tu bucket.

      Configura la interoperabilidad de S3 y crea una clave de acceso

      Para permitir que SQL Server se comunique con Cloud Storage a través del protocolo S3, debes habilitar la interoperabilidad y generar una clave de acceso. Para ello, sigue estos pasos:

      1. Navega a la configuración de Cloud Storage en la consola. Google Cloud

        Ir a la configuración de Cloud Storage

      2. Selecciona la pestaña Interoperabilidad.

      3. En Claves de acceso para tu cuenta de usuario, haz clic en Crear una clave.

        Claves de acceso a buckets

      4. Guarda de forma segura la clave de acceso y el secreto generados. Los necesitarás en el próximo paso.

      Para los entornos de producción, te recomendamos que uses una clave de código de autenticación de mensajes basada en hash (HMAC) de cuenta de servicio para mejorar la seguridad y la administración.

      Agrega credenciales a SQL Server

      Para permitir que SQL Server se autentique con tu bucket de Cloud Storage, debes crear un objeto de credencial dentro de SQL Server para almacenar la clave de acceso y el secreto de Cloud Storage. Para ello, ejecuta el siguiente comando de Transact-SQL en SQL Server Management Studio (SSMS).

      CREATE CREDENTIAL CREDENTIAL_NAME
      WITH
          IDENTITY = 'S3 Access Key',
          SECRET = 'ACCESS_KEY:SECRET';
      

      Reemplaza lo siguiente:

      • CREDENTIAL_NAME: con un nombre para tus credenciales.
      • ACCESS_KEY: Con la clave de acceso que creaste en la sección anterior.
      • SECRET: Con el secreto que creaste en la sección anterior

      IDENTITY = 'S3 Access Key' es fundamental, ya que le indica a SQL Server que use el nuevo conector S3. El secreto debe tener el formato de la clave de acceso, seguido de dos puntos y, luego, la clave secreta.

      Ejemplo:

      CREATE CREDENTIAL sql_backup_credentials
      WITH
          IDENTITY = 'S3 Access Key',
          SECRET = 'GOOGGE3SVF7OQE5JRMLQ7KWB:b31Pl8Tx1ARJfdGOsbgMFQNbk3nPdlT2UCYzs1iC';
      

      Crea una copia de seguridad de tus datos en Cloud Storage

      Con la credencial en su lugar, ahora puedes crear una copia de seguridad de tu base de datos directamente en el bucket de Cloud Storage con el comando BACKUP DATABASE y la opción TO URL. Antepón el prefijo s3://storage.googleapis.com a la URL para usar el conector de S3, como se muestra a continuación.

      BACKUP DATABASE DATABASE_NAME
      TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
      WITH
          CREDENTIAL = 'CREDENTIAL_NAME',
          FORMAT,
          STATS = 10,
          MAXTRANSFERSIZE = 10485760,
          COMPRESSION;
      

      Reemplaza lo siguiente:

      • CREDENTIAL_NAME Es el nombre de la credencial que creaste en el paso 3. Por ejemplo: sql_backup_credentials.
      • BUCKET_NAME Es el nombre del bucket que creaste en el paso 1.
      • FOLDER_NAME: Nombre de la carpeta en la que deseas almacenar el archivo de copia de seguridad.
      • BACKUP_FILE_NAME El nombre del archivo de copia de seguridad.

      A continuación, se describen los parámetros de copia de seguridad que se usan en el comando:

      • FORMAT: Reemplaza los archivos de copia de seguridad existentes y crea un nuevo conjunto de medios.
      • STATS: Informa el progreso de la copia de seguridad.
      • COMPRESSION: Comprime la copia de seguridad, lo que puede reducir el tamaño del archivo y el tiempo de carga.
      • MAXTRANSFERSIZE: Se recomienda para evitar errores de E/S con archivos de copia de seguridad grandes.

      Para obtener más información, consulta Copia de seguridad de SQL Server en URL para almacenamiento de objetos compatible con S3.

      En el caso de bases de datos muy grandes, puedes dividir la copia de seguridad en varios archivos de la siguiente manera.

      BACKUP DATABASE DATABASE_NAME
      TO
          URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_0.bak',
          URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_1.bak'
          -- ... more files
      WITH
          CREDENTIAL = 'CREDENTIAL_NAME',
          FORMAT,
          STATS = 10,
          MAXTRANSFERSIZE = 10485760,
          COMPRESSION;
      

      Restablece tus datos desde Cloud Storage

      Puedes restablecer tu base de datos directamente desde un archivo de copia de seguridad almacenado en Cloud Storage con el comando RESTORE DATABASE de la siguiente manera.

      RESTORE DATABASE DATABASE_NAME
      FROM URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
      WITH
          CREDENTIAL = 'CREDENTIAL_NAME';
      

      Reemplaza lo siguiente:

      • CREDENTIAL_NAME Es el nombre de la credencial que creaste en el paso 3. Por ejemplo: sql_backup_credentials.
      • BUCKET_NAME Es el nombre del bucket que creaste en el paso 1.
      • FOLDER_NAME: Nombre de la carpeta en la que deseas almacenar el archivo de copia de seguridad.
      • BACKUP_FILE_NAME El nombre del archivo de copia de seguridad.

      Limpia

      Para evitar que se generen cargos en tu Google Cloud cuenta por los recursos que usaste en este instructivo, sigue estos pasos:

      Borra el proyecto

      1. In the Google Cloud console, go to the Manage resources page.

        Go to Manage resources

      2. In the project list, select the project that you want to delete, and then click Delete.
      3. In the dialog, type the project ID, and then click Shut down to delete the project.

      ¿Qué sigue?

      • Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.