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.
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
Para este instructivo, necesitas un proyecto Google Cloud . Puedes crear uno nuevo 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 ejecución.
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.
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.
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.
Seleccionar tu Google Cloud proyecto.
gcloud config set project PROJECT_ID
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.Navega a la configuración de Cloud Storage en la consola. Google Cloud
Selecciona la pestaña Interoperabilidad.
En Claves de acceso para 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 próximo paso.
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 anteriorCREDENTIAL_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.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.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.- 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.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.
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.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:
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:
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ónTO URL
. Antepón el prefijos3://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:
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 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:
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
¿Qué sigue?
-