En este tutorial 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 restaurarla más adelante. La función nativa de copias de seguridad de SQL Server, introducida en SQL Server 2022, ofrece una estrategia sencilla y rentable para la recuperación tras desastres y la migración de datos basadas en la nube.
La función nativa de copia de seguridad de SQL Server utiliza los comandos BACKUP TO URL
y RESTORE FROM URL
, que admiten el almacenamiento de objetos compatible con S3, incluido Cloud Storage. De esta forma, no es necesario usar almacenamiento local intermedio, lo que simplifica el flujo de trabajo de las copias de seguridad y reduce la sobrecarga operativa.
Este tutorial está dirigido a administradores e ingenieros de bases de datos.
Objetivos
En este tutorial se explica cómo completar las siguientes tareas para alcanzar tu objetivo:- Crear un segmento de Cloud Storage
- Configurar un conector de SQL Server
- Crear una copia de seguridad de tu base de datos
- Restaurar la base de datos a partir de la copia de seguridad
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Cuando termines las tareas que se describen en este documento, puedes evitar que se te siga facturando eliminando los recursos que has creado. Para obtener más información, consulta la sección Limpiar.
Antes de empezar
Para seguir este tutorial, necesitas un Google Cloud proyecto. Puedes crear uno o seleccionar un proyecto que ya hayas creado:
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, activate Cloud Shell.
Asegúrate de que Microsoft SQL Server 2022 o una versión posterior esté instalado y en funcionamiento.
Asegúrate de que tanto tu proyecto de Google Cloud como SQL Server tengan los permisos necesarios para realizar tareas de copia de seguridad y restauración.
Asegúrate de que el usuario o la cuenta de servicio asociados a las claves de acceso tengan permisos para crear y ver objetos en el segmento de Cloud Storage.
Asegúrate de que la cuenta de usuario de SQL Server que se usa para crear copias de seguridad tenga los permisos de base de datos de copia de seguridad y de registro de copia de seguridad.
Selecciona tu proyecto de Google Cloud .
gcloud config set project PROJECT_ID
Crea el segmento. Para crear el segmento, ejecuta el comando
gcloud storage buckets create
de la siguiente manera.gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
Haz los cambios siguientes:
BUCKET_NAME
: con un nombre único para tu contenedor.BUCKET_LOCATION
: con la ubicación de tu contenedor.Ve a la configuración de Cloud Storage en la Google Cloud consola.
Selecciona la pestaña Interoperabilidad.
En Claves de acceso de tu cuenta de usuario, haz clic en Crear una clave.
Guarda de forma segura la clave de acceso y el secreto generados. Los necesitarás en el siguiente paso.
CREDENTIAL_NAME
: con un nombre para tus credenciales.ACCESS_KEY
: con la clave de acceso que has creado en la sección anterior.SECRET
: con el secreto que has creado en la sección anterior.CREDENTIAL_NAME
El nombre de la credencial que has creado en el paso 3. Por ejemplo,sql_backup_credentials
.BUCKET_NAME
El nombre del contenedor que has creado en el paso 1.FOLDER_NAME
El nombre de la carpeta en la que quieras almacenar el archivo de copia de seguridad.BACKUP_FILE_NAME
El nombre del archivo de copia de seguridad.FORMAT
: sobrescribe los archivos de copia de seguridad y crea un nuevo conjunto de medios.STATS
: informa del 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 subida.MAXTRANSFERSIZE
: se recomienda para evitar errores de E/S con archivos de copia de seguridad grandes.CREDENTIAL_NAME
El nombre de la credencial que has creado en el paso 3. Por ejemplo,sql_backup_credentials
.BUCKET_NAME
El nombre del contenedor que has creado en el paso 1.FOLDER_NAME
El nombre de la carpeta en la que quieras almacenar el archivo de copia de seguridad.BACKUP_FILE_NAME
El nombre del archivo de copia de seguridad.- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.
Crea un segmento de Cloud Storage
Puedes crear un segmento de Cloud Storage mediante la Google Cloud consola o el comando
gcloud storage
.Para crear un segmento de Cloud Storage con el comando
gcloud storage
, sigue estos pasos.Configurar la interoperabilidad de S3 y crear una clave de acceso
Para permitir que SQL Server se comunique con Cloud Storage mediante el protocolo S3, debes habilitar la interoperabilidad y generar una clave de acceso siguiendo estos pasos:
En los entornos de producción, te recomendamos que uses una clave de código de autenticación de mensajes basado en hash (HMAC) de cuenta de servicio para mejorar la seguridad y la gestión.
Añadir credenciales a SQL Server
Para permitir que SQL Server se autentique con tu segmento de Cloud Storage, debes crear un objeto de credencial en SQL Server para almacenar la clave de acceso y el secreto de Cloud Storage. Para ello, ejecuta el siguiente comando de T-SQL en SQL Server Management Studio (SSMS).
CREATE CREDENTIAL CREDENTIAL_NAME WITH IDENTITY = 'S3 Access Key', SECRET = 'ACCESS_KEY:SECRET';
Haz los cambios siguientes:
IDENTITY = 'S3 Access Key'
es fundamental, ya que indica a SQL Server que use el nuevo conector de S3. El secreto debe tener el formato de la clave de acceso, seguido de dos puntos y, a continuación, la clave secreta.Ejemplo:
CREATE CREDENTIAL sql_backup_credentials WITH IDENTITY = 'S3 Access Key', SECRET = 'GOOGGE3SVF7OQE5JRMLQ7KWB:b31Pl8Tx1ARJfdGOsbgMFQNbk3nPdlT2UCYzs1iC';
Crear copias de seguridad de tus datos en Cloud Storage
Una vez que tengas las credenciales, podrás crear una copia de seguridad de tu base de datos directamente en el segmento de Cloud Storage mediante el comando
BACKUP DATABASE
con la opciónTO URL
. Añade el prefijos3://storage.googleapis.com
a la URL para usar el conector de S3, tal como se indica 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;
Haz los cambios siguientes:
A continuación, se describen los parámetros de copia de seguridad que se usan en el comando:
Para obtener más información, consulta Copia de seguridad de SQL Server en una URL de 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;
Restaurar datos de Cloud Storage
Puedes restaurar tu base de datos directamente desde un archivo de copia de seguridad almacenado en Cloud Storage mediante el comando
RESTORE DATABASE
, tal como se indica a continuación.RESTORE DATABASE DATABASE_NAME FROM URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak' WITH CREDENTIAL = 'CREDENTIAL_NAME';
Haz los cambios siguientes:
Limpieza
Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en este tutorial, sigue estas instrucciones:
Eliminar el proyecto
Siguientes pasos
-