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.
Crea un segmento de Cloud Storage
Puedes crear un segmento de Cloud Storage mediante la consola o con el comando gcloud storage
. Google Cloud
Para crear un segmento de Cloud Storage con el comando gcloud storage
, sigue estos pasos.
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.
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:
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.
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:
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.
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ón TO URL
. Añade el prefijo s3://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:
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.
A continuación, se describen los parámetros de copia de seguridad que se usan en el comando:
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.
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 forma.
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:
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.